我很好奇初始化和动画过程中的某些事情。我们可以改变诸如灯光和阴影之类的东西,并且我注意到如果我在初始点使用大值,开始时的fps就像地狱一样下降。所以我在动画过程中用一些代码进行了测试,当我每次循环逐步设置值时它将如何。我的意思是它就像它无论如何。 “程序”一直在我们的场景中循环所有的东西。Three.js灯光和阴影
但我问过自己是“它是一个场景的设置?真不如”
你说什么?你是否知道是否有任何复杂的场景发生,像这样,然后又不更新像这样的值?我的意思是在创业时,不是像我们只呈现我们所看到的游戏,而不是那种场景中的东西。
我也很好奇,你怎么可以/会工作了这一点:在初始化
var cam, light, d, rend;
var ambLone = 0x444444,
ambLoneI = 0.2,
ambLtwo = 0x666666,
ambLtwoI = 0.5,
lC = 0xdfebff,
lN = 2.75,
lF = 1000,
lightPx = 700,
lightPy = 500,
lightPz = 500,
lightSCmin = 1,
lightSCmax = 1000,
lightSCF = 100,
lightSCN = lightSCmin;
(); - >
scenes.add(new THREE.AmbientLight(ambLone, ambLoneI));
scenes.add(new THREE.AmbientLight(ambLtwo, ambLtwoI));
light = new THREE.DirectionalLight(lC, lN, lF);
light.position.set(lightPx, lightPy, lightPz);
light.position.multiplyScalar(1.3);
light.castShadow = true;
light.shadow.mapSize.width = 1024;
light.shadow.mapSize.height = 1024;
d = 1000;
light.shadow.camera.left = - d;
light.shadow.camera.right = d;
light.shadow.camera.top = d;
light.shadow.camera.bottom = - d;
light.shadow.camera.far = lightSCF;
light.shadow.camera.near = lightSCN;
var helper = new THREE.CameraHelper(light.shadow.camera);
scenes.add(light, helper);
in animate(); - >
requestAnimationFrame(animate);
if (lightSCF === lightSCmax) {
lightSCF = 1000;
light.shadow.mapSize.width = 5120;
light.shadow.mapSize.height = 5120;
console.log('Light is set to: ' + lightSCF + light.shadow.mapSize.width);
} else if(lightSCF < lightSCmax){
lightSCF = lightSCF + 1;
light.shadow.mapSize.width = light.shadow.mapSize.width + 4.5;
light.shadow.mapSize.height = light.shadow.mapSize.width + 4.5;
light.shadow.camera.far = lightSCF;
light.shadow.camera.updateProjectionMatrix();
console.log('Light is now: ' + lightSCF + ' ' + light.shadow.mapSize.width);
} else {
console.log('whatever... ');
}
render();