CameraPipelineModule
8th Wall カメラアプリケーションは、カメラパイプラインモジュールフレームワークを使用して構築されています。 アプリケーションは、モジュールを設定し、実行時にアプリケーションの動作を制御します。
カメラパイプラインモジュールのアプリケーションへの追加については、 XR8.addCameraPipelineModule()
をご参照ください。
カメラパイプラインモジュールオブジェクトは、アプリケーション内でユニークな .name の文字列を持つ必要があります。 以下のカメラライフサイクルメソッドを1つ以上実装する必要があります。 これらのメソッドは、runループ内の適切な箇所で実行されます。
アプリケーションのメインランタイム中、各カメラフレームは以下のサイクルとなります。
onBeforeRun
-> onCameraStatusChange
(requesting
-> hasStream
-> hasVideo
| failed
) -> onStart
-> onAttach
-> onProcessGpu
-> onProcessCpu
-> onUpdate
-> onRender
カメラモジュールは、以下のカメラライフサイクルメソッドを1つ以上実装する必要があります。
関数 | 説明 |
---|---|
onAppResourcesLoaded | サーバーからアプリに付属するリソースを受信したときに呼び出されます。 |
onAttach | モジュールがフレームの更新を受け取る前に呼び出されます。 パイプラインの実行前または実行後に追加されたモジュールで呼び出されます。 |
onBeforeRun | XR8.run() の直後に呼び出されます。 もし、何らかの Promise が返された場合、XRは全ての Promise を待ちます。 |
onCameraStatusChange | カメラ許可リクエスト中に変更が発生したときに呼び出されます。 |
onCanvasSizeChange | キャンバスのサイズが変更されたときに呼び出されます。 |
onDetach | モジュールが最後にフレーム更新を受け取った後に呼び出されます。 これは、エンジンが停止した後か、モジュールが手動でパイプラインから取り外された後、最初に発生するものです。 |
onDeviceOrientationChange | 端末の横向き/縦向きが変更されたときに呼び出されます。 |
onException | XRでエラーが発生したときに呼び出されます。 エラーオブジェクトとともに呼び出されます。 |
onPaused | XR8.pause() が呼び出されたときに呼び出されます。 |
onProcessCpu | GPU処理の結果を読み取り、使用可能なデータを返すために呼び出されます。 |
onProcessGpu | GPU処理を開始するために呼び出されます。 |
onRemove | モジュールがパイプラインから削除されたときに呼び出されます。 |
onRender | onUpdateの後に呼び出されます。 これはレンダリングエンジンが WebGL 描画コマンドを発行するための時間です。 アプリケーションが独自のrunループを提供し、 XR8.runPreRender() と XR8.runPostRender() に依存している場合、このメソッドは呼ばれず、すべてのレンダリングを外部のrunループで調整する必要があります。 |
onResume | XR8.resume() が呼び出されたときに呼び出されます。 |
onStart | XRの起動時に呼び出されます。 XR8.run() が呼び出された後の最初のコールバックです。 |
onUpdate | レンダリング前にシーンを更新するために呼び出されます。 onProcessGpu および onProcessCpu のモジュールが返すデータは、processGpu.modulename および processCpu.modulename として存在し、名前は module.name = "modulename" で与えられます。 |
onVideoSizeChange | キャンバスのサイズが変更されたときに呼び出されます。 |
requiredPermissions | モジュールはパーミッションリクエストが必要なブラウザ機能を指定できます。 これらは、フレームワークによって、適切なパーミッションがない場合に要求したり、XRを実行する前に適切なパーミッションを要求するコンポーネントを作成したりするために使用することができます。 |
注意事項: onProcessGpu
または onProcessCpu
を実装するカメラモジュールは、パイプラインのその後にデータを提供できます。 これは、モジュールの名前によって行われます。