繁体   English   中英

AR Object Drifting/Flying Away 发行 Unity AR Foundation

[英]AR Object Drifting/Flying Away Issue Unity AR Foundation

我是 AR 开发的新手,很抱歉这个菜鸟问题。 我在摄像头前生成了一个 AR object,它生成得很好,但有时,object 开始向随机方向漂移。 谁能帮我解决这个问题? 我已经搜索了很长时间; 我无法找到修复程序。

对于 Object 产卵

prefabInstance = Instantiate(placeObject);
GetComponent<ARSessionOrigin>().MakeContentAppearAt(prefabInstance.transform, new Vector3(0, -0.76f, 3.35f), Quaternion.identity);

我想摇晃把 object 粉碎。 在 object 分片后,我将它们重新安置在不同的区域。 我只重新定位父 object 并且碎片在 object 的子中。

搬迁代码

int temp = UnityEngine.Random.Range(0, ReferenceSpawnPoint.Length); 
gObject.transform.position = new Vector3(ReferenceSpawnPoint[temp].position.x, ReferenceSpawnPoint[temp].position.y, ReferenceSpawnPoint[temp].position.z); 
float y = UnityEngine.Random.Range(0, 360); 
float z = UnityEngine.Random.Range(-10, 10); 
gObject.transform.rotation = Quaternion.Euler(0, y, 0);

我还附上了视频的链接; 请看一下,您可以理解我在说什么视频链接 为方便起见,请从 0:30 秒标记开始。

对你的帮助表示感谢。

有时我也会出现黑屏; 这是否意味着 AR Session 尚未初始化?

插件/工具版本:

  • 统一:2019.2.7f2
  • XR ARCore:3.1.3
  • XR AR 基础:3.1.3
  • XR ARKit:3.1.3
  • XR 传统输入助手:2.1.4

您放置 object 的方式似乎是错误的。 更好的方法是使用光线投射并将 3D object 放置在一些由用户输入定义的 position 中,例如触摸屏幕。

AR Foundation 示例场景有一个名为 PlaceOnPlane.cs 的脚本,该脚本显示了如何检测用户何时触摸屏幕,然后将其从屏幕投射到世界以启动游戏 object:

if (Input.touchCount == 1) {
    if (m_RaycastManager.Raycast(Input.GetTouch(0).position, s_Hits, TrackableType.PlaneWithinPolygon))
        {
            // Raycast hits are sorted by distance, so the first one
            // will be the closest hit.
            var hitPose = s_Hits[0].pose;

            if (spawnedObject == null)
            {
                spawnedObject = Instantiate(m_PlacedPrefab, hitPose.position, hitPose.rotation);
            }
        }

一旦您在“真实世界”position(例如 hitPose.position)中实例化 model,您就不会再看到它漂移了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM