c# - Unity ARKit SetWorldOrigin - 旋转错误
问题描述
我尝试将新的位置和方向设置为原点SetWorldOrigin
我正在使用 Unity 2018.3.0f2 和 ARKit 2.0
我的开始对齐是:“Unity AR Alignment Gravity And Heading”
在我的户外测试环境中,我有一个具有可视化北向的已知点。我可以在这一点上放置一个游戏对象(newOriginGO)并将其向可视化的北方向旋转。问题是,虚拟对象被旋转到错误的位置。我只用翻译进行了测试,这行得通。这是一个代码片段:
GameObject translationToLastPosition = new GameObject();
GameObject rotateToNewRotation = new GameObject();
GameObject translationToNewPosition = new GameObject();
translationToLastPosition.transform.position = -lastOriginP;
rotateToNewRotation.transform.eulerAngles = lastOriginR - newOriginGO.transform.eulerAngles;
translationToNewPosition.transform.position = lastOriginP - newOriginGO.transform.position;
UnityARSessionNativeInterface.GetARSessionNativeInterface().SetWorldOrigin(translationToLastPosition.transform);
UnityARSessionNativeInterface.GetARSessionNativeInterface().SetWorldOrigin(rotateToNewRotation.transform);
UnityARSessionNativeInterface.GetARSessionNativeInterface().SetWorldOrigin(translationToNewPosition.transform);
lastOriginP = newOriginGO.transform.position;
lastOriginR = newOriginGO.transform.eulerAngles;
因为SetWorldOrigin
需要相对变换并且我正在围绕最后一个原点旋转我的游戏对象transform.RotateAround(lastOriginP, Vector3.up, angle)
,所以我尝试将 WorldOrigin 平移回最后一个原点,旋转 WorldOrigin 然后平移回实际位置。我是有思维错误还是我不明白该方法的SetWorldOrigin
工作原理?ARKitSetWorldOrigin
如何影响 Unity World Space 坐标系?
解决方案
好的,最后我找到了另一个解决方案。我没有使用 ARKit 更改 WorldOrigin,而是将所有 3D 对象作为空 GameObject 的子对象。然后我用我的校正值(平移和旋转)更改了这个游戏对象。
推荐阅读
- mongodb - 基于多输入删除 MongoDB 文档的 Unix Shell 脚本
- java - 自定义键盘 Java - 潜在的输入法问题
- kotlin - kotlin 中的 arrayListOf 和 ArrayList 有什么区别?
- android - 在 iOS 上使用时,颤振地理定位器返回 null
- c# - 未找到 url_encoded_fmt_stream_map
- reactjs - react-boostrap 和 react-router 导致整个页面重新加载
- powershell - 如何将 PowerShell 脚本作为服务运行?
- laravel - 是否可以在 Laravel 中通过护照身份验证时创建客户端令牌
- r - 从R中的数据框中读取值
- scala - scala 中 Some() 的多个参数列表实现了什么?