2016-03-19 13 views
1

Ich versuche ein Panorama mit Cubemaps zu zeigen, wo die ersten 6 Bilder niedriger Qualität geladen und auf der Cubemap angezeigt werden. Dies ist leicht unter VerwendungTHREE.js: Bild von nur einem Gesicht in Cubemap ändern?

var urls = [ 
'path/to/low-q-pos-x.png', 
'path/to/low-q-neg-x.png', 
'path/to/low-q-pos-y.png', 
'path/to/low-q-neg-y.png', 
'path/to/low-q-pos-z.png', 
'path/to/low-q-neg-z.png' 
], 

cubemap = THREE.ImageUtils.loadTextureCube(urls); 

Als nächstes werden die höheren Qualität 6 Bilder geladen. Was ich versuche, ist hier, dass sobald ein Bild mit höherer Qualität geladen wird, es das Bild mit niedrigerer Qualität ersetzen sollte, und so die Bilder mit höherer Qualität nacheinander angewendet werden. Die Verwendung von loadTextureCube ist immer eine Option, aber gibt es eine direktere Möglichkeit, Würfelflächen zu ersetzen?

Antwort

1

Sie möchten Ihre Skybox-Bilder ändern.

Laden Sie eine neue CubeTexture.

var newTexture = new THREE.CubeTextureLoader().load(urls, onLoadCallback); 

Dann, in Ihrem Callback, zuweisen Sie Ihre Skybox die neue Textur.

var oldTexture = skybox.material.uniforms.tCube.value; 

skybox.material.uniforms.tCube.value = null; 
oldTexture.dispose(); // important! 

skybox.material.uniforms.tCube.value = newTexture; 

Typ renderer.info in die Konsole um sicherzustellen, dass Ihre alte Texturen ordnungsgemäß entsorgt werden. So

three.js r.76

+0

, ich werde diese 6-mal zu tun haben, für jede Änderung in hoher Bildqualität? – Parth

+0

Alle 6 auf einmal aktualisieren, wie vorgeschlagen. – WestLangley

+0

Ich denke, dass meine Frage nicht sehr klar ist. Ich aktualisiere bereits alle 6 Bilder gleichzeitig. Da die 6 Gesichtsbilder einige Zeit benötigen, um in langsamen Netzwerken geladen zu werden, ist es möglich, dass 5 Gesichter bereits geladen sind und nur eine Zeit zum Laden benötigt wird. Also, warum warten Sie auf die letzte, wenn ich die 5 hochwertigen Gesichter sofort anwenden und die letzte anwenden kann, nachdem sie geladen ist. – Parth