簡體   English   中英

克隆節點和性能、幾何和性能; IOS場景包

[英]Cloning nodes and performance, geometry, and performance; IOS Scenekit

我正在使用 Scenekit 編寫一個應用程序,客戶端希望在 IOS 中推動動畫的極限。 這個特定的應用程序要求我將超過 1,500 次重繪推到屏幕上。即使有這么多重繪,我也將 FPS 鎖定為 60,這很好,但是當我添加客戶想要的所有元素時,重繪被推到 7,500 次重繪(是的,這不是錯誤或笑話,這是重繪次數,盡管它幾乎是我在 Scenekit 中看到的大多數重繪次數的 50-80 倍)。在這種重繪級別, 屏幕包含 170 萬個頂點和大約 800k 個多邊形。這是很多東西,這個應用程序對任何人都有用的東西太多了,因為現在我的 FPS 下降到 15-30FPS,預計會超過 3K屏幕上的幾何元素。到目前為止我所做的:

  1. 我克隆了所有節點,克隆允許我突破 Scenekit 的極限。 我能夠在屏幕上放置超過 1.5k 個恆定 CAAnimations,並將超過 1.8k 個獨特的幾何圖形放置在屏幕的不同位置。

  2. 我通過循環遍歷所有窗口並將它們的 opaque 屬性設置為 yes 來強制應用程序中的所有窗口、視圖和屏幕都是不透明的。

問題是這樣,我可以處理性能問題,但是我遇到了節點克隆問題。 好吧,節點克隆有效,但問題是推送到屏幕的每個幾何體必須具有不同的大小,並且似乎無法更改每個單獨克隆的幾何體。 我知道我可以更改“復制”節點的幾何形狀(SCNNode *node = [masterNode copy];),並且我知道我可以更改克隆節點的材料屬性,但是有沒有辦法更改克隆節點? Apple 沒有提供任何有關更改幾何形狀的信息,但他們確實談到了更改材料。 我是否假設我無法更改克隆幾何體的大小? 我可以更改克隆的變換、樞軸、旋轉、動畫、位置等,但幾何體的大小不會改變。 出於我的目的,我只需要一個圓柱體的“高度”變量是可變的,我把其他一切都安排得井井有條,而且,沒有其他方法可以在沒有節點克隆的情況下將 2k 重繪推到屏幕上,我試過了沒有克隆和 FPS 下降到小於 10,只有 300 次重繪時,將每個幾何圖形和節點聲明為幾何圖形,因為它是自己的唯一變量。

最后,考慮到同樣的場景,從 Scenekit 遷移到 Metal 后,我應該期待多少性能提升。 我不擔心數學、細節水平、設置渲染管道的耗時操作或其他任何可能出現的問題,我只是想在這里為我的問題找到最佳解決方案,我”我還沒有使用過 Metal,因為我不確定考慮到需要多少多邊形、頂點和重繪,我會得到不同的結果。 謝謝。

有沒有辦法改變克隆節點的幾何形狀

我相信您可以更改烘焙幾何體本身,但不能更改參數幾何體(不是 SCNCylinder)。 所以你可以(改變高度):

  • 縮放節點
  • 更改轉換矩陣(因此也可以縮放,只是一種不同的方式)
  • 添加幾何着色器修改器,在您想要的軸上向上/向下移動點

改變實際的幾何形狀會破壞克隆的整個目的,所以我認為沒有辦法解決這個問題。

最后,考慮到同樣的場景,從 Scenekit 遷移到 Metal 后,我應該期待多少性能提升。

很多。 我所看到的大約 30%,但這同樣取決於您的設置。 Metal 隨 iOS 9 一起提供,您無需執行任何操作即可為您的場景獲取它,因此只需更新您的一台設備並在那里試用,看看是否有幫助!

出於好奇:你為什么需要這么多鋼瓶? 你不能欺騙他們的渲染方式嗎?

暫無
暫無

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

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