簡體   English   中英

iOS SceneKit 中的紋理接縫

[英]Texture seam in iOS SceneKit

我在 SceneKit 中應用於球體的紋理中出現間歇性接縫。 它總是在球體的“背面”,紋理的兩條邊在那里相遇。 看起來紋理與自身並沒有完全聯系,您可以通過細線看到背景。 該問題似乎存在於所有設備和所有最新的 iOS 版本中。 我的實驗表明紋理的分辨率似乎是一個因素,但我還沒有確切地確定這種影響是什么。

為了清楚起見,我附上了一張屏幕截圖來說明,在白色背景上,但接縫本身並不是白色的,它只是允許背景顯示出來:

星球接縫

有誰知道為什么 SceneKit 會以這種方式渲染紋理? 我有一個相當簡單的實現,只需創建一個球體和一個材質,然后對其應用漫反射和法線貼圖。 這是我的代碼:

// create planet
SCNNode *baseNode = [SCNNode node];
[baseNode setName:name];

// Planet
SCNSphere *planet = [SCNSphere sphereWithRadius:5];
SCNNode *planetNode = [SCNNode nodeWithGeometry:planet];
[planetNode setName:@"planetNode"];
[baseNode addChildNode:planetNode];

SCNMaterial *material = [SCNMaterial material];
material.shininess = 1;
material.normal.intensity = 0.5;
material.normal.contents = normalMap;
material.diffuse.contents = diffuseMap;

planetNode.geometry.materials = @[material];

有沒有人有任何可能導致這種“接縫”出現的經驗,以及我如何擺脫它? 我的貼圖一般是 1000x500 或 2048x1024,視情況而定,並且在兩種分辨率下都出現了接縫。 SceneKit 紋理是否有理想的分辨率,或者可能導致這種行為的眾所周知的東西?

答案最終令人沮喪地簡單:出於質量原因,我正在重新縮放紋理,而這條線是分數分辨率的結果,例如 1025.25f * 2048.5f。

在縮放紋理之前將值四舍五入為 int 修復了問題。

暫無
暫無

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

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