私は同じ問題に遭遇しました。深度を抽出するには、カスタム シェーダーを作成する必要がありました。8 ビットを超える深度情報が必要だったので、画像の RGB コンポーネントに入れることができる 3 つの 8 ビット フィールドに深度を変換する必要がありました。
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:
//Cg
void vshader(float4 vtx_position : POSITION,
uniform float4x4 mat_modelproj,
out float4 l_position : POSITION,
out float4 l_pos : TEXCOORD0)
{
float4 position = vtx_position;
l_pos = mul(mat_modelproj, position);
l_position = l_pos;
}
void fshader(in float4 l_pos : TEXCOORD0,
out float4 o_color : COLOR)
{
float z = (l_pos.z / l_pos.w) * 0.5 + 0.5;
float zres = 16777216.0 * z;
float v0 = round(zres / 65536.0);
zres = zres - 65536.0 * v0;
float v1 = round(zres / 256.0);
zres = zres - 256.0 * v1;
float v2 = round(zres);
o_color = float4(v0, v1, v2, 1);
}