ARCore可视化视频,图像和3D对象

时间:2019-02-28 16:22:39

标签: c# android unity3d arcore

到目前为止,我的ARCore项目将视频始终一致地显示在图像之上,但是为了更深入地了解,我希望能够将3D对象和静止图像也融合在一起。例如,对于具有三个扫描图像点的海报,我想让一个播放视频,另一个显示一个立方体,第三个显示一个图像。 多种显示器,用于显示不同的对象。我的问题是我似乎无法集成简单的多维数据集,我认为这是因为:

-我的可视化器对象是一个Quad,并且涉足对象的位置

-considering it is added to the visualizer prefab

无法正确调用我的多维数据集预制对象

-此外,我似乎无法称呼图像而不是视频,这就是我对此缺乏知识。

我的AugmentedImageVisualizer似乎很适合视频播放:

import matplotlib.pyplot as plt
fig, axs = plt.subplots(...)
# ...
fig.suptitle("your title")

AugmentedImageController非常简单,但是我还没有进行任何编辑来适应3D对象的添加:

public class AugmentedImageVisualizer : MonoBehaviour

[SerializeField] private VideoClip[] _videoClips;

public AugmentedImage Image;
public GameObject[] Models;
private VideoPlayer _videoPlayer;

void Start()
{
    _videoPlayer = GetComponent<VideoPlayer>();
    _videoPlayer.loopPointReached += OnStop;
}

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

void Update()
{
    if (Image == null || Image.TrackingState != TrackingState.Tracking)
    {
      Models[Image.DatabaseIndex].SetActive(false);

      return;
    }

    if (!_videoPlayer.isPlaying)
    {
      _videoPlayer.clip = _videoClips[Image.DatabaseIndex];
      _videoPlayer.Play();

      Models[Image.DatabaseIndex].SetActive(true);
    }

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

This is my visualizer object, which might cause the restrictions for adding varied media, but I can't seem to make sense of how to modify it.

想知道是否可以添加多个可视化工具,可以向其中添加新的对象,视频和图像。 (例如视频已在项目中的方式) Goal is to allow adding extra files to display on visualizer

我在想一种方法,可以将Visualizer脚本制作为空白,并为视频调用一个四边形,为一个添加了3D对象的空白,为图像调用另一个四边形。但这感觉正在偏离我到目前为止的水平。

不确定哪种路径可行,请使用一个AugmentedImageVisualizer,或者是否可以创建多个用于显示不同对象的Visualizer。如何使其更具模块化,以便显示其他媒体,但仍保留添加和删除视频,对象和图像的功能,并保持锚定顺序

1 个答案:

答案 0 :(得分:0)

我假设您正在将资产中的预制件设置为AugmentedImageVisualizer类,是否尝试实例化它们?

默认的ARCore增强型不从资产分配预制件,脚本位于带有3D对象的预制件中。

还尝试将对象移动到图像的中心,因为您可能会将对象投射到远离视图的地方。

对不起,我的英语。

示例:

将其放在模型中每个项目的开始空白处。

GameObject.Instantiate(Models[Image.DatabaseIndex], Image.CenterPose.position, new Quaternion());