Sveta
Sveta

Reputation: 1280

How to change anchor point?

I'm working with SceneKit. The object SCNNode is rotated relative to the center. How to change anchor point of the 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;

Upvotes: 4

Views: 3856

Answers (2)

David Rönnqvist
David Rönnqvist

Reputation: 56625

Your pivot transform translation is very small compared to the size of your box. It's not normalized.

If you want to translate around one of the corners you should translate half of the side in all directions.

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

Upvotes: 3

humblePilgrim
humblePilgrim

Reputation: 1806

As a simple example :

yourSceneNode.pivot = SCNMatrix4MakeTranslation(0.5, 0.5, 0.5),

where you change the node's position, rotation and scale properties.

SCNNode class reference explains this nicely

Upvotes: 0

Related Questions