Pandas3D中的深度纹理

2024-09-29 23:28:14 发布

您现在位置:Python中文网/ 问答频道 /正文

在Panda3D中,我有以下代码

self.manager = FilterManager(base.win, base.cam)

self.sceneTex = Texture("scene")
self.depthTex = Texture("depth")


self.quad = self.manager.renderSceneInto(colortex=self.sceneTex, depthtex = self.depthTex)

...   

当我运行上面的并启用视图缓冲区(show buffers#t)时,“sceneTex”纹理看起来是正确的。然而,“depthTex”总是空白(全黑),无论我把相机移到哪里。有人知道怎么回事吗?在

谢谢


Tags: 代码selfbasemanagerscenepanda3dwindepth
2条回答

也许你已经禁用了深度测试写作?即使您可能没有得到任何明显的瑕疵(取决于您的场景),您也可以在没有深度缓冲的情况下运行。看看panda tutorial about depth buffer writing它还告诉你一些场景可以更好地进行深度排序(你也许测试过这个,但没有还原深度缓冲区禁用代码?)在

我也遇到了同样的问题。我必须创建一个自定义着色器来提取深度。因为我需要超过8位的深度信息,我不得不将深度转换成3个8位的字段,这些字段可以放入图像的RGB组件中。在

在Panda3D Python中:

# Set up Shader
dcam = loader.loadShader('Dcam.sha')
# render everything through this camera and shader
self.terrain.getRoot().setShader(dcam)

还需要设置着色器输入和输出(即vtx_position、mat_modelproj等)。请参阅Panda3D文档中的示例。在

在Dcam.sha公司公司名称:

^{pr2}$

相关问题 更多 >

    热门问题