3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BabylonJS attachCamera(canvas,true)のcanvas引数は無視される

Last updated at Posted at 2023-12-05

attachControl 関数

Babylon.js Playground の初期サンプルコードにも登場する camera.attachControl(canvas, true) ですが、2023年12月2日現在の Babylon.js 6.32.1 では、boolean 型でない先頭の引数は無視するようになっています。

例えば FreeCamera.attachControl では以下の2つが定義されていますが後者は後方互換の目的で残されています。

  • attachControl(noPreventDefault?: boolean): void
  • attachControl(ignored: any, noPreventDefault?: boolean): void

そのため、attachControl の引数にHTML要素を指定しても制御入力対象にはならず、Engine初期化時に渡したHTMLCanvasElementが制御入力対象となります。

コントロール入力要素の指定

では、制御入力対象のHTML要素を Engine 初期化時の canvas 以外から変更するにはどうするようになったか、ですが、これは engine.inputElement に代入するようになったようです。

以下は Babylon.js Playground Javascript で実行可能なコードです。

var createScene = function () {
    var scene = new BABYLON.Scene(engine);
    var camera = new BABYLON.FreeCamera("camera1", new BABYLON.Vector3(0, 5, -10), scene);
    camera.setTarget(BABYLON.Vector3.Zero());

    engine.inputElement = document.getElementById('footer');
    camera.attachControl(true);

    var light = new BABYLON.HemisphericLight("light", new BABYLON.Vector3(0, 1, 0), scene);
    light.intensity = 0.7;
    var sphere = BABYLON.MeshBuilder.CreateSphere("sphere", {diameter: 2, segments: 32}, scene);
    sphere.position.y = 1;
    var ground = BABYLON.MeshBuilder.CreateGround("ground", {width: 6, height: 6}, scene);
    return scene;
};
実行結果
フッター2a.png
最下段のフッター部分でマウスドラッグなどすることでカメラを制御できます

リンク

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?