如何在不影响模型旋转的情况下将摄影机附加到骨骼/顶点?(A型架)



我想在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属性。

最新更新