W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
具有Skeleton(骨架)和bones(骨骼)的網(wǎng)格,可用于給幾何體上的頂點(diǎn)添加動(dòng)畫(huà)。
SkinnedMesh 只能與 WebGL 2 一起使用。對(duì)于 WebGL 1,需要 OES_texture_float 和頂點(diǎn)紋理支持。
const geometry = new THREE.CylinderGeometry( 5, 5, 5, 5, 15, 5, 30 );
// create the skin indices and skin weights
const position = geometry.attributes.position;
const vertex = new THREE.Vector3();
const skinIndices = [];
const skinWeights = [];
for ( let i = 0; i < position.count; i ++ ) {
vertex.fromBufferAttribute( position, i );
// compute skinIndex and skinWeight based on some configuration data
const y = ( vertex.y + sizing.halfHeight );
const skinIndex = Math.floor( y / sizing.segmentHeight );
const skinWeight = ( y % sizing.segmentHeight ) / sizing.segmentHeight;
skinIndices.push( skinIndex, skinIndex + 1, 0, 0 );
skinWeights.push( 1 - skinWeight, skinWeight, 0, 0 );
}
geometry.setAttribute( 'skinIndex', new THREE.Uint16BufferAttribute( skinIndices, 4 ) );
geometry.setAttribute( 'skinWeight', new THREE.Float32BufferAttribute( skinWeights, 4 ) );
// create skinned mesh and skeleton
const mesh = new THREE.SkinnedMesh( geometry, material );
const skeleton = new THREE.Skeleton( bones );
// see example from THREE.Skeleton
const rootBone = skeleton.bones[ 0 ];
mesh.add( rootBone );
// bind the skeleton to the mesh
mesh.bind( skeleton );
// move the bones and manipulate the model
skeleton.bones[ 0 ].rotation.x = -0.1;
skeleton.bones[ 1 ].rotation.x = 0.2;
geometry —— 一個(gè)BufferGeometry實(shí)例。
material —— (可選)一個(gè)Material實(shí)例,默認(rèn)值是一個(gè)新的MeshBasicMaterial。
共有屬性請(qǐng)參見(jiàn)其基類(lèi)Mesh。
“attached”(附加)或者“detached”(分離)?!癮ttached”使用SkinnedMesh.matrixWorld 屬性作為對(duì)骨骼的基本變換矩陣,“detached”則使用SkinnedMesh.bindMatrix。 默認(rèn)值是“attached”。
該基礎(chǔ)矩陣用于綁定骨骼的變換。
該基礎(chǔ)矩陣用于重置綁定骨骼的變換。
只讀標(biāo)志,用于檢查給定對(duì)象是否屬于 SkinnedMesh 類(lèi)型。
用于表示蒙皮網(wǎng)格中骨骼的層次結(jié)構(gòu)的Skeleton(骨架)。
共有方法請(qǐng)參見(jiàn)其基類(lèi)Mesh。
skeleton —— 由一棵Bones樹(shù)創(chuàng)建的Skeleton。
bindMatrix —— 表示骨架基本變換的Matrix4(4x4矩陣)。
將骨架綁定到一個(gè)蒙皮網(wǎng)格上。bindMatrix會(huì)被保存到.bindMatrix屬性中,其逆矩陣.bindMatrixInverse也會(huì)被計(jì)算出來(lái)。
此方法當(dāng)前無(wú)法正確克隆 SkinnedMesh 的實(shí)例。請(qǐng)同時(shí)使用 SkeletonUtils.clone()。
標(biāo)準(zhǔn)化蒙皮的權(quán)重。
這個(gè)方法設(shè)置了在“休息”狀態(tài)下蒙皮網(wǎng)格的姿勢(shì)(重置姿勢(shì))。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: