You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Vispy实现带JPG格式地球纹理的3D地球场景

如何使用Vispy实现带JPG格式地球纹理的3D地球场景

嘿,刚上手Vispy就想搞3D地球是吧?我之前也折腾过这个,给你一步步捋清楚怎么把你的JPG纹理贴到球体上,保证你能快速跑起来!

核心思路

其实就是两步:创建带UV坐标的球体网格 + 把你的JPG纹理映射到这个网格上,Vispy的可视化模块已经帮我们封装了大部分复杂的底层逻辑,我们只需要把这两部分串起来就行。

完整代码示例

直接上可运行的代码,你替换自己的地球JPG路径就能用:

from vispy import app, scene
from vispy.io import imread
from vispy.geometry import create_sphere

# 1. 加载你的地球JPG纹理
# 这里替换成你自己的图片路径哦
earth_texture = imread("your_earth_image.jpg")

# 2. 创建画布和3D视图
canvas = scene.SceneCanvas(keys='interactive', size=(800, 600), show=True)
view = canvas.central_widget.add_view()
view.camera = 'turntable'  # 用转盘相机,方便旋转查看地球
view.camera.fov = 45  # 调整视角大小,让地球显示更合适

# 3. 创建带UV坐标的球体网格
# radius是地球半径,subdivisions控制球体精细度,数值越高越圆但渲染越慢
sphere_mesh = create_sphere(radius=1, subdivisions=64)

# 4. 创建带纹理的网格可视化对象
earth = scene.visuals.Mesh(
    meshdata=sphere_mesh,
    texture=earth_texture,  # 绑定我们加载的JPG纹理
    shader='texture'  # 使用纹理着色器,让纹理正确显示
)

# 5. 把地球添加到视图里
view.add(earth)

# 启动应用
app.run()

关键细节解释

  • 纹理加载:用vispy.io.imread直接加载JPG就行,它会自动把图片转换成Vispy能识别的纹理格式,不用额外处理。
  • 球体UV坐标:create_sphere函数默认会生成UV纹理坐标,这是让纹理正确贴合球体的关键——你不用自己手动计算每个点的纹理位置,Vispy已经帮你做好了。
  • 相机控制:用turntable相机可以按住鼠标左键旋转地球,滚轮缩放,右键平移,完全满足查看3D地球的需求。
  • 着色器选择:这里用'texture'着色器是最基础的纹理显示方式,如果之后想加光照效果,可以换成'pbr'(基于物理的渲染),会让地球看起来更真实。

常见问题排查

  • 如果纹理显示不正常(比如颠倒、拉伸),可以检查一下你的JPG图片的方向,或者在加载后手动调整纹理的翻转:earth_texture = earth_texture[:, ::-1](左右翻转)或者earth_texture = earth_texture[::-1, :](上下翻转)。
  • 如果运行报错说找不到图片,绝对路径和相对路径都试试,确保路径里没有中文或者特殊字符。

放心跑代码吧,替换好图片路径就能看到你的3D地球啦!

备注:内容来源于stack exchange,提问作者Zhug Grox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 08:04:39