Three.js –将纹理应用于Collada网格会产生意外结果

时间:2018-10-07 19:02:53

标签: javascript three.js collada

Three.js ColladaLoader example之后,我导出了Cinema4D苏打水 可以将(consisting of 4 meshes)建模为.dae文件。我想向其中一个网格物体(罐体)添加纹理。

在Cinema4D中,我已经基于网格(球面)的UV贴图制作了a texture。但是,当我尝试将纹理应用于网格时,它只会显示纯白色填充。我已经在this Codepen中添加了整个代码。以下相关代码,为简洁起见进行了编辑:

loader = new THREE.ColladaLoader();
loader.load('can.dae', function (collada) {
    can = collada.scene;

    can.traverse(function (node) {
        var textureLoader

        if (node.name == 'wrapper') {
            textureLoader = new THREE.TextureLoader();

            textureLoader.load('wrapper.png', function (texture) {
                node.material = new THREE.MeshBasicMaterial({
                    map: texture
                });

                node.material.needsUpdate = true;
            });
        }
    });

    scene.add(can); 
});

结果说明。如您所见,罐的包装不是提供的红色wrapper.png,而是纯白色填充。我尝试过尝试映射和包装模式,但无济于事。任何帮助都非常感谢!

enter image description here

仅供参考:我已经排除了CORS问题。

1 个答案:

答案 0 :(得分:0)

我在装载机中添加了一个多维数据集,并为其提供了材料,该多维数据集可以正常工作..因此,这意味着您的罐头网格没有为其分配适当的UV坐标。.也许它是在您的创作中使用自动圆柱映射不输出UV的软件?您在编写什么软件?

            scene.add(new THREE.Mesh(new THREE.BoxGeometry(1,1,1),node.material));

https://codepen.io/manthrax/pen/ePBZbZ?editors=1001