THREE.JS GLTFLoader,载入带有可用灯光的Blender场景

6
我刚刚开始使用THREE.js的GLTFLoader和新的blender导出器here进行测试,我能够添加一个模型(至少是相同颜色的材料),当我将导入的场景添加到THREE.js场景中时,网格被很好地导入,并且当我在控制台上记录它时,我也看到了从默认的blender场景导入的相机和灯光。

但是,我必须手动添加一个THREE.js灯光才能看到任何东西,因此似乎导入的灯光仅被识别为3D对象。是否有一种自动使导入的灯光起作用的方法,或者您必须在导入的“灯光”对象的位置上编程添加THREE.js灯光?如果是这样,是否有一种方法来匹配来自blender的太阳光和点光,并使它们面向正确的方向?或者是否有一些内置方法可以实现这一点?

顺便说一句,这是我目前拥有的代码(尚未添加ALL lights支持):

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);
            });
        }

但是我如何检测强度?

2
你有成功实现这个吗?我也在尝试做同样的事情。 - Kim T
1个回答

1
也许这可以帮助你处理Blender灯光:

renderer.physicallyCorrectLights = true;

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