THREE.JS GLTFLoader,使用工作灯加载搅拌机场景

Posted

技术标签:

【中文标题】THREE.JS GLTFLoader,使用工作灯加载搅拌机场景【英文标题】:THREE.JS GLTFLoader, load blender scene WITH working lights 【发布时间】:2019-05-28 21:39:40 【问题描述】:

我刚刚开始使用新的搅拌机导出器here 测试来自 THREE.js 的 GLTFLoader,并且我能够添加具有(至少相同颜色)材质的模型,并且当我将导入的场景添加到THREE.js 场景,网格被很好地导入,当我将它记录到控制台时,我还看到了来自默认搅拌机场景的相机和灯光。

但是,我必须手动添加 THREE.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);
            );
        

但是如何检测强度?

【问题讨论】:

你有没有得到这个工作?尝试做同样的事情 【参考方案1】:

也许这对搅拌机灯有帮助​​:

renderer.physicallyCorrectLights = true;

【讨论】:

以上是关于THREE.JS GLTFLoader,使用工作灯加载搅拌机场景的主要内容,如果未能解决你的问题,请参考以下文章

如何让 GLTFLoader 在三个 js 中工作

导入 GLTFLoaders 的三个.js 问题

如何在three.js中使用gltf模型投射阴影?

Three.js 渲染glb,gltf模型(保姆级教程)

Three.js导入gltf模型和动画

从对象创建一个网格数组(THREE.JS 和 GLTF)