Babylon.jsでCameraをシームレスに指定の位置に移動させる

41409 ワード

はじめに

Babylon.jsブラウザ上でリアルタイムに動作する3Dレンダリングフレームワークの1つです。OSSとなりますので、誰でも無料で使用することができます。

今回の記事では、下図のように、Babylon.jsでCameraをシームレスに移動させる実装を目指します。
特にUnityでは実装方法わかるけど...という人におすすめです。

UnityのC#で書くとすると、以下のような実装を書きたい。

public class CameraMove: MonoBehaviour {
  public Transform camera;
  Vector3 currentPosition,targetPosition;
  float smoothSpeed = 3.0f;

  void Start(){
    currentPosition = camera.position;
    targetPosition = camera.position;
  }

  void Update(){
    if(Input.GetKeyDown("a")){
      targetPosition = new Vector3(0, 0, 0.05);
    }else if(Input.GetKeyDown("d")){
      targetPosition = new Vector3(0.05, 0, 0.15));
    }
  }

  void LateUpdate(){
    if(Vector3.Distance(currentPosition,targetPosition)<= 0.00001){
      currentPosition = targetPosition;
    }else{
      currentPosition = Vector3.Lerp(currentPosition,targetPosition,Time.deltaTime*smoothSpeed);
      camera.potision = currentPosition;
    }
  }
}

でも、Babylon.jsでどうやって書けば...ということで、書き方を整理していきたいと思います。
悩みポイントとしては

  • 基本シーンの準備の仕方
  • Update関数の準備の仕方
  • キー入力の準備の仕方
  • カメラ移動の実装の仕方

を見ていきたいと思います。

PlayGroundで準備