亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ThreeJS中帶反射的水

ThreeJS中帶反射的水

九州編程 2021-06-16 15:10:08
ThreeJS 中的“海洋”示例非常好,因為太陽反射在水面上,看起來很逼真。我正在嘗試復制這個,但我仍然需要理解代碼的一部分。海洋示例構造了一個 Water 對象和一個 Sky 對象。然后,它構造一個 CubeCamera 并使用這個相機的渲染目標作為場景的背景。至此,一目了然。代碼看起來像這樣,其中隱藏了很多細節(由我):scene = new Scene();water = new Water();sky = new Sky();scene.add( water );cubeCamera = new CubeCamera();scene.background = cubeCamera.renderTarget;cubeCamera.update( renderer, sky );除了最后一行,我可以理解所有內容: cubeCamera.update( renderer, sky );在 ThreeJS docs 中,它說 CubeCamera.update() 的最后一個參數必須是場景,而不是天空。我完全不明白為什么這個示例有效,因為 Sky 的方法與 Scene 的方法不同。然而,這行代碼似乎真的很重要,因為當我刪除它時,就沒有太陽了。有人可以啟發我并告訴我它為什么有效嗎?
查看完整描述

2 回答

?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

在 Three.js 中,場景只是Object3D. 它的不同之處僅在于它可以接受 a.background和一個.fog參數并相應地處理它。

一個空中包廂對象未在three.js所核心實現。它是一個示例特定的實現,可以作為用戶參考。如果你看一下實現,它只不過是一個Mesh帶有一個BoxGeometry和一個自定義著色器的材質。反過來,這也是一個Object3D.

盡管文檔說明了什么,您不需要cubeCamera在 .js上渲染場景,就像在任何 Three.js 項目中都不需要場景一樣。一切都可以用一個Object3D(您可能會遇到一些麻煩,但大多數情況下都是如此)

最后,這一切都取決于您要達到的目的。在本例中,cubeCamera用于模擬天空盒,它獨立于場景中的內容。

常見的用途是為場景中的對象創建環境貼圖。在這種情況下,使用實際場景來創建地圖是有意義的。檢查此示例背面的反射球。


查看完整回答
反對 回復 2021-06-18
  • 2 回答
  • 0 關注
  • 606 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號