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

Manim v0.18.0中TexturedSurface未定义错误解决咨询

解决Manim v0.18.0中创建带纹理3D地球模型的报错问题

问题根源

Manim v0.18.0已移除旧版本中的TexturedMobject和TexturedSurface类,相关纹理渲染功能已整合到基础3D几何体的初始化参数中,这就是你找不到纹理相关文档、运行时出现name 'TexturedSurface' is not defined错误的原因。

正确实现代码

直接通过Sphere类的texture参数传入纹理资源(支持网络URL或本地文件路径),结合ThreeDScene实现3D场景展示:

from manim import *

class TexturedEarth(ThreeDScene):
    def construct(self):
        # 地球纹理资源(可替换为本地图片路径)
        earth_texture = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Whole_world_-_land_and_oceans.jpg/1280px-Whole_world_-_land_and_oceans.jpg"
        
        # 创建带纹理的球体
        earth = Sphere(radius=3, texture=earth_texture)
        
        self.add(earth)
        
        # 调整3D相机视角,确保地球可见
        self.set_camera_orientation(phi=75 * DEGREES, theta=-45 * DEGREES)
        # 可选:添加自动旋转效果
        self.begin_ambient_camera_rotation(rate=0.1)
        self.wait(5)

核心要点

  • 使用ThreeDScene替代普通Scene,它默认配置3D相机,无需手动设置camera_class。
  • Sphere的texture参数直接接收图片路径,网络URL需确保可正常访问,本地文件可使用相对或绝对路径。
  • 调用set_camera_orientation调整初始视角,避免因默认视角导致球体不可见;begin_ambient_camera_rotation可添加自动旋转,提升展示效果。

额外提示

  • 本地纹理图片建议放在项目根目录,直接使用文件名作为路径即可(如texture="earth_map.jpg")。
  • 若纹理显示拉伸或异常,检查图片分辨率是否适配球体尺寸,优先选择等比例的球面纹理图。

内容的提问来源于stack exchange,提问作者Kate Adams

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 16:23:28