更改 obj 的子元素的颜色或位置
Chang color or position of a subelement of an obj
我正在寻找如何更改大 obj 文件子元素的颜色或位置。
目前,我正在加载一个巨大的 obj,其中有超过 100 个子元素 unsing
<a-entity obj-model="obj: #band-obj; mtl: #band-mtl" position="-5, -5, -5" rotation="0, 0, 0" scale="5, 5, 5"></a-entity>
(obj 和 mtl 已经定义)。
有没有人成功地制作了一个巨大模型的动画部分并且能够给我一个关于如何使用 js 获得子元素的提示?
您可以通过yourEntity.getObject3D('mesh')
获取网格。从那里您可以访问子树并可以使用 getObjectByName
或 getObjectByProperty
或 traverse
.
等方法
网格也会在 model-loaded
或 object3dset
事件的事件详细信息中返回。
AFRAME.registerComponent('model-modifier', {
init: function () {
this.el.addEventListener('object3dset', evt => {
if (evt.detail.type !== 'mesh') { return; }
this.modifyMesh(this.el.getObject3D('mesh'));
});
},
modifyMesh: function (mesh) {
// Modify here.
}
});
// ...
<a-entity obj-model model-modifier>
我正在寻找如何更改大 obj 文件子元素的颜色或位置。 目前,我正在加载一个巨大的 obj,其中有超过 100 个子元素 unsing
<a-entity obj-model="obj: #band-obj; mtl: #band-mtl" position="-5, -5, -5" rotation="0, 0, 0" scale="5, 5, 5"></a-entity>
(obj 和 mtl 已经定义)。
有没有人成功地制作了一个巨大模型的动画部分并且能够给我一个关于如何使用 js 获得子元素的提示?
您可以通过yourEntity.getObject3D('mesh')
获取网格。从那里您可以访问子树并可以使用 getObjectByName
或 getObjectByProperty
或 traverse
.
网格也会在 model-loaded
或 object3dset
事件的事件详细信息中返回。
AFRAME.registerComponent('model-modifier', {
init: function () {
this.el.addEventListener('object3dset', evt => {
if (evt.detail.type !== 'mesh') { return; }
this.modifyMesh(this.el.getObject3D('mesh'));
});
},
modifyMesh: function (mesh) {
// Modify here.
}
});
// ...
<a-entity obj-model model-modifier>