首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从三维场景绘制高差图的方法

从三维场景绘制高差图的方法
EN

Computer Graphics用户
提问于 2016-12-04 11:34:43
回答 2查看 810关注 0票数 6

我正在寻找一种从3D场景绘制高度图的方法。场景可能包括一个地形,这是反过来生成的另一个高度图,但也将有规则的三维物体。

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

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

这是一种常见的操作,其中有已建立/规范的方法,无论是通过库(如Panda3D ),还是通过更直接/低级地使用表示3D场景的数据结构?

我要补充的是,我对计算机图形学领域的编程非常陌生。

EN

回答 2

Computer Graphics用户

回答已采纳

发布于 2016-12-06 09:20:26

最简单的方法是按照通常通过OpenGL呈现3D场景的方式,使用已经加载场景的任何3D Python库。而不是你通常使用的透视相机,通过一个正射相机从上面俯视场景(确保相机平面在场景的任何部分之上)。确保渲染器使用z(深度)缓冲区,如果不需要屏幕上的任何内容,则将其呈现为屏幕外缓冲区(实际上根本不需要颜色缓冲区,只需要z缓冲区)。只需在呈现后glReadPixels z缓冲区(即读取缓冲区中的像素),并将其保存到文件中。您的3D库可能有一种方法可以直接将缓冲区保存到文件中。

票数 4
EN

Computer Graphics用户

发布于 2016-12-05 22:04:07

使用OpenGL或任何这样的库,您可以使用正交矩阵转换场景,并将相机视图点移动到场景的上方(并与场景平行)(在顶点着色器中),然后使用一个空片段着色器,它将写入当前附加帧缓冲区的深度缓冲区。最后,检索此深度缓冲区将为您提供当前视图的高度图。

如果你的场景太大,你可以把相机移到更高的地方,还可以一次拿出地图上的“大块”,然后通过“拼接”这些“大块”高度图来手工组装你的高度图。

希望这能有所帮助。

票数 4
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/4350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档