翻译统一计量单位?

Translate Unity units of measurement?

在 Unity 中,可以使用光线投射来计算各种测量值。例如直径、壁厚和宽度。实现此目的的一种方法是捕获用户鼠标单击对象并使用 RaycastHits 捕获鼠标单击对象的位置,然后根据所需的测量投射额外的光线。

如下所示: 单击的墙壁厚度为 0.0098、0.0096 和 0.0072。宽度为 0.0615、0.0611 和 0.060。直径为 .0475.

虽然这些测量结果(据信是)正确执行和计算的,但尚不清楚结果如何转化为现实世界的测量单位。

这在第四张图片中得到了最好的展示和展示。在其他 CAD 程序(例如 NX)中检查相同的直径,直径为 0.4210" 或英寸。厚度和宽度也分别计算为 .075244" 和 .252872"。

那么,Unity中的结果如何,(使用Vector3.Distance计算两点之间的距离产生的结果)转换为真实世界计量单位?

用谷歌搜索这个主题会得到一个共同的答案:Unity 的测量值是 "game units" 并且可以根据需要使用。虽然我掌握了这一点,但我不明白如何完成 "game units" 或任何 Unity 的测量单位真正是什么,到我在 CAD 程序中看到的测量结果。

结果(CAD x Unity): 厚度:0.075244" x 0.0098、0.0096 和 0.0072。 宽度:0.252872" x 0.0615、0.0611 和 0.060。 直径:0.4210" x .0475

(注 1:Unity 和外部 CAD 程序中的模型比例相同。)

(注 2:厚度和宽度的细微变化是 Unity 测量的结果,其角度是 CAD 程序测量两个平面之间距离的角度,即 .009x 和 .06x。)

(注 3:忽略第二个视觉中宽度的错误标记 'Thickness' 和所有 Unity 视觉中的英寸标记,“,两者都不正确)。

1 Unity 单位通常为 1 米,但是正如您所读,这取决于您的实施,在这种情况下,看起来您实际上是从 CAD 导出 1 英寸 = 1 单位,因为您结果似乎相似但略有不同。

你得到不准确的原因很可能是由于 Unity 的碰撞系统不是非常准确,大多数碰撞器实际上比它们代表的网格稍大,这将显着影响你的微调测量,最重要的是Unity 的精度将比 CAD 低得多,因为 Unity 是一个游戏引擎并且需要实时执行,3D 位置数据不是很准确(它在 4 位精度左右变得非常模糊),实际上变得更糟你离开了原点。

我不建议尝试使用 Unity 进行任何类型的精确设计工作,尤其是在代表现实世界时,但如果你死定了,你可能希望将对象放大 10 倍或 100 以使您的数字更接近小数点以减少浮点错误,这显然是一种 hack。

您可能还想看看您的物理设置:https://docs.unity3d.com/Manual/class-PhysicsManager.html 特别是 "Default Contact Offset" 可能是相关的(尽管我不确定它是否会影响光线投射)

PS:我会 post 这作为评论,但代表系统不允许我,你对每个环境之间的测量的描述真的很混乱,下次也许试试将其格式化为 table 或其他格式?