【问题标题】:Three.js texture model not applying properly across objectThree.js 纹理模型未在对象之间正确应用
【发布时间】:2016-05-13 18:12:52
【问题描述】:

我有一个冲浪板 obj 文件,我想在顶面和底面应用纹理,但是当我想将它应用到整个面部时,纹理会在中间分裂。材料也被应用在网格的内部。问题与模型有关还是我错过了代码中的某些内容?

var loader = new THREE.OBJLoader();

    var texture = new THREE.Texture();
    var ImageLoader = new THREE.ImageLoader();
    ImageLoader.load("models/white.jpg", function (image) {
        texture.image = image;
        texture.needsUpdate = true;
    });

    var custom = new THREE.Texture();
    var customLoader = new THREE.ImageLoader();
    customLoader.load("models/UV_Grid_Sm.jpg", function(image) {
        custom.image = image;
        custom.mapping = THREE.UVMapping;
        custom.needsUpdate = true;
    });


    loader.load("models/Hidden 5'4-19'5-2 (Holes_Patched).obj", function(object){
        object.traverse(function(child) {

            if (child instanceof THREE.Mesh) {

                if(child.name === 'Bottom') {
                    child.material = new THREE.MeshStandardMaterial({ map: custom});

                }
                else if(child.name === 'Top') {
                    child.material = new THREE.MeshStandardMaterial({ map: custom});

                }
                else  {
                    child.material = new THREE.MeshStandardMaterial({ map: texture});

                }
            }

        });

download obj file here 该对象有两个名为“Top”的组,但我可以稍后更改。

【问题讨论】:

  • 你的3d模型的uv不合适,用blender等3d软件更新uv

标签: javascript three.js


【解决方案1】:

您需要在模型上添加/设置 UV 坐标。这需要在 3d 软件(例如 3DS Max)中完成。
此外,您应该通过删除不需要的边缘和顶点(134,000 个顶点??)来真正清理/优化您的模型

【讨论】:

  • 我希望它保留在 obj 文件中,因为 OBJLoader 使用了该文件格式。是否可以将UV从3DS导出到obj?
  • 导出时UV坐标将在.obj文件中。是的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 2019-11-24
  • 2017-07-25
  • 1970-01-01
  • 2020-07-23
  • 2014-04-03
  • 2016-11-25
相关资源
最近更新 更多