代码之家  ›  专栏  ›  技术社区  ›  jtth

翻译单位计量单位?

  •  0
  • jtth  · 技术社区  · 6 年前

    在Unity中,可以使用光线投射来计算各种测量值。例如直径、壁厚和宽度。实现这一点的一种方法是捕获用户在对象上单击鼠标,并使用光线投射点击来捕获鼠标在对象上单击的位置,而不是根据所需的测量投射其他光线。

    见下文: 单击的墙的厚度为.0098、.0096和.0072。宽度为.0615、.0611和.060。直径为0.0475。

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

    这在第四张图片中得到了最好的展示。在其他CAD程序(如nx)中检查相同直径,直径为0.4210英寸。厚度和宽度分别在0.075244”和0.252872”处计算。

    因此, 结果如何统一 ,(使用矢量3计算两点之间距离的结果) 转换为实际测量单位 ?

    谷歌搜索这个主题得到了一个常见的答案:Unity的测量值是“游戏单位”,可以随意使用。虽然我掌握了这一点,但我不明白如何将“游戏单位”或任何Unity的测量单位翻译成我在CAD程序中看到的测量结果。

    结果(cad x unity): 厚度:.075244“x.0098、.0096和.0072。 宽度:.252872“x.0615、.0611和.060。 直径:0.4210“x.0475

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

    (注2:厚度和宽度的微小变化是由统一测量得出的,测量角度为CAD程序测量两个平面之间的距离,即0.09x和0.06x)。

    (注3:忽略第二个视觉中宽度的错误标记为“厚度”,忽略所有统一视觉中的英寸标记,“两者都不正确”)。

    thickness width diameter-unity diameter_cadprgm

    1 回复  |  直到 6 年前
        1
  •  3
  •   Empty    6 年前

    1 Unity单位通常被认为是1米,但是,正如您已经阅读到的,它取决于您的实现,在这种情况下,它看起来像您实际上是从1英寸=1单位的CAD导出,因为您的结果似乎相似,但有点偏离。

    你不准确的原因很可能是因为Unity的碰撞系统不是非常精确,事实上大多数碰撞机都比它们所代表的网格稍大一点,这会使你的微调测量值明显偏离,而且在Unity之上,由于Unity是一个游戏引擎,因此它的精度要比CAD低得多。而且需要实时执行,3D位置数据不是很精确(它会变得相当模糊,精度大约为4位),事实上,当你离开原点时,情况会变得更糟。

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

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

    附言:我会把这作为一个评论发表,但是代表系统不会让我这么做的,你对每个环境之间的度量的描述真的令人困惑,下一次也许会尝试把它格式化成表格或者其他什么形式?