codecamp

three.js Skeleton

使用一个bones数组来创建一个可以由SkinnedMesh使用的骨架。

代码示例

// Create a simple "arm"

const bones = [];

const shoulder = new THREE.Bone();
const elbow = new THREE.Bone();
const hand = new THREE.Bone();

shoulder.add( elbow );
elbow.add( hand );

bones.push( shoulder );
bones.push( elbow );
bones.push( hand );

shoulder.position.y = -5;
elbow.position.y = 0;
hand.position.y = 5;

const armSkeleton = new THREE.Skeleton( bones );

构造器

Skeleton( bones : Array, boneInverses : Array )

bones —— 包含有一组bone的数组,默认值是一个空数组。
boneInverses —— (可选) 包含Matrix4的数组。

创建一个新的Skeleton.

属性

.bones : Array

包含有一组bone的数组。请注意,这是一份原始数组的拷贝,不是引用,所以你可以在不对当前数组造成影响的情况下,修改原始数组。

.boneInverses : Array

包含有一组Matrix4,表示每个独立骨骼matrixWorld矩阵的逆矩阵。

.boneMatrices : Float32Array

当使用顶点纹理时,数组缓冲区保存着骨骼数据。

.boneTexture : DataTexture

当使用顶点纹理时,DataTexture保存着骨骼数据。

.boneTextureSize : Integer

.boneTexture 的大小。

方法

.clone () : Skeleton

返回一个当前Skeleton对象的克隆。

.calculateInverses () : undefined

如果没有在构造器中提供,生成boneInverses数组。

.computeBoneTexture () : this

计算 DataTexture 的一个实例,以便更有效地将骨骼数据传递给着色器。纹理被分配给 boneTexture。

.pose () : undefined

返回骨架的基础姿势。

.update () : undefined

在改变骨骼后,更新boneMatrices 和 boneTexture的值。 如果骨架被用于SkinnedMesh,则它将会被WebGLRenderer自动调用。

.getBoneByName ( name : String ) : Bone

name —— 匹配Bone对象中.name属性的字符串。

在骨架中的骨骼数组中遍览,并返回第一个能够和name匹配上的骨骼对象。

.dispose () : undefined

如果 Skeleton 的实例在应用程序中变得过时,则可以使用。该方法将释放内部资源。

源代码

src/objects/Skeleton.js


three.js Points
three.js SkinnedMesh
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

参考

核心 / BufferAttributes

渲染器 / WebXR

开发者参考

WebGL渲染器

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }