我正在寻找一种从3D场景渲染高度图的方法。该场景可能包含一个地形,该地形又是从另一个高度图生成的,但也将包含规则的3D对象。

可以说,生成的高度图应指示“列”中的最高点高度图中每个像素表示的3D场景。

这不必是快速/实时操作,并且使用哪种语言或库也没关系,尽管我更喜欢使用Python(也许是Panda3D吗?)。另外,我希望能够从命令行工具无头运行它,而无需实际的屏幕渲染。

这是已建立/规范方法的常用操作是通过Panda3D之类的库,还是通过更直接/更底层地使用表示3D场景的数据结构?

我应该补充一点,我对编程的计算机图形学领域还是一个全新的领域。 br />

#1 楼

使用OpenGL或任何此类库,您可以使用正交矩阵变换场景,并将相机视点移动到在场景上方(并与之平行)(在顶点着色器中),然后使用空片段着色器写入当前连接的帧缓冲区的深度缓冲区。最后检索此深度缓冲区,即可获得当前视图的高度图。

如果场景太大,则可以将摄像机移得更高,也可以一次移动地图的“块”并通过将这些“块状”高度图“缝合”在一起手动组装高度图。

希望这会有所帮助。

#2 楼

最简单的方法是使用您已经加载了场景的3D Python库,以通常通过OpenGL渲染的方式渲染3D场景。通过通常使用透视摄影机而不是透视摄影机,通过从上方俯视场景的正交摄影机进行渲染(确保摄影机平面位于场景的任何部分上方)。确保渲染器使用z(深度)缓冲区,并且如果不想在屏幕上显示任何内容,请将其渲染到屏幕外缓冲区(实际上根本不需要颜色缓冲区,只需要z缓冲区)。渲染后,只需glReadPixels z缓冲区(即从缓冲区中读取像素),然后将其保存到文件即可。您的3D库可能有一种直接将缓冲区保存到文件的方法。