2014-11-07 3 views
2

Я работаю с 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; 

ответ

1

В качестве простого примера:

yourSceneNode.pivot = SCNMatrix4MakeTranslation (0,5, 0,5, 0,5),

где вы изменить свойства положения, поворота и масштаба узла.

ссылка на класс SCNNode объясняет это красиво

+0

Благодарим за ответ, но это не сработает. Посмотрите мой код выше. – Sveta

+0

хм .. в чем проблема, с которой вы сейчас сталкиваетесь. Некоторая ошибка? – humblePilgrim

+0

Нет, мой объект вращается вокруг центра. Мне нужно повернуть объект вокруг левой стороны, как открытие книги. – Sveta

2

сводного преобразования перевод очень мал по сравнению с размером вашей коробки. Это не нормализуется.

Если вы хотите перевести один из углов, вы должны перевести половину стороны во всех направлениях.

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

Спасибо за ответ, но он не работает. – Sveta

+0

как вы поворачиваете свой объект? Если вы полагаетесь на 'allowCameraControl', это неправильный подход. Вам нужно самостоятельно манипулировать узлами (либо камерой, либо ящиком). – mnuages

Смежные вопросы