您需要拆分对象,然后旋转这些块,以便从侧面看到它们。(或移动摄像机。这两个想法是相同的。但是如果你从头开始编码,你就没有真正的“相机”的抽象了。)在那一点上,你可以只渲染所有的切片。在
这在原始OpenGL和python中很复杂,本质上是因为OpenGL中的对象不是实心的。我强烈建议您在建模程序中提前将对象切分为多个部分。如果您需要用脚本来驱动这些操作,可以看看Blender的python脚本系统。
现在,解释一下原因:
当你切一个真实的橘子,你期望得到横截面。你希望能看到里面的果肉,还有那些三角形的碎片。在
标准多边形三维模型中没有任何内容。在
此外,由于真正的橙皮有厚度,所以可以从侧面观察果皮。相比之下,三维模型的一个面是无限薄的,所以当你从侧面观察时,你将什么也看不见。因此,如果从侧面渲染这个简单模型的切片,每个渲染都将是完全空白的。在
(好吧,末端的部分会有“盖子”,就像面包的末端一样,但是中间部分是完全看不见的。)
如果没有一个对切割有概念的编程库,这将变得非常复杂,非常快。仅仅削减是不够的。如果你想把原来的形状切成片,你就必须看到。然而,填充横截面必须智能地完成,否则你会得到各种各样奇怪的阴影效果(仅供参考:这是由n个边角造成的,如果你想去发现更多关于这些问题的信息)。在
要返回原始语句:
建模程序是为解决这些问题而设计的,所以我建议您尽可能利用它们的能力。或者至少,你可以检查Blender是如何实现这个功能的,因为它是开源的。在
在Blender中,你可以用刀子工具*,然后用“makeface”命令来填满这些洞(只需点击F)。很简单,即使对那些不擅长艺术的人来说也是如此。我鼓励你在做太多的3D编程之前先学一点3D建模。这对我个人帮助很大。在
*(loop-cut工具也可以做到这一点,但是如果不了解模型的拓扑结构,就很难判断。你现在可能不想了解拓扑结构,所以就用刀吧)