W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
使用 CCD 算法的 IK 求解器。
CCDIKSolver 使用 CCD 算法解決逆運(yùn)動(dòng)學(xué)問(wèn)題。 CCDIKSolver 旨在與 SkinnedMesh 一起使用,但也可以與 MMDLoader 或 GLTFLoader 骨架一起使用。
let ikSolver;
//
// Bones hierarchy:
//
// root
// ├── bone0
// │ └── bone1
// │ └── bone2
// │ └── bone3
// └── target
//
// Positioned as follow on the cylinder:
//
// o <- target (y = 20)
//
// +----o----+ <- bone3 (y = 12)
// | |
// | o | <- bone2 (y = 4)
// | |
// | o | <- bone1 (y = -4)
// | |
// +----oo---+ <- root, bone0 (y = -12)
//
let bones = []
// "root"
let rootBone = new Bone();
rootBone.position.y = -12;
bones.push( rootBone );
// "bone0"
let prevBone = new Bone();
prevBone.position.y = 0;
rootBone.add( prevBone );
bones.push( prevBone );
// "bone1", "bone2", "bone3"
for ( let i = 1; i <= 3; i ++ ) {
const bone = new Bone();
bone.position.y = 8;
bones.push( bone );
prevBone.add( bone );
prevBone = bone;
}
// "target"
const targetBone = new Bone();
targetBone.position.y = 24 + 8
rootBone.add( targetBone );
bones.push( targetBone );
//
// skinned mesh
//
const mesh = new SkinnedMesh( geometry, material );
const skeleton = new Skeleton( bones );
mesh.add( bones[ 0 ] ); // "root" bone
mesh.bind( skeleton );
//
// ikSolver
//
const iks = [
{
target: 5, // "target"
effector: 4, // "bone3"
links: [ { index: 3 }, { index: 2 }, { index: 1 } ] // "bone2", "bone1", "bone0"
}
];
ikSolver = new CCDIKSolver( mesh, iks );
function render() {
ikSolver?.update();
renderer.render( scene, camera );
}
webgl_loader_mmd
webgl_loader_mmd_pose
webgl_loader_mmd_audio
mesh — CCDIKSolver 為其解決 IK 問(wèn)題的 SkinnedMesh。
iks — 指定 IK 參數(shù)的對(duì)象數(shù)組。 target、effector 和 link-index 是 .skeleton.bones 中的索引整數(shù)。骨骼關(guān)系應(yīng)該是“l(fā)inks[ n ], links[ n - 1 ], ..., links[ 0 ], effector”,從父到子的順序。
創(chuàng)建一個(gè)新的 CCDIKSolver。
傳遞給構(gòu)造函數(shù)的 IK 參數(shù)數(shù)組。
SkinnedMesh 傳遞給構(gòu)造函數(shù)。
返回 CCDIKHelper。您可以通過(guò)將助手添加到場(chǎng)景來(lái)可視化 IK 骨骼。
通過(guò)求解CCD算法更新IK骨骼四元數(shù)。
通過(guò)求解 CCD 算法更新 IK 骨骼四元數(shù)。
examples/jsm/animation/CCDIKSolver.js
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: