簡體   English   中英

如何使用Swift在SceneKit中調試自定義幾何體

[英]How to debug custom geometry in SceneKit with Swift

我正在嘗試學習如何在SceneKit中創建自定義幾何體。 但是,我試圖制作一個三角形並且它沒有顯示任何東西。 我不知道如何調試這個。 有沒有辦法弄清楚三角形是否有效? 我只是不知道從哪里開始。

作為參考,有問題的游樂場代碼如下。 請注意,它是針對Swift 4編寫的,但是Swift 3和Swift 4之間的變化非常小,以至於在Swift 3中編譯它是微不足道的。

import UIKit
import SceneKit

let points = [
    SCNVector3Make(0, 0, 0),
    SCNVector3Make(0, 10, 0),
    SCNVector3Make(10, 0, 0),
]
let indices = [
    0,2,1,
]

let vertexSource = SCNGeometrySource(vertices: points)
let element = SCNGeometryElement(indices: indices, primitiveType: .triangles)
let geo = SCNGeometry(sources: [vertexSource], elements: [element])

在創建自定義SCNGeometryElement時,索引的類型需要為Int16 1 我不認為這記錄在任何地方。 但是當你改變索引的聲明時也是如此

let indices: [Int16] = [
    0, 2, 1
]

應該出現三角形。


編輯

1:正如@mnuages所指出的,SceneKit僅支持32位整數作為索引。 所以你可以使用Int8Int16Int32

Int類型文檔中我們得到了

在32位平台上,Int與Int32的大小相同,在64位平台上,Int與Int64的大小相同。

所以在Swift游樂場你最終會得到Int64

這很不幸,因為SceneKit(和Metal)只支持UInt8UInt16UInt32 在調試器控制台中,您應該能夠看到SceneKit警告不支持的64位寬索引。

暫無
暫無

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

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