Bone和Group有什么区别?如何获得成群的骨头?

时间:2019-08-08 07:22:52

标签: three.js

两者:

来自

在两种情况下,源代码均未添加任何功能:

但只有类型和标志

因此,一个组具有组类型,并且标志isGroup = true 并且Bone的类型为bone,并且标志为isBone = true

对于我的用例,我可能需要具有成组的骨骼。这取决于答案:

Bone和Group有什么区别?

文档说:

组:这几乎与Object3D相同。其目的是使语法上的对象组更加清晰。

骨骼:骨骼的一部分。骨骼又由SkinnedMesh使用。骨骼几乎与空白的Object3D相同。

因此两者都是几乎与... Object3D

对于Bone,至少要提到Three.js的哪些部分行为不同。对于群组,我想知道某个东西是否是群组会在哪里有所作为。如果仅是语法,那么Bone会完全像一个组那样运行。如果Three.js代码中的某些部分检查isGroup或kind are group,那将是另一回事了……

如何使用Three.js标准功能实现作为组的骨骼?

是否只需将标志“ isGroup”设置为足够?

我是否必须创建BoneGroup或GroupBone-设置两个标志? 哪种命名与Three.js当前的命名约定更加一致?

1 个答案:

答案 0 :(得分:1)

我认为对于您而言,最好的解决方案是将Bone用作Object3D,因为它已经对其进行了扩展。除以下情况外,没有这样的情况无法使用Group3的Object3D:

isGroup属性在WebGLRenderer类,projectObject函数(https://github.com/mrdoob/three.js/blob/master/src/renderers/WebGLRenderer.js,当前版本的第1256行)中仅在THREE.JS源代码内部使用一次,并定义了子组的渲染顺序。

所以我认为使用Object3D代替Group几乎是干净的,并且不创建其他类