更改 SCNScene 比例

Change SCNScene scale

我正在尝试使用 SCNNode 缩小我的对象这是我的代码:

 SCNScene * scene = [SCNScene sceneNamed:@"ship.dae"];
    SCNNode *node = [SCNNode node];

   //This line doesn't do anything ! 
    node.scale  = SCNVector3Make(11, 11, 11);

    [scene.rootNode addChildNode:node];


    // set the scene to the view
    _myView.scene = scene;
    _myView.allowsCameraControl = YES;
    _myView.autoenablesDefaultLighting = YES;
    _myView.backgroundColor = [UIColor whiteColor];

但问题是对象的比例根本没有改变!怎么了?

对于[SCNNode node],您正在创建一个与场景和飞船无关的新节点。在下一行中,您缩放该节点的(不存在的)几何体。

改为缩放场景的 rootNode

如果您的 .dae 不仅仅包含您打算缩放的飞船,请使用 [scene.rootNode childNodeWithName:shipNodeName recursively:YES] 搜索包含该飞船的节点。

Jörg Kirchhof 的回答是正确的。在 SceneKit 编辑器中查看飞船。场景图的最上面的节点就是你想要的节点。对于 Apple 的示例代码,它是 "ship".

你的第二行 SCNNode *node = [SCNNode node]; 在这种情况下没有任何意义,因为它只是一个空节点。将该行替换为下面的行。

SCNNode *node = [scene.rootNode childNodeWithName:@"ship" recursively:YES];