問題是如果我使用此構造函數創建SCNGeometry
init(sources: [AnyObject], elements: [AnyObject]?)
下面是一個示例(這應該繪製一個立方體,取自此tutorial):對象不是使用三角形和座標的渲染/繪圖,SceneKit
func test()
{
var cubeSide:Float = 15.0;
var halfSide:Float = cubeSide/2;
var positions:[SCNVector3] = [
SCNVector3Make(-halfSide, -halfSide, halfSide),
SCNVector3Make(halfSide, -halfSide, halfSide),
SCNVector3Make(-halfSide, -halfSide, -halfSide),
SCNVector3Make(halfSide, -halfSide, -halfSide),
SCNVector3Make(-halfSide, halfSide, halfSide),
SCNVector3Make(halfSide, halfSide, halfSide),
SCNVector3Make(-halfSide, halfSide, -halfSide),
SCNVector3Make(halfSide, halfSide, -halfSide)
];
var indices:[Int] = [
0, 2, 1,
1, 2, 3,
// back
2, 6, 3,
3, 6, 7,
// left
0, 4, 2,
2, 4, 6,
// right
1, 3, 5,
3, 7, 5,
// front
0, 1, 4,
1, 5, 4,
// top
4, 5, 6,
5, 7, 6
];
var geometrySource = SCNGeometrySource(vertices: positions, count: 8)
var data = NSData(bytes: indices, length: sizeof(Int) * indices.count)
var element = SCNGeometryElement(data: data, primitiveType: SCNGeometryPrimitiveType.Triangles, primitiveCount: 12, bytesPerIndex: sizeof(Int))
var geometry = SCNGeometry(sources: [geometrySource], elements: [element])
geometry.materials?.first?.diffuse.contents = UIColor.redColor()
var node = SCNNode(geometry: geometry)
/*var cameraNode:SCNNode = SCNNode()
cameraNode.camera = SCNCamera()
cameraNode.position = SCNVector3Make(0, 12, 30);
self.rootNode.addChildNode(cameraNode);*/
self.rootNode.addChildNode(node)
}
如果我創建知名人物的幾何形狀,一切正常。代碼示例:
func showCone()
{
var radius:CGFloat = 1.0
let cone = SCNCone(topRadius: 0.1, bottomRadius: 3, height: 2)
cone.firstMaterial?.diffuse.contents = UIColor.redColor()
let coneNode = SCNNode(geometry: cone)
coneNode.position = SCNVector3(x: 4.0, y: 3.0, z: 20.0)
self.rootNode.addChildNode(coneNode)
}
我認爲這個問題是相機節點,但我已經做了很多改變操作並沒有什麼的。更改節點position
也沒有幫助。另外,如果我創建一個新的Xcode項目,它的部署目標是OS X,它就可以工作。但是我需要iOS的解決方案。
我的錯誤是什麼,我做錯了什麼?
最初我的問題是我無法從解析的.stl
文件中繪製3D模型。我認爲問題是解析,但後來我試圖使用原始類型 - 三角形和他們的位置繪製任何東西,並沒有奏效。
我改變類型UINT8,現在得到了EN錯誤 'C3DRendererContextSetupResidentMeshSourceAtLocation - 雙不支持'。順便說一句,沒有得到關於幫手的答案的第二部分,因爲如果我像你一樣寫,這只是一個編譯錯誤。 – prvit
位置和法線源應該從浮點數組中創建('[Float]')。至於方便的方法,請確保您使用的是最新的工具鏈(Xcode 7.0.1)。 – mnuages
非常感謝你,其實代碼是正確的,但我用Xcode 7.0版,更新後一切正常:) – prvit