Closed Appletea0673 closed 1 week ago
点群位置計算時に位置が右にシフトしてしまう問題がある。 問題は以下のリンク先で述べられている通りである。 https://github.com/oculus-samples/Unity-DepthAPI/issues/60 こちらのIssueの通りに修正したが、改善が見られなかったため独自の解決法を考察中である。
DepthScannerShaderの場合、_EnvironmentDepthReprojectionMatricesでScreen上の位置座標からDepth TextureのUVを計算し、_EnvironmentDepthTextureから値を取り出して線形にするだけで該当する地点の座標を特定することができたように、RaycastでもScreen SpaceからReProjection行列でUV計算、サンプリングして線形にしているだけなのでどの部分を修正すべきか特定することが難しい。
そもそもずれの原因も確認できていないが、何故参照元はCenterEyeのFOVをReProjection行列内の画面幅計算に利用しているか不明である。
ちなみに、各目で視認できる範囲から横に離れた深度の方がずれる様子からTextureをサンプリングする際のUVの値がずれていることが分かり、(実際に利用した際も左目で計算した場合右上にL字の枠のようなノイズが発生する)このことからUV幅計算あるいはReProjection行列に問題があると考えられる。
https://developers.meta.com/horizon/downloads/package/meta-xr-mr-utility-kit-upm/ より、Meta XR MR Utility Kitのv71にRayを用いて位置推定できるDepth APIの機能が内蔵されたため、この機能を利用することで解決された。
点群位置計算時に位置が右にシフトしてしまう問題がある。 問題は以下のリンク先で述べられている通りである。 https://github.com/oculus-samples/Unity-DepthAPI/issues/60 こちらのIssueの通りに修正したが、改善が見られなかったため独自の解決法を考察中である。
DepthScannerShaderの場合、_EnvironmentDepthReprojectionMatricesでScreen上の位置座標からDepth TextureのUVを計算し、_EnvironmentDepthTextureから値を取り出して線形にするだけで該当する地点の座標を特定することができたように、RaycastでもScreen SpaceからReProjection行列でUV計算、サンプリングして線形にしているだけなのでどの部分を修正すべきか特定することが難しい。
そもそもずれの原因も確認できていないが、何故参照元はCenterEyeのFOVをReProjection行列内の画面幅計算に利用しているか不明である。
ちなみに、各目で視認できる範囲から横に離れた深度の方がずれる様子からTextureをサンプリングする際のUVの値がずれていることが分かり、(実際に利用した際も左目で計算した場合右上にL字の枠のようなノイズが発生する)このことからUV幅計算あるいはReProjection行列に問題があると考えられる。