15-20 nesne, 4 ışık içeren bir sahne var. İşlenecek parçanın özellikleriOptimal Bir statik sahne için Three.JS işlem süresi
function getRenderer(container, width, height) {
var renderer;
renderer = new THREE.WebGLRenderer({ alpha: false, antialias: true, preserveDrawingBuffer: false });
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(width, height);
container.appendChild(renderer.domElement);
renderer.shadowMapEnabled = true;
renderer.shadowMapType = THREE.PCFSoftShadowMap;
renderer.setClearColor(new THREE.Color(0xCCE0FF), 1);
renderer.gammaInput = true;
renderer.gammaOutput = true;
renderer.clear();
return renderer;
}
Her işlem döngüsüm, görüntüyü saniyede işler.
function renderLoop() {
this.renderer.render(this.scene, this.camera);
setTimeout(function() {
renderLoop();
}, 1000);
}
Karşılıklı sorun this.renderer.render(this.scene, this.camera)
sahne işlemek için yaklaşık 100 ms alıyor ama ben en az 30 fps kare hızına sahip olabilir, böylece aşağıda 33ms olmak istiyorum.
Oluşturucu performansını herhangi bir yolla (herhangi bir özelliği veya bir şeyi değiştirmek gibi) optimize etmenin bir yolu var mı?
Çalışma ortamım statik olduğundan ve karmaşık hesaplamalar içermediğinden, worker.js'yi kullanmak istemiyorum.
İlk requestAnimationFrame] (https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame) setTimeout yerine. İkinci olarak, [Geometry] yerine [BufferGeometry] (http://threejs.org/docs/#Reference/Core/BufferGeometry) kullanın (http://threejs.org/docs/#Reference/Core/Geometry) –
Başka bir ipucu geometrilerinizi birleştirmektir. –
Belki sadece görünür olanı oluşturmayı deneyebilirsiniz. Bunu gözden geçirin: [Fotoğraf makinesinin arkasındaki yüzlerin oluşturulmasını üç JJ devre dışı bırakın] (http://stackoverflow.com/questions/26056352/threejs-disable-rendering-of-faces-behind-the-camera) – leota