arcore, размещая 3D модель без прикосновения с единством - PullRequest
1 голос
/ 13 мая 2019

enter image description here

Я делаю приложение AR, используя ARCore и Unity.

Я хотел разместить 3D-модели на вертикальных стенах без прикосновения.

он почти реализован, но при создании 3D-модели, она продолжает идти влево вниз.

1011 * Я думаю, это потому, что я установил позицию якорного 1013

Но если я изменил положение якоря на

 Vector3 position = new Vector3 (hit.Pose.position.x, hit.Pose.position.y, hit.Pose.position.z)

Он тоже не пойдет в центр.

Кто-нибудь знает, как поместить трехмерный объект в середину плоскости?

TrackableHit hit;     
TrackableHitFlags raycastFilter = TrackableHitFlags.PlaneWithinPolygon |
TrackableHitFlags.FeaturePointWithSurfaceNormal;


if (Frame.Raycast(transform.position.x,transform.position.y, raycastFilter, out hit))
{
    if (CurrentNumberOfGameObjects < numberOfGameObjectsAllowed)
        {
            Destroy(ARObject);

        if ((hit.Trackable is DetectedPlane) 
             && Vector3.Dot(FirstPersonCamera.transform.position - hit.Pose.position, hit.Pose.rotation * Vector3.up) < 0)
        {
            Debug.Log("Hit at back of the current DetectedPlane");
        }
        else
        {
            Vector3 position = new Vector3(0,0,0);
            Quaternion rotation = new Quaternion(0f, 0f, 0f, 1f);

            ARObject = Instantiate(ARAndroidPrefab, hit.Pose.position, hit.Pose.rotation);                                                  
            ARObject.transform.Rotate(-90, 0, 0, Space.Self);
            var anchor = Session.CreateAnchor(new Pose(position, rotation));
            ARObject.transform.parent = anchor.transform;
                CurrentNumberOfGameObjects = CurrentNumberOfGameObjects + 1;

                // Hide Plane once ARObject is Instantiated 
                foreach (GameObject Temp in DetectedPlaneGenerator.instance.PLANES) //RK
                {
                    Temp.SetActive(false);
                }
            }
        }
    }

1 Ответ

0 голосов
/ 31 мая 2019

я изменил код

Vector3 position = Vector3.zero; // Vector3 position = new Vector3(0,0,0);

на

Vector3 position = new Vector3(Camera.main.transform.position.x, Camera.main.transform.position.y , hit.Pose.position.z);

и тогда он работает.

...