gpt4 book ai didi

javascript - ThreeJS GLTFLoader Material 数组

转载 作者:行者123 更新时间:2023-12-02 22:56:11 25 4
gpt4 key购买 nike

我正在尝试使用 GLTFLoader 加载模型,并使用 Material 数组为对象(立方体)的每个面应用不同的颜色。但这不起作用。

            var materials = [ new THREE.MeshPhongMaterial( {color: 0x552811,specular: 0x222222,shininess: 25}),
new THREE.MeshPhongMaterial( {color: 0x552811,specular: 0x222222,shininess: 25})];

loader = new GLTFLoader();
loader.load( "./Model/cube.glb", function ( gltf ) {
var geometry = gltf.scene.children[ 2 ].geometry;
mesh = new THREE.Mesh( geometry, materials );
scene.add( mesh );
} );

如果我将 Material 数组更改为单个 Material 对象,它就会起作用,就像

     mesh = new THREE.Mesh( geometry, materials[0] );

我认为问题在于为网格 Material 提供数组,但如果手动创建网格并将数组作为 Material ,那么它也可以工作。

var geometry = new THREE.BoxBufferGeometry( 10, 10, 10 );
var mesh = new THREE.Mesh( geometry,materials);
scene.add(mesh);

仅当使用 GLTFLoader 加载网格并尝试应用 Material 数组时才会出现问题。 OBJLoader 也发生同样的情况。可能是什么问题呢。

最佳答案

使用 BoxBufferGeometry 时,生成的几何图形自动具有 groups数据定义,这是使用多种 Material 的前提。我高度假设加载 cube.glb 产生的几何体没有任何组,因此不可能应用多种 Material 。

三.js R108

关于javascript - ThreeJS GLTFLoader Material 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57968784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com