我遵循了github上用于ARCore unity的AugmentedImageController上列出的示例代码: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);
}
}
没有显示控制台错误,但没有显示视频
答案 0 :(得分:0)
确保相机位置在origo中。 您的视频播放器是否处于活动状态? (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);
}
}
别忘了将视频播放器组件添加到游戏对象中。
答案 1 :(得分:0)
编辑:我必须编辑答案以给出更多解释: 我使用了GoogleARCore随附的增强图像示例来创建AR。在这里,控制器需要一个增强的图像可视化器预制件。该预制件是一个Quad(在层次结构区域上单击鼠标右键,然后单击3D Object> Quad)并将其移动到prefab文件夹(这将通过Quad创建预制件)。该四核/预制有视频播放器(在检查器中添加了)。此quad(prefab)还具有一个脚本(augmentedimagevisualizer),其中包含您的代码段。因此,在检查器中(带有增强图像可视化器脚本),四边形已经具有视频剪辑,您可以在其中设置视频。 在层次结构中,有一个arcore设备,而内部是摄像头。该相机具有跟踪姿势驱动程序(在检查器中设置),其姿势来源为:彩色摄像机和AR Core Background Renderer脚本。 2. videolink具有相同的功能,并包含您的代码,因此该视频非常具有描述性。 我在youtube上找到了2个类似的视频。
对于我来说,2.棘手,视频中的那个家伙创建了Quad,他将其重命名为AugmentedImageVisualizer,然后将其放置在Prefabs中。既然我意识到了这一点,我的视频就会出现在裁判上。图片。 我使用Unity 2019.3.15和arcore-unity-sdk-1.17.0.unitypackage