代码之家  ›  专栏  ›  技术社区  ›  B''H Bi'ezras -- Boruch Hashem

三.JSGLTFLoader,使用工作灯光加载搅拌机场景

  •  3
  • B''H Bi'ezras -- Boruch Hashem  · 技术社区  · 7 年前

    我刚开始测试GLTFLoader三.js新的搅拌机出口商 here ,我可以添加一个具有(至少相同颜色)材质的模型,当我将导入的场景添加到三.js场景中,网格被很好地导入,当我将其记录到控制台时,我也会看到从默认混合器场景导入的摄影机和灯光。

    但是,我不得不手动添加三.js光线可以看到任何东西,所以看起来导入的光线只能被识别为3D对象。有没有什么方法可以自动让导入的灯光工作,或者您必须通过编程添加灯光三.js导入的“灯光”对象位置的灯光?如果是这样的话,有没有一种方法来匹配搅拌机的太阳光和聚光灯,让它们朝向正确的方向?或者有什么内在的方法可以做到这一点?

    顺便说一句,这是我到目前为止的代码(仍然没有添加所有灯光支持):

    function automaticallyAddLightsTo(inputScene) {
                inputScene.children.forEach((x) => {
                    var light = new THREE.DirectionalLight( 0xffffff, 0),//placeholder
                        isActuallyALight = false;
                    if(x.name.includes("Sun")) {
                        light = new THREE.DirectionalLight( 0xffffff, 1);
                        isActuallyALight = true;
                    } else if(x.name.includes("Point")) {
                        light = newTHREE.PointLight( 0xffffff, 1, 100);
                        isActuallyALight = true;
                    } //etc for other lights
                    light.position.copy(x.position);
                    light.rotation.copy(x.rotation);
                    light.scale.copy(x.scale);
                    light.quaternion.copy(x.quaternion);
                    if(isActuallyALight)    
                        s.add(light);
                });
            }
    

    0 回复  |  直到 7 年前
        1
  •  0
  •   vascorola    5 年前

    renderer.physicallyCorrectLights = true;