Перевести единицы измерения Unity?

В Unity можно использовать Raycasting для расчета различных измерений. Примеры, такие как диаметр, толщина стены и ширина. Один из способов сделать это - зафиксировать щелчок мышью пользователя на объекте и использовать RaycastHits для фиксации местоположения щелчка мыши на объекте, а затем использовать дополнительные лучи в зависимости от желаемого измерения.

На рисунке ниже: Толщина нажатых стен составляет 0,0098, 0,0096 и 0,0072. Ширина составляет 0,0615, 0,0611 и 0,060. Диаметр 0,0475.

Хотя эти измерения (предположительно) выполнены и рассчитаны правильно, неясно, как результаты переводятся в реальные единицы измерения.

Лучше всего это показано на четвертом изображении. Проверив тот же диаметр в других программах CAD, таких как NX, диаметр составляет 0,4210 дюйма или дюймов. Толщина и ширина также были рассчитаны как 0,075244 дюйма и 0,252872 дюйма соответственно.

Итак, как результаты в Unity (результаты, полученные с помощью Vector3.Distance для вычисления расстояния между двумя точками) переводятся в реальные единицы измерения?

Поиск в Google по этой теме дает общий ответ: измерения Unity - это «игровые единицы», и их можно использовать как угодно. Хотя я это понимаю, я не понимаю, как выполнить перевод «игровых единиц» или любых других единиц измерения Unity в результаты измерений, которые я могу видеть в программах САПР.

Результаты (CAD x Unity): Толщина: 0,075244 дюйма x 0,0098, 0,0096 и 0,0072. Ширина: 0,252872 дюйма x 0,0615, 0,0611 и 0,060. Диаметр: 0,4210 дюйма x 0,0475

(примечание 1: масштабы модели идентичны в Unity и внешней программе САПР.)

(примечание 2: небольшое изменение толщины и ширины является результатом измерений Unity под углами, при которых программа CAD измеряет расстояние между двумя плоскостями, то есть 0,009x и 0,06x.)

(примечание 3: игнорируйте неправильную маркировку ширины во втором визуальном элементе как «Толщина» и маркировку в дюймах во всех визуальных элементах Unity », поскольку оба они неверны).

толщина  width Diameter-unity Diameter_cadprgm


person jtth    schedule 16.01.2019    source источник


Ответы (1)


1 единица Unity обычно считается равной 1 метру, однако, поскольку вы читали ее до своей реализации, в этом случае похоже, что вы на самом деле экспортируете из CAD с 1 дюйм = 1 единица, поскольку ваши результаты кажутся похожими, но немного выключенный.

Причина, по которой вы получаете неточности, скорее всего, связана с тем, что система столкновений Unity не является чрезвычайно точной, большинство коллайдеров на самом деле немного больше, чем сетка, которую они представляют, что значительно ухудшит ваши точно настроенные измерения, и, помимо этого, Unity будет иметь гораздо более низкая точность, чем САПР, поскольку Unity - это игровой движок и должен работать в реальном времени, данные о трехмерном положении не очень точны (они становятся довольно туманными с точностью около 4 знаков) и фактически становятся значительно хуже, когда вы путешествуете от источник.

Я бы не рекомендовал пытаться использовать Unity для каких-либо точных проектных работ, особенно при представлении реального мира, но если вы абсолютно настроены, вы можете увеличить свои объекты в 10 или 100 раз, чтобы держите свои цифры ближе к десятичной запятой, чтобы уменьшить ошибку с плавающей запятой, это, очевидно, хакерство.

Вы также можете посмотреть свои настройки физики: https://docs.unity3d.com/Manual/class-PhysicsManager.html В частности, может иметь значение "Смещение контакта по умолчанию" (хотя я не уверен, влияет ли это на рейкасты)

PS: Я бы опубликовал это как комментарий, но репутация мне не позволяет, ваше описание измерений между каждой средой действительно сбивает с толку, в следующий раз, может быть, попробуйте отформатировать его в таблице или что-то в этом роде?

person Empty    schedule 16.01.2019
comment
Если ваши CAD-файлы не совпадают между миллиметрами и дюймами, Unity не может решить эту проблему. Он может только видеть, что модель x units большой, он не знает, что это за единицы, и может предложить только свою собственную единицу измерения: Метр. - person Draco18s no longer trusts SE; 16.01.2019