有没有办法稳定增强图像上的3D对象

我正在设置一个场景,并且需要我的对象出现在增强图像的一角上。


我创建了一个脚本来查找增强图像并将其设置为锚点。domPrefab 在锚点的位置上实例化


            if (image.TrackingState == TrackingState.Tracking && visualizer == null)

            {

                //First: detect the augmented image


                Anchor imageAnchor = image.CreateAnchor(image.CenterPose);

                visualizer = Instantiate(AugmentedImageVisualizerPrefab, imageAnchor.transform, imageAnchor);

                visualizer.Image = image;

                m_Visualizers.Add(image.DatabaseIndex, visualizer);


                //Second: Instantiate the prefabs


            GameObject prefab = domPrefab;

            var domObject = Instantiate(prefab, anchor.transform.position, anchor.transform.rotation);

            domObject.transform.Rotate(0, k_ModelRotation, 0, Space.Self);

            domObject.transform.SetParent(anchor.transform, true);

            }

我希望domPrefab在增强图像的中心实例化,当我学习如何将其放置在角落时,让domPrefab出现在图像的角落。


实际结果是:domPrefab出现在图像的中间,但它不稳定。当相机环顾四周时,它会移动一点,它的尺度也会发生变化。


PIPIONE
浏览 94回答 1
1回答

撒科打诨

因为您正在使用此行在图像中心创建锚点Anchor imageAnchor = image.CreateAnchor(image.CenterPose);然后在位置实例化可视化工具,然后尝试旋转移动或其他操作,但您可以在 .若要执行此操作imageAnchorAugmentedImageVisualizer创建一个空对象并向其附加脚本。AugmentedImageVisualizer创建一个 inpublic GameObject myModelAugmentedImageVisualizer将模型作为子对象放入此对象,然后将其拖到检查器中。myModel使用此对象创建预制件修改你的喜欢:AugmentedImageVisualizerpublic AugmentedImage Image;public GameObject myModel;public void Update(){    float halfWidth = Image.ExtentX / 2;    float halfHeight = Image.ExtentZ / 2;    // for upper left    myModel.transform.localPosition = (halfWidth * Vector3.left) + (halfHeight * Vector3.back);    //for upper right    myModel.transform.localPosition = (halfWidth * Vector3.right) + (halfHeight * Vector3.back);    //for lower left    myModel.transform.localPosition = (halfWidth * Vector3.left) + (halfHeight * Vector3.forward);    //for lower right    myModel.transform.localPosition = (halfWidth * Vector3.right) + (halfHeight * Vector3.forward);}使用这个,就像在你的AugmentedImageVisualizerAugmentedImageExampleController如果您希望它保持稳定并且不随时间变化,请在“开始”(而不是“更新”)或其他函数中执行第五步中的操作,并确保它仅运行一次。我希望这有助于祝你好运!
打开App,查看更多内容
随时随地看视频慕课网APP