2013-01-24 31 views
0

在我的項目中,向場景添加了cubeCamera以獲得動態envMapping(反射)。正如你所看到的,廚房的背面牆有倒影,並且有一些模糊,並且邊緣也沒有反鋸齒。那麼我怎樣才能擺脫破碎的線條並在牆上進行銳化反射?動態立方體反射鏡效果

代碼:

var cubeCamera = new THREE.CubeCamera(1, 1000, 256); 
cubeCamera.renderTarget.minFilter = THREE.LinearMipMapLinearFilter; 
scene.add(cubeCamera); 

var material = new THREE.MeshPhongMaterial({ 
       ambient: 0x996633, 
       reflectivity: 1, 
       color: 0x996633, 
       specular: 0x050505, 
       shininess: 100, 
       shading: THREE.SmoothShading, //THREE.FlatShading, 
       blending: THREE.NormalBlending, 
       side: THREE.DoubleSide, 
       envMap: project.cubeCamera.renderTarget, 
       wireframe: false 
      }); 

objMesh.material = material; 

在渲染功能:

objMesh.visible = false; 
objMesh.cubeCamera.updateCubeMap(renderer, scene); 
objMesh.visible = true; 

renderer.render(scene, camera); 

所以代碼就像在網絡上找到的每個樣品。沒有不同。但我發現的一件事是,對基元的反思是完美的,但是從obj文件加載的自定義網格的反思很差。

Screenshot

+0

沒有看到代碼,誰知道?但我會做不同的事情。使「鏡子」部分透明,並在另一側與本房間相反的房間添加一個房間。 「反射」將是完美的 - 除了相機不會看到它自己的反射,這是一件好事。 :-) – WestLangley

+0

另一個房間無法添加,因爲此項目對於最終用戶而言是高度互動的。可以添加新的傢俱,創建新的場景等...我用代碼片段更新了問題。主要問題是,如果我在場景中添加球體並將envMap設置爲同一個立方體相機的renderTarget(更新球場的位置),那麼球體將完美地反射場景。但是,如果反射幾何是從obj文件加載的自定義對象,則不會發生同樣的事情... – Tezcan

+0

另一個可能是bug的問題。對球形物體的反射是完美的,同時將相機移動到場景中,反射的紋理就像它應該的那樣縮放。但是當我們將反射添加到像立方體這樣的平坦表面幾何圖形時,反射比例總是不變的。我的意思是,當我們將相機從場景中移開時,反射紋理不會縮放。 – Tezcan

回答

0

環境映射是基於這樣的假設環境是無窮遠,這是不是在你的情況下有效的近似。因此,你會看到你不喜歡的文物。

如果將立方相機的分辨率加倍,則可能會減少斷邊效果。