【问题标题】:Problems with playing videos ARCore播放视频 ARCore 的问题
【发布时间】:2019-05-22 05:15:59
【问题描述】:

我遵循了在 github 上的 AugmentedImageController for ARCore unity 中列出的示例代码:https://github.com/google-ar/arcore-unity-sdk/blob/master/Assets/GoogleARCore/Examples/AugmentedImage/Scripts/AugmentedImageExampleController.cs。即使按照本示例中的代码进行操作,它也不会播放视频播放器中的视频,如下面的 AugmentedImageVisualizer 代码所示:

如果我将 AugmentedImageVirtulizer 拖放到场景中并放置 playOnAwake,视频就会播放。但是,当我关闭 playOnAwake,将应用程序发送到我的手机,然后将相机对准增强图像(在我的情况下是空奶瓶标签)时,它不会播放。我希望从奶瓶中出现一个诸如鬼魂之类的物体。

    using GoogleARCore;
    using UnityEngine;
    using UnityEngine.Video;

    public class AugmentedImageVisualizer : MonoBehaviour {

    private VideoPlayer vidPlayer;
    public VideoClip[] vidClips;
    public AugmentedImage Image;

// Use this for initialization
void Start () {
    vidPlayer = GetComponent<VideoPlayer>();
    vidPlayer.loopPointReached += OnStop;

}

   private void OnStop(VideoPlayer source)
   {
      gameObject.SetActive(false);
   }

   // Update is called once per frame
   void Update () {

    if (Image == null || Image.TrackingState != TrackingState.Tracking)
    {
        return;
    }

    if (!vidPlayer.isPlaying)
    {
        vidPlayer.clip = vidClips[Image.DatabaseIndex];
        vidPlayer.Play();
    }

    transform.localScale = new Vector3(Image.ExtentX, Image.ExtentZ, 
    1f);

  }
      }

没有显示控制台错误,但没有显示视频

【问题讨论】:

    标签: android unity3d arcore


    【解决方案1】:

    确保您的相机位置在原点。 您的视频播放器是否处于活动状态? (videoplayer.setactive(true))

    我的工作解决方案:

    public class AugmentedImageVisualizer : MonoBehaviour
    {
        private const string TAG = "AugmentedImageVisualizer";
        public AugmentedImage image;
    
        public GameObject video;
        public VideoClip[] videoClips;
    
        private VideoPlayer videoPlayer;
    
        private void Start() {
            videoPlayer = video.GetComponent<VideoPlayer>();
        }
    
        private void Update() {
            if (Session.Status != SessionStatus.Tracking) return;
    
            if (image == null || image.TrackingState != TrackingState.Tracking) {
                videoplayer.SetActive(false);
                return;
            }
    
            UpdateVideo();
    
        private void UpdateVideo() {
            if (!videoPlayer.isPlaying) {
                videoPlayer.clip = videoClips[image.DatabaseIndex];
                videoPlayer.Play();
                video.SetActive(true);
            }
    
            transform.localScale = new Vector3(image.ExtentX, 1, image.ExtentZ);
        }
    }
    

    不要忘记将视频播放器组件添加到您的游戏对象。

    【讨论】:

    • 嘿,所以我附加的视频播放器组件直接附加到 AugmentedImageVisualizer 并在 y 轴上向上移动了一段距离。我认为您附加视频播放器的方式是将其添加到一个空的游戏对象中,对吗?它应该仍然有效,对吧?不管我是否尝试过像您上面那样设置Active 方法,我很快就会再试一次。
    • 不过我还有一个问题,那就是我包含在数据库中的图像可能与其他用户可能没有的图像不同,那么 ArCore 如何检测它,例如,如果我是把这个应用程序放在 App Store 中?我的猜测是,我必须为下载我的应用程序的其他用户添加一些方法来添加他们自己的图像?
    • 我忘了提一下,我的 AugmentedImageVisualizer 预制件沿 X 轴旋转了 90 度。我的预制/空游戏对象包含 2 个组件,AugmentedImageVisualizer 脚本和 VideoPlayer 组件。目前,我也在为动态 AugmentedImageDatabase 苦苦挣扎。可以在运行时将图像添加到数据库中,但是这些项目的质量为空。
    【解决方案2】:

    编辑:我不得不编辑答案以提供更多解释: 我使用 GoogleARCore 附带的增强图像示例来创建 AR。在这里,控制器需要一个增强的图像可视化器预制件。这个预制件是一个四边形(右键单击层次区域,然后 3D 对象 > 四边形)并将其移动到预制文件夹(这会从四边形创建预制件)。这个四边形/预制件有一个视频播放器(在检查器中添加)。这个四边形(预制件)还有一个脚本(augmentedimagevisualizer),其中包含您的代码 sn-p。因此,在检查器(使用 augmentedimagevisualizer 脚本)中,quad 已经有视频剪辑,您可以在其中设置视频。 在层次结构中,有一个 arcore 设备,内部是相机。该相机具有跟踪姿势驱动程序(在检查器中设置),姿势源:彩色相机和 AR 核心背景渲染器脚本。 2. videolink 也一样,也包含你的代码,所以这个视频对你的问题非常有描述性。 我在 youtube 上找到了 2 个类似的视频。

    1. 显示 1 个视频:https://www.youtube.com/watch?v=yjj5dV2v9Fs
    2. 在多个参考上显示多个视频。图片: https://www.youtube.com/watch?v=GkzMFNmvums

    2. 对我来说很棘手,视频中的人创建了四边形,并将其重命名为 AugmentedImageVisualizer,然后将其放入预制件中。自从我意识到这一点后,我的视频出现在 ref 上。图片。 我使用了 Unity 2019.3.15 和 arcore-unity-sdk-1.17.0.unitypackage

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多