PyOpenGL 相机系统
PyOpenGL camera system
我对 PyOpenGL 相机的工作原理或实现方式感到困惑。我是想围绕相机旋转和移动整个世界还是有不同的方式?
我找不到任何可以帮助我的东西,我不知道如何将 C 翻译成 python。
我只需要一种转换相机的方法,可以帮助我了解它的工作原理。
坦率地说:在 OpenGL 中没有 "camera" 这样的东西(在 DirectX、Vulkan 或任何遗留的 3D 图形 API 中都没有)。相机的效果被理解为有助于几何体在视口体积内的最终放置的一些参数。
你越早明白当前 GPU 所做的就是提供大量加速的计算资源来设置 2D 网格中的像素值,其中更改的像素区域仅仅是 2D 平面上的点、线或三角形将它们从任意尺寸的抽象 space 投射到其上越好。
您甚至没有绕着相机环游世界。设置转换实际上是设置 "the world" 将首先出现的阶段。 "camera" 的任何概念都是由更高级别的框架创建的抽象,例如第三方 3D 引擎或您自己的创建。
因此,与其考虑限制您思维的相机,不如这样考虑:
我必须进行什么样的转换才能给一个叫做"position"的数字元组赋予实际意义,让这个位置出现在某个地方可见屏幕?
你真的应该这样想,因为这就是实际发生的事情。
我对 PyOpenGL 相机的工作原理或实现方式感到困惑。我是想围绕相机旋转和移动整个世界还是有不同的方式?
我找不到任何可以帮助我的东西,我不知道如何将 C 翻译成 python。
我只需要一种转换相机的方法,可以帮助我了解它的工作原理。
坦率地说:在 OpenGL 中没有 "camera" 这样的东西(在 DirectX、Vulkan 或任何遗留的 3D 图形 API 中都没有)。相机的效果被理解为有助于几何体在视口体积内的最终放置的一些参数。
你越早明白当前 GPU 所做的就是提供大量加速的计算资源来设置 2D 网格中的像素值,其中更改的像素区域仅仅是 2D 平面上的点、线或三角形将它们从任意尺寸的抽象 space 投射到其上越好。
您甚至没有绕着相机环游世界。设置转换实际上是设置 "the world" 将首先出现的阶段。 "camera" 的任何概念都是由更高级别的框架创建的抽象,例如第三方 3D 引擎或您自己的创建。
因此,与其考虑限制您思维的相机,不如这样考虑:
我必须进行什么样的转换才能给一个叫做"position"的数字元组赋予实际意义,让这个位置出现在某个地方可见屏幕?
你真的应该这样想,因为这就是实际发生的事情。