当加载具有材质的GLTF模型时,为什么我得到了一个黑色模型?

7
我期望的是:图片
我拥有的是:图片
var renderer = new THREE.WebGLRenderer();

renderer.setSize(1000, 1000);
renderer.setPixelRatio(window.devicePixelRatio);
const camera = new THREE.PerspectiveCamera(75, 1000 / 1000, 0.1, 1000)
camera.position.z = 0.5;

document.body.appendChild(renderer.domElement);

const scene = new THREE.Scene();
scene.background = new THREE.Color('white');

const gltfLoader = new THREE.GLTFLoader();
  const url = 'hub.glb';
  gltfLoader.load(url, (gltf) => {
    const root = gltf.scene;
    scene.add(root);

  });

var render = () => {   
    requestAnimationFrame(this.render);
  
    
    renderer.render(scene, camera);
}

render();

当我检查变量时,颜色材质已被设置并正确。
这是变量资源管理器:图片
谢谢!
1个回答

8

尝试向您的场景添加一些灯光:

const ambientLight = new THREE.AmbientLight( 0xffffff, 0.4 );
scene.add( ambientLight );

const dirLight = new THREE.DirectionalLight( 0xefefff, 1.5 );
dirLight.position.set( 10, 10, 10 );
scene.add( dirLight );

此外,加载glTF资源时,您应该像这样配置渲染器的输出编码:
renderer.outputEncoding = THREE.sRGBEncoding;

1
非常感谢,经过4个小时的努力,现在终于可以工作了!! - DimitriTimoz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接