簡體   English   中英

如何在SceneKit中制作平面鏡

[英]How to make a plane mirror in SceneKit

對於SCNFloor,如果將反射設置為1,並且ReflectionFallOffEnd足夠大,則它將像鏡子一樣。

我的問題是如何將其應用於其他幾何形狀(例如平面或盒子)? 因為我想在游戲中擁有一面鏡子。

我已經對如何使用Scenekit進行反射進行了大量研究。

這是我發現的不同線索(可悲的是,它們都需要大量的代碼和研究):

屏幕空間反射

優點:

  • 容易制作

缺點

  • 並不總是看起來很棒
  • 我不確定如何使用SCNTechnique輸出普通通行證

視差映射立方體貼圖

優點:

  • 看起來好贊

缺點

  • 除非使用圖像代理,否則沒有實時對象
  • 在線上沒有好的代碼示例,需要研究
  • 不太確定如何與SCNProgram一起使用

兩台相機+模具

優點:

  • 現實的
  • 即時的
  • 幾乎內置

缺點

  • 沒有有關pointOfView的pointOfView的文檔
  • 沒有有關模具的文檔
  • 需要渲染場景兩次

OpenGL鏡像

優點:

  • 實際上復制了幾何圖形,所以非常准確
  • 這是SCNFloor使用的技術(我認為)

缺點

  • 幾何形狀可以與鏡平面夾在一起(發生在SCNFloor中)
  • 在飛機上無法使用
  • 需要OpenGL代碼

4個相機鏈接到Cubemap

優點:

  • 易於設置
  • 即時的
  • 適用於任何物體
  • 在現代電子游戲中非常流行的技術

缺點

  • 我不知道這是否行得通
  • 單個鏡子需要將場景渲染5次
  • 根據對象不是很准確

我的結論是,在使用SCNTechnique方面我們需要更多幫助。 我們可以用它構建令人驚奇的東西,但是缺少文檔和示例是一個大問題。

如果您可以指定要使用的鏡子類型,我們將很樂意幫助您選擇最佳的走鏡方式。

我知道這是一個古老的問題,但是我想分享我所做的事情。 我在GitHub上創建了一個包含代碼的要點 ,並解釋了其工作原理。

它基本上將六個攝像頭附加到一個節點,並自動創建一個立方體貼圖,然后將其用作對象的反射特性。 主要缺點是它不適用於基於物理的材料,但是為了模擬粗糙度,它將立方貼圖模糊化為您將粗糙度屬性設置為的任意值。 實時效果很好,您可以設置立方體貼圖的更新速度,以免對游戲的幀率產生太大影響。 它還可以處理許多不同的反射對象,並自動停止更新看不到的節點。

當前在其他幾何類型上不支持此功能。 向蘋果提出請求

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM