2016-03-19 3 views
1

最初の6枚の低品質画像がロードされてキューブマップに表示されるキューブマップを使用してパノラマを表示しようとしています。これは簡単に行うことができますTHREE.js:Cubemapの1つの顔のみの画像を変更しますか?

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); 

次に、高品質の6イメージが読み込まれます。 私がここでやろうとしているのは、高画質の画像が読み込まれると直ちに低画質の画像に置き換えられ、高品質の画像が1つずつ適用されるということです。 loadTextureCubeを毎回使用することはオプションですが、キューブフェースを交換するより直接的な方法はありますか?

答えて

1

あなたはスカイボックス画像を変更したいと思います。

CubeTextureを新規にロードしてください。

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

次に、スカイボックスに新しいテクスチャを割り当てます。古いテクスチャが適切に処分されていることを確認するためのコンソールへの

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

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

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

タイプrenderer.info

three.js r.76

+0

高画質の画像を変更するたびに6回これを行う必要がありますか? – Parth

+0

提案されているとおり、6つすべてを一度に更新してください。 – WestLangley

+0

私の質問はあまり明確でないかもしれないと思います。私はすでに一度に6枚の画像をすべて更新しています。 6枚の顔画像には低速のネットワークで読み込むのに時間がかかるので、5枚の顔が既に読み込まれていて、1枚だけが読み込まれる可能性があります。だから、最後のものを待つ理由は、5つの高品質の顔を直ちに適用し、ロードした後に最後のものを適用することができるからです。 – Parth

関連する問題