アニメーションが進行中の Three.js プロジェクトがあり、さまざまな時点でスケルトン ボーンの位置を見つけたいと考えています。
たとえば、https ://modelviewer.dev/examples/animation/index.html に移動し て、Three.js シーンを見つけた場合:
const modelViewer = document.querySelector("model-viewer");
const scene = modelViewer[Object.getOwnPropertySymbols(modelViewer)[14]];
次に、たとえば、LowerArmR
この場合にアニメーション化された の位置にアクセスできます。
scene.children[0].children[0].children[0].children[0].children[1].children[0].skeleton.bones.find(b => b.name == "LowerArmR").position
これを行うと、アニメーションのさまざまなポイントで、常に同じ位置になります。
{x: 1.86264503820865e-10, y: 0.00575238140299916, z: -1.02445485428149e-9}
アニメーション中に現在の骨格位置にアクセスするにはどうすればよいですか?
ヒューマノイド アバターのアニメーションでこのプロセスを実行し、ボーンの位置をプロットしようとすると、T ポーズだけが得られますが、特定の時間ごとの実際の位置は得られません。
ここから、次のことがわかります。
スケルタル アニメーションは GPU で処理されるため、実行時に js コードでこのデータに正確にアクセスすることはできません。
おそらく誰かが回避策を知っているかもしれませんが、私が知る限り、何もありません。
そして、その回避策または標準的な方法を探しています。