簡體   English   中英

Scenekit:SCNNode八叉樹/四叉樹與根級別的所有性能

[英]Scenekit: Performance of SCNNode octrees/quadtrees vs all in root level

為了在SceneKit游戲中表示地形,我在層次結構中構造了大約20k個SCNNode,類似於八叉樹或四叉樹。 這棵樹不平衡 - 有些分支比其他分支有更好的(* n) - 格蘭德。

對於物理,渲染,添加/刪除節點等而言,SceneKit花費多少時間來獲取單個SCNNode,而不是它們在根級別是否持平? 為了迭代或執行隨機訪問,它是否需要做很多額外的工作來遍歷樹的整個高度,還是只是不是一個重要的開銷? (也許它足夠聰明,可以提前自己構建節點?)

我不是在問理圖形引擎理論上如何處理這個問題。 我問的是SceneKit究竟做了什么。

編輯:以防它讓人們回答這個問題......我不需要確切的數字表明SceneKit花了多少時間,顯然這依賴於設備依賴。 我只是想知道它是否是一個很大比例的時間。 有沒有人有嘗試這兩種方法和比較的經驗,或者從一個方法轉換到另一個方面並注意到是否存在顯着差異?

謝謝你的幫助。

我也在調查這個,因為我的場景開始收集大量的節點,但這是我的看法:

當你調用node.childNode(withName:String,遞歸:true)時,這意味着實現使用某種形式的平衡或非平衡樹,在二叉樹,ab樹b +樹之間選擇(在一個節點有一個節點的情況下)多個子節點超過某個閾值),你最終會得到一個log | n | 復雜性取決於您是要插入刪除還是搜索樹結構。 AVL樹通常將最常用的節點保持在層次結構中,因此您可以減少計算量。

只要查看四叉樹或R樹結構,它們也可能有log | n | 因為我們正在談論進入根象限的迭代子象限,所以復雜性。

了解您在子節點方面獲得的實際結構以了解最佳策略,這將是一件好事。

在旁注中,是什么促使您的地形有20 k ndoes? a您是否在地形上為每個貝塞爾曲線點或頂點附加一個節點以進行某些變形?

暫無
暫無

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

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