Python 如何获取opengl三维模型剖面图?
我已经加载了一个obj文件来使用pyopengl和pygame渲染我的opengl模型。三维模型显示成功 下面是我用obj文件渲染的3D模型,现在我通过y轴将模型切割成十块,我的问题是如何在每一块中获得剖面图 我对openGL真的很陌生,有什么方法可以做到这一点吗Python 如何获取opengl三维模型剖面图?,python,opengl,pyopengl,Python,Opengl,Pyopengl,我已经加载了一个obj文件来使用pyopengl和pygame渲染我的opengl模型。三维模型显示成功 下面是我用obj文件渲染的3D模型,现在我通过y轴将模型切割成十块,我的问题是如何在每一块中获得剖面图 我对openGL真的很陌生,有什么方法可以做到这一点吗 您需要分割对象,然后旋转碎片,以便从侧面看到它们。(或者移动相机。这两个想法是等价的。但是如果你是从头开始编写的,你就没有真正的“相机”的抽象)。在这一点上,你可以渲染所有的切片 这在原始OpenGL和python中很复杂,本质上是因
您需要分割对象,然后旋转碎片,以便从侧面看到它们。(或者移动相机。这两个想法是等价的。但是如果你是从头开始编写的,你就没有真正的“相机”的抽象)。在这一点上,你可以渲染所有的切片 这在原始OpenGL和python中很复杂,本质上是因为OpenGL中的对象不是实体。我强烈建议您在建模程序中提前将对象切片。如果您需要通过脚本驱动这些操作,可以查看Blender的python脚本系统。 现在,解释一下原因: 当你切一个真实的桔子时,你希望得到横截面。你希望能看到里面的果肉,还有那些三角形的碎片 标准多边形三维模型中没有任何内容 此外,由于真正的橘子皮有厚度,因此可以从侧面观察橘子皮。相比之下,三维模型的一个面是无限薄的,因此当您从侧面查看它时,您将什么也看不到。因此,如果要渲染这个简单模型的切片,从侧面看,每个渲染都将是完全空白的 (好的,末端的部分会有“盖子”,就像面包的末端一样,但中间部分会完全看不见。) 如果没有一个编程库,它有一个切割是什么的概念,这将变得非常复杂,非常快。仅仅削减开支是不够的。如果要查看横截面,则必须密封通过切片到原始形状创建的孔。然而,填充横截面必须是明智的,否则你会得到各种奇怪的着色效果(仅供参考:这是由n-gons引起的,如果你想进一步了解这些问题的话) 要返回到原始语句,请执行以下操作: 建模程序旨在解决此类问题,因此我建议您尽可能利用它们的功能。或者至少,您可以检查Blender是如何实现此功能的,因为它是开源的 在Blender中,您可以使用刀具*进行这些切割,然后使用“生成面”命令填充孔(只需点击F)。非常简单,即使对那些不擅长艺术的人来说也是如此。我鼓励你在做太多3D编程之前先学习一点3D建模。这对我个人帮助很大
*(循环切割工具也可以完成这项工作,但如果不了解模型的拓扑结构,就很难判断。您可能现在不想了解拓扑结构,所以只需使用刀子即可)有两种方法可以做到这一点,都使用剪裁来“切割”对象
glClipPlane()
,并且需要使用glEnable
和参数GL\u CLIP\u PLANE0
,GL\u CLIP\u PLANE1
GL\u MAX\u clip\u planes
调用glGetIntegerv
来检查GPU上存在多少个用户剪辑平面,但所有GPU至少支持6个
gl\u ClipDistance[]