簡體   English   中英

細分級別> 0的SceneKit節點中不需要的偽像

[英]Unwanted artefacts in SceneKit nodes with subdivisionLevel > 0

好的,這的代碼很長很復雜,所以我將不得不仔細地描述這個問題。

想象一下,您是通過圍繞軸線車削一組點來創建3D對象的。 現在,您要為這些點生成球形紋理貼圖。 現在有一個困難的二分法:

如果創建一個完全循環的網格,其中最后一個點與第一個點相連,並且沒有兩個多邊形小面不共享的邊,則無法創建真正的球形貼圖。 這是因為頂點與紋理點的比例為1:1。 第一個構面的最左側頂點將需要映射為U值0; 最后一個構面的最右邊頂點將映射為1-但是這些頂點是相同的! 結果是,網格的一個部分從右到左都帶有大部分紋理貼圖,而所有其他部分都正確地從左到右貼圖。

紋理映射不正確

從理論上講,您可以通過復制第一組頂點來解決此問題,以使它們可以具有不同的紋理坐標,具體取決於它們所涉及的多邊形,但這會帶來另一個問題。 如果執行此操作並將細分級別應用到生成的幾何圖形,則會出現難看的折痕,並且紋理似乎嚴重變形。 在靜止圖像上不是很明顯,但是請看圖像的右下角。

討厭的“捏”

理想情況下,我希望能夠將紋理貼圖和細分應用於相同的網格,而不會遇到這些難看的效果。 有人有想法嗎?

細分模型中的折痕是復制這些頂點后的標准細分行為。 實際上,這就是我和許多其他3D建模人員所做的創建折痕的步驟(與場景工具箱支持的邊緣和頂點折痕選項相對)。 因此,即使您對它們“有害”,這也是預期的行為。

想象一下,您是通過圍繞軸線車削一組點來創建3D對象的。 現在,您要為這些點生成球形紋理貼圖。

我很難想象為什么要為圓環生成球面圖。 球形映射專門用於反射。

無論如何,問題不是細分或地圖,而是您使用共享頂點的事實。

但是這些是相同的頂點!

對。 您需要在SCNGeometry中提供唯一的頂點,而不是在基本重復紋理的位置添加額外的頂點。 這樣,細分將起作用,您可以按預期進行映射。

事實證明,我的問題實際上是我嘗試旋轉的輪廓中有一些多余的頂點,而這對於細分來說實在是太多了。 刪除這些后,細分看起來就很好-因此,在細分打包之前,模型上原始邊緣的復雜程度可能只是一個限制。

暫無
暫無

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

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