ARセッションの画面回転対応
この記事では、WeChatミニプログラムを横画面で実行する必要がある場合のARセッションの設定方法について説明します。
開始する前に
- AR駆動の3Dレンダリングを通じて、画面方向に対するカメラ画像の回転角度について理解してください。
- ARセッションの概念とフローについて理解してください。
Megaミニプログラムプラグインの画面方向列挙型
注記
スマートフォン画面の方向定義については、IOS、Androidなどの公式定義を参照してください。
Megaミニプログラムプラグインの画面方向列挙型 DeviceOrientation:
| 定数 | 値 | 説明 |
|---|---|---|
Portrait |
0 | 縦向き |
LandscapeLeft |
90 | 左横向き |
PortraitUpsideDown |
180 | 上下逆縦向き |
LandscapeRight |
270 | 右横向き |
WeChatミニプログラムのグローバル設定で画面方向を変更
app.jsonにwindow設定を追加します。詳細は表示領域の変化への対応を参照してください。
"window": {
"pageOrientation": "landscape"
}
実際の状況に応じて"portrait"(縦画面)または"landscape"(横画面)を入力します。
注意
ARミニプログラムアプリケーションでは「auto」を決して使用しないでください。特定の状況でAR表示に深刻な異常が発生する可能性があります。
画面方向の設定
setDeviceOrientation(deviceOrientation)を呼び出して画面回転方向を渡します。いつでも呼び出せ、即時有効になります。
例えば、自然な縦位置から反時計回りに90度回転した横画面モードで使用する場合:
let deviceOrientation = mega.DeviceOrientation.LandscapeLeft;
session.setDeviceOrientation(deviceOrientation);
megaプラグインが提供する画面方向設定は、WeChatミニプログラムの画面方向監視機能の不足を補うためです。WeChatのpageOrientation設定ではportraitとlandscapeの2つのオプションしか提供されておらず、ARアプリケーションにとってこれだけでは不十分です。例えば、自然な向きから反時計回りに90度回転した横画面と、270度回転した横画面は全く異なります。
したがって、app.jsonでpageOrientationがportraitに設定されている場合、setDeviceOrientation(deviceOrientation)の呼び出しは省略可能です。一般的なスマートフォンの自然な縦方向がセッションのデフォルト方向だからです。
app.jsonでpageOrientationがlandscapeに設定されている場合、必ずsetDeviceOrientation(deviceOrientation)を呼び出し、画面方向をLandscapeLeftまたはLandscapeRightに固定する必要があります。