如何将视频叠加到 3d 模型后面的 SceneView 背景上?

How can I overlay a video onto background of SceneView behind a 3d model?

我在没有使用相机和 AR 会话的情况下渲染了一个 3D 场景(https://developers.google.com/ar/develop/java/sceneform/build-scene)。

我想要做的是在我从画廊中选择一个视频后,将视频放到那个绿色背景上。我知道如何导入视频和更改背景颜色(sceneView.setBackgroundColor(Color.MAGENTA);)

图像是这样的。 (https://developers.google.com/ar/develop/java/images/sceneview.png)

我第一次想到,如果我在 XML 布局中的这个 "SceneView" 后面找到一个视频视图,然后将背景设为透明,它会起作用,但它没有起作用。

下面的代码无效。

    activity_ux.xml

  <VideoView
      android:id="@+id/videoView"
      android:layout_width="match_parent"
      android:layout_height="match_parent" />


  <com.google.ar.sceneform.SceneView
      android:id="@+id/sceneView"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:alpha="1"
      />


    MainActivity.java

      sceneView = (SceneView) findViewById(R.id.sceneView);
      sceneView.setBackgroundColor(Color.TRANSPARENT);

你知道怎么做吗?你有什么想法可以达到我的目的吗?

目前不支持,AFAIK - GitHub 上有一个公开请求:https://github.com/google-ar/sceneform-android-sdk/issues/263

您可以通过在场景中添加表面并在其上播放视频来实现您想要的效果。做法是:

  • 创建一个 ExternalTexture 来播放视频
  • 创建一个 MediaPlayer 并将其表面设置为 ExternalTexture 的表面
  • 使用 ExternalTexture 构建一个新的渲染器
  • 创建一个节点并将其添加到您的场景
  • 将节点的可渲染设置为您构建的新 ModelRenderable

Scenefrom 中包含一个示例,可能会有所帮助 - link 在此答案中: