Сделать объект, нацеленный на AR, всегда в вертикальном положении И вращаться вокруг вектора worldUp - PullRequest
1 голос
/ 26 апреля 2019

Название может быть немного запутанным. У меня есть простой проект Vuforia в Unity, где я рендерил несколько блоков поверх QR-кодов. Я хотел бы, чтобы эти блоки (или любая другая 3D-модель) всегда стояли вертикально в мире, независимо от положения цели или (смартфона) камеры, а затем также вращались в постоянном темпе. вокруг этой оси.

То, что я сделал, это передал показания акселерометра устройства через фильтр низких частот, который дает мне вектор, который направлен вдоль гравитации. Затем я нормализую его и умножу на -1, чтобы получить единичный вектор, который всегда указывает вверх. Это делается один раз за кадр.

Когда я сталкиваюсь с проблемой, что делать с этим вектором; до сих пор я пытался просто установить его для transform.up модели в функции Update, что правильно делает модель всегда стоящей, но также предотвращает любой вид поворота, который я пытаюсь дать объекту с помощью transform.Rotate.

Есть ли правильный способ установить ось Y модели, которая все еще будет позволять ей вращаться вокруг указанной оси?

1 Ответ

1 голос
/ 28 апреля 2019

У меня есть идея, которая может сработать.Создайте Empty как дочерний элемент QR-кода и добавьте свои блоки как дочерние элементы вашего Empty.Теперь вы можете обновить свой Empty каждый кадр, чтобы он оставался в вертикальном положении, и позволить внутренним блокам вращаться относительно их родителя.

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

...