カメラ
カメラは、見る人に何が見えるか、見る人がどう動き回れるかを決めます。操作モード、レンズ、ミニマップなどの追加ビューを設定しましょう。
操作モード
| モード | 見る人ができること |
|---|---|
none | カメラを動かせません。動かすのはあなたです |
orbit | ドラッグで対象のまわりを回り、スクロールでズームします |
fly | キーとマウスで自由に飛び回ります |
firstPerson | その場から見回します。ポインターはキャプチャされます |
lock | ポインターはキャプチャされ、カメラはオブジェクトを追い続けます |
lock を使いましょうfirstPerson は、カメラをオブジェクトから切り離します。モデルのまわりを歩いて見るだけならこれで十分です。ただし、カメラが体についていかなくなるので、キャラクターには使えません。
lock もポインターをキャプチャしますが、カメラはオブジェクトに付いたままです。マウスの動きは、代わりにスクリプトに渡されます。一人称視点のゲームには、こちらを使ってください。
orbit の設定
orbit は、商品ビューアに向いているので初期モードになっています。設定がいちばん多いモードです。
| 設定 | 役割 |
|---|---|
target | カメラが回る中心の点 |
enableRotate · enablePan · enableZoom | 使えるジェスチャー |
minDistance · maxDistance | 見る人がどこまで近づけるか、離れられるか |
minPolarAngle · maxPolarAngle | 上下にどこまで回り込めるか |
enableDamping · dampingFactor | 指を離したあと、動きがどれだけ滑り続けるか |
autoRotate · autoRotateSpeed | ゆっくりした自動回転 |
商品ビューアでは、ほぼ必ず極角(polar angle)を制限してください。制限しないと、見る人が床の下に回り込んでシーンを下から見られてしまいます。どんなライティングにしても、下からの眺めはきれいに見えません。
レンズ
fovは視野角で、単位は度です。50 で自然に見えます。値を下げると、ズームしたような平坦な見た目になります。値を上げると、広く映り、迫力のある見た目になります。nearとfarは、描画する範囲を決めます。nearより近いものと、farより遠いものは切り取られます。
far が near に比べて大きすぎると、近くに重なった表面がちらつき始めます。これを Z ファイティングと呼びます。直すときは、まず near を上げてください。far を下げるより、ずっと効果があります。
fly の設定
fly モードでは、見る人はキーで移動します。キーは変更できます。プロジェクトで名前を付けたキー割り当てを使うこともできます。移動の速さは、速度とブースト倍率で決まります。初期設定では、Shift を押している間ブーストがかかります。
追加ビュー
追加ビュー(Extra camera view)は、カメラからもう 1 つの映像を、メインの映像の上に描画します。ミニマップ、バックミラー、監視モニターに使います。
すでにカメラを持っているオブジェクトに追加して、描画先を選びます。
screen:画面上の長方形です。位置と大きさを、画面に対する割合で指定します。texture:マテリアルで表示できる画像です。
texture を使うと、実際に映るモニターをつくれます。カメラの映像をテクスチャに描画し、そのテクスチャをシーン内の画面のオブジェクトに貼ります。すると、その画面にワールドの別の場所が映ります。
追加ビューは、メインの映像のあとに、並べた順番で描画されます。
モニターが 2 つあれば、シーンは 3 回描画されます。追加ビューは必要な場所だけで使い、不要な場所ではオフにしてください。
スクリプトでカメラを切り替える
シーンは、一度に 1 つのカメラを通して描画されます。スクリプトからは、どのカメラが有効かを確認し、別のカメラに切り替えられます。
ctx.camera.entity();
ctx.camera.setActive(securityCam);
ctx.camera.pose();
カメラの位置は、常にカメラのトランスフォームで決まります。カメラを動かすには、トランスフォームに書き込みます。orbit モードと firstPerson モードでは回転を操作側が決めるので、書き込んだ回転は上書きされます。書き込んだ位置はそのまま使われます。詳しくは ctx API を参照してください。
ゲーム操作でカメラを動かしている場合、そのカメラ自身の操作モードは無視されます。そうしないと、毎フレーム 2 つの操作がぶつかってしまうからです。
次へ: プレハブ — オブジェクトのまとまりを使い回し、何千ものコピーを描画します。