代码之家  ›  专栏  ›  技术社区  ›  reppair

如何动态更改GLTF模型的纹理?

  •  4
  • reppair  · 技术社区  · 8 年前

    在我的场景中,我加载了一个。gltf模型,它被渲染得很好。。它有一个。在三维模型表面上渲染的png纹理。可以通过编程方式交换纹理吗?我正在使用aframe(a-asset-item和a-entity来加载gltf资产)

    1 回复  |  直到 8 年前
        1
  •  9
  •   Don McCurdy    8 年前

    在一个或三个框架中加载模型后。js,以前是什么格式并不重要 1. . 对于A-Frame,可以在加载后使用JS修改模型。

    var tex = new THREE.TextureLoader().load('diffuse.png');
    tex.flipY = false; // for glTF models.
    
    el.addEventListener('model-loaded', function (e {
      e.detail.model.traverse(function(node) {
        if (node.isMesh) node.material.map = tex;
      });
    });
    

    查看上的文档 THREE.MeshStandardMaterial 了解要编辑的属性,尽管这可能因加载的模型而异。

    1. 一个例外是 tex.flipY=false 设置在上面–您(可能)只需要glTF,其中UV的方向与三个方向不同。js默认值。