問題タブ [arscnview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
95 参照

scenekit - ARKit で SCNRenderer を使用すると奇妙な結果になる

ARSCNView のレンダリング パス中に作成される深度テクスチャをエクスポートしようとしています。そのために、SCNScene をバックグラウンドでカスタム .xml でレンダリングするコードを作成しましたMTLRenderPassDescriptor。「GPU キャプチャ ツール」を使用して GPU にバインドされたリソースをトレースすると、 SCNRenderer.renderメソッドでカスタムMTLRenderPassDescriptorが無視されることがわかりました。

このコードを使用して、SCNScene をオフスクリーンにレンダリングしました。

GPU キャプチャでリソースを確認すると、レンダラーは で説明されていない独自のフレーム テクスチャと深度テクスチャを生成しrenderPassDescriptorます。ドキュメントによると、それは奇妙です。また、ARKit セッションなしでこれをテストしたところ、期待どおりに動作しました (レンダラーは、 で説明されているテクスチャ リソースを使用しますrenderPassDescriptor)。どうすればこれを修正できますか? これは SceneKit のバグですか?

画像 1. GPU キャプチャで、深度テクスチャがブリット パスにリンクされていないことがわかりました。

画像 2. カラー アタッチメント テクスチャ アドレスは 0x144a4f310 です

画像 3. 深度アタッチメント テクスチャ アドレスは 0x144a50050 です

画像 4. render メソッドにバインドされたテクスチャには異なるアドレスがあります

これが最小の作業例です。