Масштабирование 3D-объектов до одинакового размера и размещение их на расстоянии ровно 1 м от камеры iphone/ipad с помощью Arkit.

введите описание изображенияМне нужно масштабировать набор 3D-объектов до одинакового размера и разместить их на расстоянии 1 м от iPad. У меня есть прозрачное изображение на экране чуть выше ARSCNView, и я пытаюсь перекрыть 3D-объект точно позади прозрачного изображения, и размер также должен совпадать. Любая ссылка ИЛИ предложения высоко ценятся. Заранее спасибо.


person ManjunathK    schedule 06.04.2018    source источник


Ответы (1)


Предполагая, что вы уже знаете размер своих активов (т. е. если вы сами создали модели), вы можете изменить свойство .scale в корневом каталоге SCNNode для каждого объекта, чтобы результирующие размеры были одинаковыми.

i.e:

node.scale = SCNVector3Make(0.1, 0.2, 0.8)

Если у вас есть один объект размером n1 = (1, 2, 1) (в метрах), а другой размером n2 = (2, 2, 2), то вы можете масштабировать первый на node.scale(2.0, 1.0, 2.0) — теперь оба объекта будут одинакового размера. , однако очевидно, что первый будет искажен, поскольку вы изменили его размеры.

Чтобы разместить узлы на расстоянии 1 м от источника, вы используете:

node.position = SCNVector3Make(0, 0, -1)  // x = 0, y = 0, z = -1

Я не совсем понимаю, о чем вы говорите, когда упоминаете прозрачное наложение, но если вы объясните это немного подробнее, я или кто-то другой сможет вам помочь.

Надеюсь это поможет.

person Jordan    schedule 08.04.2018
comment
Спасибо за ваш ответ. Мне известны размеры объектов, которые я использую, и я могу поместить объект в любую координату относительно начала координат. У меня возникла проблема с размещением объекта на фиксированном расстоянии от камеры устройства. На образце экрана, прикрепленном к вопросу, который мало похож на реальный, я пытаюсь разместить 3D-очки, которые всегда будут перекрывать границу пунктирного стекла. Надеюсь, это прояснит мою проблему. - person ManjunathK; 12.04.2018
comment
Какая у вас проблема, когда вы говорите о размещении объекта на фиксированном расстоянии от камеры устройства. Разве они не остаются фиксированными? Использование свойства node.position должно делать именно то, что вы хотите. Затем просто масштабируйте объекты, чтобы они поместились в оправе очков. Вы имеете в виду, что хотите, чтобы объекты двигались, когда вы перемещаете камеру? - person Jordan; 12.04.2018
comment
Спасибо за ваш ответ. Я имею в виду, когда я пытаюсь держать объект на расстоянии 1 м от камеры, используя код: var translation=matrix_identity_float4x4;translation.columns.3.z= -1 object.simdTransform=matrix_multiply((self.session.currentFrame?.camera. трансформировать)!, перевод). Это не всегда работает. Иногда, если у меня есть какая-либо плоскость/стена на расстоянии 2 м от камеры, я вижу, что объект находится на расстоянии 1 м от камеры и плоскости. Если у меня есть вертикальная плоскость/стена на расстоянии 6 м, объект отображается на случайном расстоянии. Пожалуйста, помогите мне решить эту проблему. Вы можете обратиться к прикрепленному изображению выше. - person ManjunathK; 13.04.2018