翻译Unity的计量单位?

时间:2019-01-16 00:15:33

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

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

在下面看到: 所单击的壁的厚度为.0098,.0096和.0072。宽度为.0615,.0611和.060。直径为.0475。

尽管(相信)可以正确执行和计算这些度量,但尚不清楚结果如何转换为现实的度量单位。

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

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

搜索对象会产生一个常见的答案:Unity的度量是“游戏单位”,可以根据需要使用。虽然我掌握了这一点,但我不知道如何将“游戏单位”(或Unity真正的度量单位)转换为我可以在CAD程序中看到的度量结果。

结果(CAD x Unity): 厚度:.075244英寸x .0098,.0096和.0072。 宽度:.252872英寸x .0615,.0611和.060。 直径:0.4210英寸x .0475

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

(注2:厚度和宽度的细微变化是由于Unity测量在CAD程序正在测量两个平面之间的距离(即.009x和.06x)的角度处产生的。)

(注意3:忽略第二个视觉对象中“宽度”的不正确标签为“厚度”,而所有Unity视觉对象中的英寸标识均为“不正确”。

thickness width diameter-unity diameter_cadprgm

1 个答案:

答案 0 :(得分:3)

1个Unity单位通常保持为1米,但是,正如您所阅读的,取决于您的实现方式,在这种情况下,您看起来实际上是从1英寸= 1单位的CAD导出,因为结果似乎类似,但略有偏离。

出现错误的原因很可能是因为Unity的碰撞系统不够精确,实际上大多数对撞机都比它们所代表的网格稍大,这将大大降低微调的测量结果,此外Unity的精度将比CAD低得多,因为Unity是游戏引擎并且需要实时执行,因此3D位置数据不是很准确(精度几乎达到4位模糊),并且实际上在旅行时会变得更差远离原点。

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

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

PS:我将其发布为评论,但代表服务系统不允许我这样做,您对每种环境之间的度量的描述确实令人困惑,下次您可以尝试将其格式化为表格或其他格式吗? >