2012-10-13 22 views
3

是否有可能在three.js所創建透明/隱形飛機,它可以接受陰影?我的目標是在沒有背景的3d畫布上繪製一些對象(這樣我可以看到畫布元素後面的網頁)。我想讓物體在背景上投下陰影,我想,如果我能製作一個可以看到的平面,那麼網頁背景仍然可見。在飛機上投射陰影,看起來陰影在網頁上。 現在我可以製作一個不透明度爲0.5(或類似)的白色平面,但這種方式可以看到飛機。理想情況下,飛機應該是完全無形的(陰影除外)。three.js所:投下陰影到某個網頁

編輯:我創建了一個所示例(基於this):http://jsfiddle.net/s5YGu/2/

這裏我有不透明度0.5,但你可以看到飛機。如果我將不透明度設置爲0,那麼整個平面和陰影都會消失。

回答

5

我因黑客行爲上基本着色器進行這項工作,這裏的工作shader代碼http://pastie.org/5088640

它沒有缺點據我所知,像不透明度:0.1

+0

這很完美,謝謝。 – timukasr

3

是的,你可以達到你想要的效果,它看起來至少在我的機器上還不錯。 :-)

這裏是一個小提琴:http://jsfiddle.net/ZXdV3/25/

有幾個問題。首先,您必須在渲染器構造函數args中設置alpha: true

其次,雖然我假設你想在飛機上是完全透明的,你就不得不接受material.opacity = 0.1,還是這樣。第三,如果你在網頁上放置一個畫布,並且你希望網頁是交互式的,你將不得不在畫布上隱藏指針事件(我不確定IE是否支持這個,儘管):container.style.pointerEvents = 'none';

three.js所r.67

+0

謝謝,這似乎工作。酷小提琴,順便說一句。 – timukasr