在Three.js中,Object3D
是所有3D对象的基类,而Group
是Object3D
的一个子类。Group
的目的是为了简化处理多个对象的集合。当你将对象添加到Group
中时,它们会以一个单元格的形式被处理,参与Group
的某些操作,例如位置更新、旋转或缩放。
Object3D
和Group
之间的主要区别在于:
-
Object3D
是所有3D对象的基类,而Group
是从Object3D
派生的类,因此Group
具有Object3D
的所有功能。 -
Group
特别添加了一些便利的功能,如在其子对象上迭代执行某些操作。
____________________________________________________
Bone
Bone是three.js中的一个类,用于模拟人或动物的骨骼关节,控制身体表面变形,生成骨骼动画。Bone的父类是Object3D,因此它继承了Object3D的相关属性或方法,如位置属性position、旋转方法rotateX()、添加方法add()等。Bone通常用于构建一个层级树结构,模拟人或动物的骨骼结构,通过控制关节的运动来实现复杂的动画效果12。
Group
Group是three.js中用于组织和管理多个对象的集合。它将多个3D对象组合在一起,以便在场景中进行统一的操作和管理。Group本身不是一个动画对象,但它可以包含多个对象,包括Bone和其他网格模型。通过Group,开发者可以方便地对多个对象进行位置、旋转等操作,而不需要单独对每个对象进行操作。
___________________________________________________
Skeleton:在Three.js中,Skeleton是一个用于管理骨骼动画的类。它包含一个骨骼数组,每个元素都是一个Bone实例。Skeleton的主要功能是定义和管理一组骨骼,这些骨骼用于驱动模型的动画。它提供了计算绑定矩阵、更新骨骼状态、将骨骼恢复到初始绑定姿势以及将骨骼应用到网格对象上的方法1。
Bone:Bone是Skeleton的一部分,代表一个具体的骨骼关节。在Three.js中,Bone是一个对象,通常用于连接其他Bone对象,形成骨骼结构。Bone对象可以通过位置、旋转和缩放属性来控制其在三维空间中的行为。
________________________________
对象关系:
Bone交叉group>Object3D
skeleton 管理 Bone
onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize( window.innerWidth, window.innerHeight );
}