我想在GTLF动画模型的头部安装一台第一人称相机。我打算移除模型的头部,并将颈部合并为一个顶点,以免遮挡相机。我的问题是如何将相机连接到模型的垂直或骨骼上?
这类似于:A帧:如何将对象附加到模型上的点(和/或它的骨骼(,但我也希望玩家仍然独立于父对象旋转相机。如何只影响相机的位置?
目前,我有以下代码:
Javascript
AFRAME.registerComponent('character-logic', {
init: function () {
var character = document.querySelector('#character')
var camera = document.querySelector('#camera')
character.skeleton.bones[2].add(camera)
}
});
HTML摘要
<a-scene character-logic>
<a-assets>
<a-asset-item id="character-gtlf" src="models/character.glb" response-type="arraybuffer"></a-asset-item>
</a-assets>
<a-camera id="camera"></a-camera>
<a-entity id="character" gltf-model="#character-gtlf" animation-mixer></a-entity>
</a-scene>
但我不断地得到";无法读取属性"bone"出于某种原因。
如果有帮助的话,我这里还有一个关于Glitch的简单代码示例,当character.skeleton.bones[2].add(camera)
被注释掉时,它就可以工作:https://glitch.com/~凸轮到骨骼
您应该能够使用以下方法将相机附加到骨骼上:
character.addEventListener('model-loaded', function(event){
const model = event.detail.model;
const skinnedMesh = model.getObjectByName('nedKelly001');
skinnedMesh.skeleton.bones[2].add(camera.object3D);
});
其思想是通过名称nedKelly001
来查询蒙皮网格。然后,您可以安全地访问skeleton
属性。