将 material 应用于 A 帧中的 collada 网格

Apply material to collada mesh in A-frame

我正在尝试将 material 应用于 A 型框架中的自定义 3d 网格(基于 Three.js),但它不起作用(即模型保持原始状态 material) 知道问题出在哪里吗?

下面是我的场景,其中 "ruban4" 是从 Blender 导出的随机 Collada 模型。

<a-scene>
    <a-assets>
        <a-asset-item id="ruban" src="ruban4.dae">
    </a-assets>
    <a-collada-model 
                     src="#ruban"
                     material="shader: flat; color: #93d400;"
                     position=" 10 10 0">
    </a-collada-model>
</a-scene>

更新:似乎特定于 Collada,适用于 .obj 和 .mtl

Collada 模型应被视为黑盒。如果你想修改模型或其纹理,你应该在你选择的 3d 包中进行。 Collada 模型通常包含多个几何体、动画、纹理和映射(它们导入一个完整的子场景)。 aframe material 不适用,因为它无法以可预测的方式完成。哪个纹理将被替换? Aframe 需要了解作者的意图。

OBJ 之所以有效,是因为该格式描述了一个简单的几何图形,并且应用 material 可以预见地完成。

提供 Diego 答案的替代方案,将 COLLADA 模型导入场景后,您可以遍历其场景图并根据需要手动修改各个部分。这有点 hacky,但可能。

四处逛逛:

myColladaEl.getObject3D('mesh');