【问题标题】:Translate Unity units of measurement?翻译 Unity 计量单位?
【发布时间】:2019-06-10 01:05:01
【问题描述】:

在 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 计算两点之间距离产生的结果)转换为现实世界的测量单位

在谷歌上搜索该主题会得出一个常见的答案:Unity 的测量值是“游戏单位”,可以根据需要使用。虽然我掌握了这一点,但我不明白如何将“游戏单位”或 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 程序测量两个平面之间的距离的角度(即 0.009x 和 .06x)处进行的测量导致的。)

(注意 3:忽略第二个视觉对象中不正确的宽度标签为“厚度”和所有 Unity 视觉对象中的英寸标签“,因为两者都不正确)。

【问题讨论】:

    标签: c# unity3d units-of-measurement cad


    【解决方案1】:

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

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

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

    您可能还想查看您的物理设置:https://docs.unity3d.com/Manual/class-PhysicsManager.html 特别是“默认接触偏移”可能是相关的(尽管我不确定它是否会影响光线投射)

    PS:我会将此作为评论发布,但代表系统不会让我,您对每种环境之间测量的描述真的很混乱,下次也许尝试将其格式化为表格或其他东西?

    【讨论】:

    • 如果您的 cad 文件在毫米和英寸之间不一致,Unity 无法解决该问题。只能看到模型x units大,不知道是什么单位,只能建议自己的度量单位:米。
    猜你喜欢
    • 2018-04-26
    • 2013-05-31
    • 1970-01-01
    • 2015-04-26
    • 2012-01-12
    • 2014-05-02
    • 1970-01-01
    • 2019-07-09
    • 2016-05-09
    相关资源
    最近更新 更多