在 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 .0098、0.0096 和 0.0072。宽度:0.252872" x .0615、0.0611 和 0.060。直径:0.4210" x .0475(注 1:Unity 和外部 CAD 程序中的模型比例相同。)(注 2:厚度和宽度的轻微变化是由于 Unity 测量的结果是在 CAD 程序测量两个平面之间的距离时的角度,即 0.009x 和 0.06x。)(注 3:忽略第二个视觉对象中不正确的宽度标签为“厚度”和所有 Unity 视觉对象中的英寸标签“,因为两者都不正确)。https://i.stack.imgur.com/N1CMK.gif https://i.stack.imgur.com/vSGtV.gif https://i.stack.imgur.com/sd68C.gifhttps://i.stack.imgur.com/7MM8S.png
1 回答
慕姐8265434
TA贡献1813条经验 获得超2个赞
1 Unity 单位通常保持为 1 米,但是当您阅读它取决于您的实施时,在这种情况下,您看起来实际上是从 CAD 导出的 1 英寸 = 1 单位,因为您的结果看起来相似但略有不同离开。
你得到不准确的原因很可能是由于 Unity 的碰撞系统不是非常准确,大多数对撞机实际上比它们所代表的网格略大,这会显着放弃你的微调测量,除此之外,Unity 会有精度比 CAD 低得多,因为 Unity 是一个游戏引擎并且需要实时执行,所以 3D 位置数据不是很准确(它在 4 位精度左右变得非常模糊),事实上,当您远离起源。
我不建议尝试将 Unity 用于任何类型的精确设计工作,尤其是在表示现实世界时,但如果您死心塌地,您可能希望将对象放大 10 或 100 倍,以便让您的数字更接近小数点以减少浮点错误,这显然是一种黑客行为。
您可能还想查看您的物理设置:https : //docs.unity3d.com/Manual/class-PhysicsManager.html 特别是“默认接触偏移”可能是相关的(尽管我不确定它是否会影响光线投射)
PS:我会将此作为评论发布,但代表系统不会让我,您对每个环境之间测量的描述真的很混乱,下次也许尝试将其格式化为表格或其他东西?
- 1 回答
- 0 关注
- 142 浏览
添加回答
举报
0/150
提交
取消