three.js地图mesh.geometry.attributes.uv

问题描述 投票:0回答:2

我目前正在使用3D配置器。因此,我应该能够在通常已经具有UV坐标的FBX对象上导入徽标。问题是:自3天前以来,我一直在努力,尝试在网格物体上导入纹理,但无法使用其UV坐标来映射它。

所以,我的纹理带有徽标。

“我的纹理”

当我将其映射到简单的多维数据集上时,没问题,它正在运行:

“具有纹理的多维数据集”“>

但是当我尝试将相同的纹理应用于我的网格时:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS94TVE3VS5wbmcifQ==” alt =“具有相同纹理的自定义网格”>

纹理被裁剪。所以我一直在寻找网状json树,我发现了它:

“自定义网格json”

所以有uv坐标,但是它看起来与我的立方体不同,因为当我看他的json时,我没有发现(在立方体上的)同一棵树:

“多维数据集json”

最后,这是我的代码:

if(myMesh.name == 'Logo'){

    // Texture

    var texture = new THREE.TextureLoader().load('img/logoTesla_Verre_green.jpg', function(){
        texture.needUpdate = true;

        // Material

        var material = new THREE.MeshLambertMaterial( {map: texture, morphTargets: true} );
        material.needUpdate = true;

        // Geometry Cube

        var geometry = new THREE.BoxGeometry( 40, 40, 40 );

        // Cube 

        var cube = new THREE.Mesh( geometry, material);
        scene.add(cube);

        // Duplicate logo mesh for testing 

        var newGeometry = myMesh.geometry;
        var newMesh = new THREE.Mesh( newGeometry, material);
        newMesh.position.y = 100;
        newMesh.geometry.uvsNeedUpdate = true;
        scene.add(newMesh);
    });
}

我的问题是:我应该使用geometry.attributes.uv对象来映射我的纹理吗?如果是,该怎么做?

或者我应该将这些UV坐标转换为geometry.faceVertexUvs ???

[请帮助我,我完全迷失了:)

我目前正在使用3D配置器。因此,我应该能够在通常已经具有UV坐标的FBX对象上导入徽标。问题是:自3天前以来,我一直在努力,尝试...

javascript three.js
2个回答
0
投票

没关系,已经通过再次导出.fbx解决了该问题。现在,映射工作正常!


0
投票

谢谢您的问题和答案。我遇到了同样的问题,我导入的自定义FBX仅将画布的左下像素作为整个网格的颜色。 (我当时使用texture = new THREE.CanvasTexture(ctx.canvas);来获取纹理)。

© www.soinside.com 2019 - 2024. All rights reserved.