ここにデモがあります
私は最近three.jsを使い始めました(私はOpenGLとC++に精通しているので、javascriptでこれを行うことは大きな学習曲線ではありません)物事を設定する方法を理解するために多くのthree.jsの例に目を通し、見ましたこのビデオ [xttp://www.youtube.com/watch?v=1ENVYLp_NgY] cannon.js を含める方法を説明しており、それも試してみたいと思いました :)
私の目標は、影と物理学を備えた 3D 世界を、他のオブジェクトと相互作用できるアニメーション化されたプレーヤーで実現することです。この例 [xttp://threejs.org/examples/webgl_morphtargets_md2_control.html] を開始点として選択しました。アニメーション化されたプレーヤー メッシュが既にあり、プレーヤー コントロールもほぼ適切だったからです。カメラに OrbitControls を追加して、できるようにしました。見回す。
プレイヤーメッシュを物理世界に存在するあらゆる種類のオブジェクトにリンクしようとするときを除いて、すべてがうまく機能しているようです(プレイヤーが石のブロックを反発/押すことができるようにするため)。プレーヤー メッシュは複合オブジェクト (インポートされた md2) であるため、基本的な球形を使用するだけですが、物理ワールド内のオブジェクトの座標を更新して、プレーヤー メッシュが移動するたびに追従するようにすると、プレーヤー メッシュがアニメートします。移動しません(したがって、update()関数でこれらの行のコメントを外しました)。
/**
* Problem: This prevents player from moving :(
**/
player.position.copy( playerMesh.root.position );
player.quaternion.copy( playerMesh.root.quaternion );
player.velocity.copy( new THREE.Vector3() );
また、md2 プレーヤー メッシュ オブジェクトに関与する「ジャイロ」と呼ばれるものもあります。これは、プレーヤーの動きに合わせてライトの位置を移動するように見えますが、それがどのように起こるかはわかりません (ジャイロスコープの部分は理解できるものではありませんが、私はそれが問題の一部かどうかはわかりません)。
コード リポジトリは github でホストされています
更新:修正済み。github のコミットを参照してください:)