我想顯示圍繞SceneKit
範圍內球體上的一個點放置的一些對象,但在對象配置方面存在一些問題。在場景中配置SCNNode
的主要思想是使相機定位在中心(0,0,0)和所有對象將被配置用於圍繞球形座標系統,所以一旦我把一些圖像球形系統對象周圍,我將旋轉相機圍繞某些軸來查看選定空間部分中的對象。
我開始嘗試做什麼 - 我想創建空的SCNScene
,添加燈光,讀取.dae
文件和配置對象。
但現在我不明白我在哪裏錯了 - 當我試圖改變任何財產SCNNode
- 沒有實際改變。 此外,我需要把zFar
相機陌生的大值 - 10000 - 要能夠看到物體(我用allowsCameraControl
設置好的來YES
現在能夠旋轉OBJ)
其實代碼:
SCNScene *scene = [SCNScene scene]; //main scene
SCNNode *cameraNode = [SCNNode node];
cameraNode.camera = [SCNCamera camera];
cameraNode.camera.zFar = 10000; //only with this value i can see my obj
cameraNode.position = SCNVector3Make(0, 0, 0); //position in the center
[scene.rootNode addChildNode:cameraNode];
// create and add a light to the scene
SCNNode *lightNode = [SCNNode node];
lightNode.light = [SCNLight light];
lightNode.light.type = SCNLightTypeOmni;
lightNode.position = SCNVector3Make(0, 10, 10);
[scene.rootNode addChildNode:lightNode];
// create and add an ambient light to the scene
SCNNode *ambientLightNode = [SCNNode node];
ambientLightNode.light = [SCNLight light];
ambientLightNode.light.type = SCNLightTypeAmbient;
ambientLightNode.light.color = [UIColor darkGrayColor];
[scene.rootNode addChildNode:ambientLightNode];
SCNScene *objScene = [SCNScene sceneNamed:@"art.scnassets/file.dae"];
SCNMaterial *material = [SCNMaterial material];
material.diffuse.contents = [UIImage imageNamed:@"art.scnassets/texture.png"];
material.locksAmbientWithDiffuse = true;
SCNNode *node = [objScene.rootNode childNodeWithName:@"obj" recursively:YES];
node.geometry.firstMaterial = material;
//try next:
// node.position = SCNVector3Make(0, 0, 0);
// node.presentationNode.position = SCNVector3Make(0, 0, 0); -> should't be modified as explainde by Apple devs - "The effect of attempting to modify the returned node in any way is undefined"
// node.transform = SCNMatrix4MakeScale(0.5, 0.5, 0.5);
// node.scale = SCNVector3Make(0.1, 0.1, 0.1);
[scene.rootNode addChildNode:node];
有什麼建議嗎?也許我想念一些東西 - 不是很熟悉SceneKit
。 附加說明 - 我在.dae
文件中也有一些骨骼動畫。
如何更改SCNNode的位置,縮放,旋轉(SCNNode的屬性實際上什麼都沒有改變)?
你看到了什麼?你要看什麼?截圖會有所幫助。 –
@HalMueller我看到完整的對象,如果我平移屏幕 - 這意味着如果我應用標準攝像機修改('allowedCameraControl = YES;'),開始時我只看到對象的一部分 - 所以它與啓動fov有點不對齊。我希望看到它被放大的對象,或者如果我改變直方圖位置或比例或任何其他對象,可以在空間中移動的對象。但正如我上面所描述的,我只能看到obj的一部分,在移動時我注意到所有對象。另外:當我嘗試用'pauseAnimationForKey:'方法暫停動畫時,它是沒有效果的,但是使用'.presentationNode.paused = YES' - 這是行得通的。 – gbk