如何在不影响模型旋转的情况下将相机附加到模型上的 bone/vertices? (A-Frame)
How to attach an camera to a bone/vertices on a model without affecting its rotation? (A-Frame)
我想在动画 GTLF 模型的头部安装一个 first-person 相机。我打算移除模型的头部并将颈部合并为一个顶点,以免遮挡相机。我的问题是如何将相机连接到模型的顶点或骨骼?
这类似于:
但我也希望玩家仍然独立于 parent 旋转相机。如何只影响相机的位置?
目前,我有以下代码:
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/~cam-to-bone
您应该能够使用此方法将相机附加到骨骼:
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
属性.
我想在动画 GTLF 模型的头部安装一个 first-person 相机。我打算移除模型的头部并将颈部合并为一个顶点,以免遮挡相机。我的问题是如何将相机连接到模型的顶点或骨骼?
这类似于:
目前,我有以下代码:
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/~cam-to-bone
您应该能够使用此方法将相机附加到骨骼:
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
属性.