我刚刚开始使用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);
});
}
但是我如何检测强度?