UE4源碼剖析之Distance Cull

距離剔除

概述

  1. 距離剔除方法基本原理:根據Actor距離攝像機的距離來渲染或不渲染Actor。
  2. 距離剔除類型:按Actor距離進行剔除,距離剔除體積。
  1. 按Actor距離進行剔除:
  • 關卡中的每個Actor都有自己的繪製距離設置,可以使用“Detail面板”->“LOD”->“Min Draw Distance”和“Desired Max Draw Distance”進行設置。
  • Min Draw Distance表示在不再渲染Actor之前能夠接近Actor的最近距離。
  • Desired Max Draw Distance表示不再渲染Actor之前能夠遠離Actor的最遠距離。

uploading.4e448015.gif正在上傳…重新上傳取消

  1. 剔除距離體積:
  • “剔除距離體積”使用一個距離和大小數組來設置進入體積後是否渲染Actor
  • 這些體積可存儲任意數量的“size”和“distance”組合(剔除距離對)。這些剔除距離對會被映射到Actor(沿其最長有效維度)的邊界,然後指定給關卡中的該Actor實例
  • 該剔除方法是包含某種類型的建築物或結構的大型戶外關卡的理想選擇,這些建築物或結構擁有細節豐富的內部設計,需要剔除體積過小而在遠距離處並不重要的對象
  • Size和CullDistance含義:
  1. 該體積中大小最接近Size單位的對象會在它們距攝像機CullDistance單位或更遠時被從視野中剔除。
  2. 當CullDistance爲0,時表示,該體積中大小最接近 Size單位的對象將永不會被剔除。這可以確保尺寸極大的對象被視爲無窮大,這意味着它們距攝像機的距離永不可能遠到應將它們剔除的程度。

實現原理

Rendering->LOD->MinDraawDistance,Desired Max Draw Distance,Current Maximum Draw Distance

主要影響參數位置:

uploading.4e448015.gif轉存失敗重新上傳取消

 

 

I

 

重要修改參數

性能結果參數

使用步驟

  1. 通過編輯器中的“Modes”面板向關卡中添加“Cull Distance Volume”,並且可以縮放它,以適應關卡需求。

uploading.4e448015.gif轉存失敗重新上傳取消

  1. 選中“Cull Distance Volume”之後,使用“Details”面板訪問“Cull Distance”對數組。每個“Cull Distance”對都包含“Size”和“Cull Distance”數值。單擊“+”可向數組元素列表底部添加新Cull Distance對。

uploading.4e448015.gif轉存失敗重新上傳取消

  1. 插入,刪除,賦值剔除距離對:

uploading.4e448015.gif轉存失敗重新上傳取消

注意事項

  1. 剔除距離體積對於優化包含精細內部空間的大型室外關卡非常有用。當室內空間小到可被視爲不重要時,可以剔除它們。
  2. 添加更多對數值並且進行更多測試將有助於改善出現的“突然出現”問題。
  1. 在關卡視口的“Game”視圖下在關卡中四處移動,以查看對象是否存在任何可見的“突然出現”。
  1. 通常使用單個剔除距離體積覆蓋整個關卡。
  1. 包含可代表關卡中大部分Actor的多種剔除距離對。
  2. 設置剔除距離對時,可先從較大尺寸和距離開始,以瞭解你希望使用的上限和下限。
  3. 對於體積中的區域,你可以使用額外的剔除距離體積實現對剔除的額外的更加激進的控制。
  1. 剔除距離對組僅在低於個體Actor的 最大繪製距離 時纔會被使用。
  2. 如果某些Actor應永不被剔除距離體積剔除,應該使用該Actor的“Details”面板並禁用“Allow Cull Distance Volume”。
  1. 如果需要爲大量Actor禁用此選項,可以考慮使用最後一個剔除距離對作爲“過大不應剔除距離”數值(Size的數值很大,Cull Distance爲 0)。這可以防止高山或建築物等非常大的對象被剔除。

實驗結果

未完待續!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章