如何更改锚点?

4

我正在使用SceneKit。对象SCNNode相对于中心旋转。如何更改SCNNode的锚点?

SCNScene *scene = [SCNScene new];

SCNBox *boxGeometry = [SCNBox boxWithWidth:384.f height:512.f length:20.f chamferRadius:0];

SCNMaterial *material = [SCNMaterial new];
material.diffuse.contents = [UIImage imageNamed:@"material"];

SCNNode *boxNode = [SCNNode nodeWithGeometry:boxGeometry];
boxNode.geometry.firstMaterial = material;
boxNode.pivot = SCNMatrix4MakeTranslation(0.5f, 0.5f, 0.5f);
[scene.rootNode addChildNode:boxNode];

self.sceneView.scene = scene;
self.sceneView.allowsCameraControl = YES;
2个回答

3

相对于您的盒子大小,您的中心点变换很小。它没有被标准化。

如果您想围绕其中一个角旋转,则应在所有方向上平移一半的边缘。

boxNode.pivot = SCNMatrix4MakeTranslation(384.0/2.0, 512.0/2.0, 20.0/2.0);

你如何旋转你的物体?如果你依赖于allowsCameraControl,那么这是错误的方法。你需要自己操作节点(无论是相机还是盒子)。 - mnuages

0
作为一个简单的例子:
你可以使用以下代码改变节点的位置、旋转和缩放属性:
yourSceneNode.pivot = SCNMatrix4MakeTranslation(0.5, 0.5, 0.5)
SCNNode类的参考文档对此进行了很好的解释。

谢谢您的回答,但它并不起作用。请看我上面的代码。 - Sveta
嗯...你现在遇到什么问题了。是出现了某种错误吗? - humblePilgrim
不,我的物体是围绕中心旋转的。我需要像打开一本书一样将物体围绕左侧旋转。 - Sveta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接