2015-12-30 38 views
1

質地當使用相機立方體人們通常將材料的envMap到cubeCamera.renderTarget,如:three.js所創建cubecamera

var myMaterial = new THREE.MeshBasicMaterial({color:0xffffff, 
     envMap: myCubeCamera.renderTarget, 
     side: THREE.DoubleSide}); 

這對於那些爲了反映或折射網格的偉大工程立方體相機看到的東西。不過,我想簡單地創建一個紋理並將其應用於我的網格。換句話說,我不希望我的對象反映或折射。我希望臉部法線被忽略。

我嘗試使用THREE.WebGLRenderTarget,但它不會處理立方相機。顯然,使用WebGLRenderTarget的單鏡頭攝像機並不能給我一個360度的紋理。

最後,簡單地將cubeCamera.renderTarget分配給材質的'map'屬性也不起作用。

是否有可能做我想要的東西?

r73。

回答

0

答案是:在材料上設置refractionRatio爲1.0。因爲沒有折射發生,所以面部法線被忽略。

在正常情況下,多維數碼相機與網格位於同一場景中,這是毫無意義的,因爲網格不可見。但是在立方體相機正在尋找不同場景的情況下,這是一個有用的功能。

1

編輯:這不是問題的作者正在尋找,我會繼續我的回答如下別人

你envmap已經紋理,所以沒有必要申請它作爲一個地圖。另外,立方體貼圖和紋理在結構上是不同的,所以它們將不可能交換,或者如果您成功實現這一點,結果並非您可能期望的結果。

我明白你要求你想要一個靜態的envmap而不是在每一幀更新,如果是這樣的話,不要在你的渲染函數中運行myCubeCamera.updateCubeMap()。取而代之的是將其置於場景初始化的最後,並使用所需的立方體相機位置,envmap將只顯示該幀。

見下面的例子:

+0

我不想要一個靜態的envmap。我想要一個每幀更新的紋理。我只想要一個不是反射或折射的紋理。我希望臉部的法線被忽略。有沒有什麼辦法從cubeCamera中提取紋理? –

+0

嗯,我仍然沒有得到你想在這裏實現什麼,你想轉換[立方體地圖到equirectangular圖像](http://stackoverflow.com/questions/11504584/cubic-to-equirectangular-投影算法)?如果是這種情況,我可以肯定地告訴你cubecamera僅僅是6個帶有WebGLRenderTarget調用的相機,你可以嘗試構建你自己的,這樣你就可以對每個人臉進行更細粒度的控制,並且你可以手動地提取邊,然後將它們重新排列在飛機/臉上。如果那不是我將球傳給其他人之後的事情。 – MacK