こんばんは、次男がいまだにおむつが取れずに家計がピンチな@kjunichiです。
背景
子供たちとくるまのゲームを作ろうとWebベースで進めている。
先日、ようやく物理エンジンを導入したところ、自車のやや後ろから眺めた視点からの カメラの指定方法で苦戦した。
自車のやや後方からの視点を実現するには
Three.jsのObject3D.localToWorldの動きを誤解していた。これ呼び出すとObject3Dの位置が変更される模様。これで、これまでのカメラ画像がたまに乱れるのが、Ammo.jsのバグではなく、俺のコードだったっぽい。
— kjunichi (@kjunichi) 2018年1月20日
const campos = new THREE.Vector3(); // ... campos.set(0, 2, -6.5); const q = chassisMesh.getWorldQuaternion(); campos.applyQuaternion(q); campos.add(chassisMesh.position); camera.position.copy(campos); camera.lookAt(chassisMesh.position);
Object3D#getWorldQuaternionで自車のメッシュからクォータニオンをワールド座標系で取得できる。 このクォータニオンを自車の後方を指すベクトルに適用し、 適用後のベクトルを自車の位置ベクトルに加えることでカメラの位置ベクトルが算出できる。 カメラのターゲットは自社の位置ベクトルにして完成。
関連記事
- [webgl]Three.jsでポリゴンを描画するには
- 今となっては内容が古く、そのままのソースでは今どきのthree.jsは動かない。
- ElectronでWebGL(three.js)使ってデスクトップマスコット作った際に分かったこと
- CI環境のNightmareでWebGLを動かす方法や、NightmareでWebGL 2.0を動かす方法
- Windows10のBlenderをアップデートしたらThree.jsのアドオンが無くなったが、見つけた
- ようやくJavaScriptで物理エンジンつかってオリジナルのコードが動かせつつある
- Three.jsでexamplesの高級車たちをblenderにExportしたが残念な結果に
- gopherくんのjsonデータがthree.jsのr85以降表示されなくてはまったjsonデータがthree.jsのr85以降表示されなくてはまった
- 過去1月にブログ記事が無かった日を挙げる