Перевести единицы измерения Unity? - PullRequest
0 голосов
/ 16 января 2019

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

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

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

Это лучше всего продемонстрировано и показано на четвертом изображении. При проверке того же диаметра в других программах САПР, таких как NX, диаметр составляет 0,4210 "или дюймы. Толщина и ширина были рассчитаны также для 0,075244" и 0,2252872 "соответственно.

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

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

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

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

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

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

thickness width diameter-unity diameter_cadprgm

1 Ответ

0 голосов
/ 16 января 2019

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

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

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

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

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

...