Настройка положения и масштаба трехмерных объектов в SceneKit - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь создать простое приложение, в котором трехмерные объекты размещаются на сцене с помощью ARKit.

Приложение отлично работает, когда я создаю SCNNode объекты с помощью кода Objective-C. Однако, когда я пытаюсь разместить объекты SCNNode, загруженные через файл .obj, положение и масштаб объектов кажутся странными.

Способ создания SCNNode из файла .obj:

NSString *path = [[NSBundle mainBundle] pathForResource:@"model" ofType:@"obj"];
NSURL *URL = [NSURL fileURLWithPath:path];
MDLAsset *asset = [[MDLAsset alloc] initWithURL:URL];
SCNNode *node = [asset objectAtIndex:0];

Теперь проблема в том, что когда я устанавливаю преобразование узла в характерную точку на обнаруженной плоскости, объект помещается намного выше, чем он должен быть. Более того, его масштаб абсурдно велик, так как при просмотре через программное обеспечение для редактирования моделей он должен быть всего несколько сантиметров в длину / ширину.

Чего мне не хватает? Я был бы признателен за любые указания на понимание моделей (особенно .objs).

1 Ответ

0 голосов
/ 05 сентября 2018

1 - Масштаб неправильных объектов, вероятно, связан с тем, что разные программы трехмерного моделирования используют разные единицы масштабирования. Самый простой способ исправить это - просто изменить масштаб узла в SceneKit:

yourNode.scale = SCNVector3(x: 0.5, y: 0.5, z: 0.5)

Более точный вариант - правильно масштабировать модель в программном обеспечении для 3D-моделирования и снова экспортировать.

2 - причина, по которой ваша модель не находится в правильном положении, заключается в том, что точка вращения не отцентрирована правильно. Это можно сделать с помощью программного обеспечения для 3D-моделирования или в Scenekit, как описано в этом посте: https://stackoverflow.com/a/48979201/3975207

...