微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我是 Python 的新手我面临以下错误: NameError: name 'ObjFile' is not defined

如何解决我是 Python 的新手我面临以下错误: NameError: name 'ObjFile' is not defined

from objloader import ObjFile


class Renderer(Widget):
    def __init__(self,**kwargs):
        self.canvas = RenderContext(compute_normal_mat=True)
        self.canvas.shader.source = resource_find('simple.glsl')
        self.scene = ObjFile(resource_find("monkey.obj"))
        super(Renderer,self).__init__(**kwargs)
        with self.canvas:
            self.cb = Callback(self.setup_gl_context)
            Pushmatrix()
            self.setup_scene()
            PopMatrix()
            self.cb = Callback(self.reset_gl_context)
        Clock.schedule_interval(self.update_glsl,1 / 60.)

    def setup_gl_context(self,*args):
        glEnable(GL_DEPTH_TEST)

    def reset_gl_context(self,*args):
        gldisable(GL_DEPTH_TEST)

    def update_glsl(self,delta):
        asp = self.width / float(self.height)
        proj = Matrix().view_clip(-asp,asp,-1,1,100,1)
        self.canvas['projection_mat'] = proj
        self.canvas['diffuse_light'] = (1.0,1.0,0.8)
        self.canvas['ambient_light'] = (0.1,0.1,0.1)
        self.rot.angle += delta * 100

    def setup_scene(self):
        Color(1,1)
        Pushmatrix()
        Translate(0,-3)
        self.rot = Rotate(1,0)
        m = list(self.scene.objects.values())[0]
        UpdatenormalMatrix()
        self.mesh = Mesh(
            vertices=m.vertices,indices=m.indices,fmt=m.vertex_format,mode='triangles',)
        PopMatrix()


class RendererApp(App):
    def build(self):
        return Renderer()


if __name__ == "__main__":
    RendererApp().run()

解决方法

您的代码是从 kivy 3dRendereing 示例中复制的,但您没有复制整个示例。该代码需要 objloader.py 文件(以及 monkey.objsimple.glsl)。将所有这些文件复制到同一个文件夹中,然后代码应该可以工作了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?