私は、ユーザーがバックカメラを使用しながらSLAM / 6dofを利用しながら、エクスペリエンス全体でフロントカメラとバックカメラを切り替えることができるWeb-arエクスペリエンスを開発しようとしています。理想的にはPlayCanvasを使いたいのですが、フロントカメラを動作させることができませんでした。私はこれをa-frameに実装することである程度の成功を収めましたが、多くのことが壊れています。
フロントカメラを有効にし、XR.stop()を使用し、続いてXR.run({canvas:document.getElementById( 'camerafeed')、cameraConfig:{direction:XR.XrConfig。 camera()。FRONT}})は効果がありませんでした。
フレーム内で同様の一連のイベントを実行していますが、いくつかの結果が表示されています。フロントカメラはアクティブになりますが、ログにエラーがあり、3Dオブジェクトはレンダリングされず(フロントカメラモードで起動するとレンダリングされます)、カメラを再度切り替えようとすると、「おっと、何か問題が発生しました!」と表示されます。画面。
SLAM / 6dofの切り替えに関しては、XR.runの実行後にdisableWorldTrackingを変更できないというエラーが発生し続けます。XR.stop関数を実行して、stopxrイベントをリッスンした場合でも。
フロントカメラに切り替えることになっているフレーム機能(重要なビットのみ):
init: function() {
this.el.sceneEl.addEventListener('stopxr', event => {
console.log("AR has been stopped.");
const videoCanvas = document.querySelector('canvas.a-canvas');
XR.XrController.configure({disableWorldTracking: true});
XR.run({canvas: videoCanvas, cameraConfig: {direction: XR.XrConfig.camera().FRONT}});
});
},
switchToFace: function() {
this.el.sceneEl.emit('stopxr');
//XR.stop();
},
シーンの実行中にdisableWorldTrackingパラメータを変更する適切な方法は何ですか?シーンの実行中にフロントカメラとバックカメラを切り替える適切な方法は何ですか?
8番目のウォール開発者と話し合った後、彼らはページごとに1つのXRセッションのみをサポートすることを確認したため、XR.stopの後、XR.runを再度呼び出すことはできません。ただし、フロントカメラとバックカメラを切り替える別の方法があり、SLAMを有効にして機能します。
onCameraStatusChange
イベントとグラブへの参照stream
とvideo
要素。XR.pause()
ます。stream
手順1で取得したすべてのトラックを停止します。navigator.mediaDevices.getUserMedia(constraints);
目的のカメラのストリームを取得するために使用します。video
手順1で取得した要素に新しいストリームを割り当てます。playing
イベントを発生させるためのビデオ要素を聞いて、XR.resume();
注意すべき1つのこと:SLAMは、バックカメラから始めている場合にのみ機能します。フロントカメラとバックに切り替えた後、SLAMは機能しなくなります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加