簡體   English   中英

如何將3D對象表面平坦化為2D陣列?

[英]How to flatten 3D object surface into 2D array?

我有3D對象,表示為numpy數組。 如何展開此類對象的“表面”以獲得值的二維圖(我不在乎內部值)?

它類似於展開地球儀的表面,但形狀因情況而異。 在此處輸入圖片說明

這是一個頂點問題。 模型上的每個三角形都是可以映射到2D平面的平面。 因此,沒有任何假定結構的最幼稚的解決方案是:

for triangle in mesh:
    // project to plane defined by normal to avoid stretching

這種解決方案並不理想,因為它會將所有uv放在彼此的頂部。 下一步將散布三角形以填充一定的空間。 這是布局階段,用於定義如何在2D空間中對頂點進行布局。

通常,理想的是將UV放置在一個單位平方內。 這允許從單個圖像輕松進行UV映射。

選項:2

用已知的2D映射形狀圍繞對象,然后根據其法線將每個三角形投影到該形狀上。 這提供了在結構化的庄園中展開uv的機制。 一個示例對象將是投影到多維數據集上。

選項:3

查閱學術論文和像Blender這樣的開源庫/工具: https ://wiki.blender.org/index.php/Doc:2.4/Manual/Textures/Mapping/UV/Unwrapping

blender使用上述方法解開任意幾何圖形。 如攪拌器展開頁面所述,還有其他方法可以完成此操作。 Blender的好處是您可以參考源代碼來實現uv unwrap方法。

希望這會有所幫助。

暫無
暫無

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

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