1

我正在尝试在运行时更改 .glb 对象的纹理。我正在使用three.js,它不会工作。

在这个例子中它必须工作...... http://necromanthus.com/Test/html5/sims_room.html

所以,我有这个对象:(glb export with embedded image)

现在我改变了纹理,发生了这样疯狂的事情: 换鞋后的鞋子

我不知道我能做什么。

这是加载 .glb 对象的代码:

var shoeFile = 'shoe.glb';
glbLoader.load('3d_models/' + shoeFile, function(geometry) {
  shoeObject = geometry.scene.children[0];
  scene.add(shoeObject);
}, onLoadProgress);

这是更改纹理的代码:

var textureLoader = new THREE.TextureLoader();
var remap = textureLoader.load( "3d_models/shoe.png" );

function setAnotherTexture( texture ) {
   scene.children[5].material.map = eval( texture );
}

我的代码是错误的还是有在搅拌机中导出另一个纹理的技巧?

希望有人可以帮助我。谢谢你。

4

1 回答 1

2

glTF 格式使用与 three.js 不同的纹理约定,并且texture.flipY必须设置为false(默认为true)。对于模型中包含的纹理,GLTFLoader 会自动执行此操作。在运行时更改纹理或添加新纹理时,必须在您的 JS 代码中完成:

texture.flipY = false;
mesh.material.map = texture;
于 2018-05-14T18:03:40.353 回答