ARCore Sceneform ChromaKeyVideo Sampleproject 如何使用视频功能

Posted

技术标签:

【中文标题】ARCore Sceneform ChromaKeyVideo Sampleproject 如何使用视频功能【英文标题】:ARCore Sceneform ChromaKeyVideo Sampleproject how to just use the video feature 【发布时间】:2018-08-21 11:06:44 【问题描述】:

我查看了最近发布的 ARCores Sceneform 示例项目ChromaKeyVideo。

我想使用该功能在我的 ar 场景中显示视频,但没有色度键功能。在示例项目中,他们使用纹理来抠出背景等。

但我如何才能将此示例转换为仅显示 .mp4 视频文件? 目前我必须使用 OpenGL 渲染器的实现。使用 Sceneform 来代替它会非常好。显然这是可能的。但我不知道我必须使用哪些材料才能显示纯视频。

那么我该如何更改此示例以仅显示没有色度键功能的完整视频?

【问题讨论】:

我想这与我在这里问的问题相同:***.com/questions/52748733/… 检查答案(它是同一个但有更多代码) 【参考方案1】:

您可以创建仅使用外部纹理的新自定义材质。您可以在名为externalTexture.mat 的sampledata/models 目录中创建一个新的.mat 文件:

// Copyright 2018 Google LLC. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
material 
    "name" : "Chroma Key Video Material",
    "defines" : [
        "baseColor"
    ],
    "parameters" : [
        
           // The texture displaying the frames of the video.
           "type" : "samplerExternal",
           "name" : "videoTexture"
        
    ],
    "requires" : [
        "position",
        "uv0"
    ],
    "shadingModel" : "unlit",
    // Blending is "masked" instead of "transparent" so that the shadows account for the
    // transparent regions of the video instead of just the shape of the mesh.
    "blending" : "masked",
    // Material is double sided so that the video is visible when walking behind it.
    "doubleSided" : true


fragment 
    void material(inout MaterialInputs material) 
        prepareMaterial(material);

        vec2 uv = getUV0();

        if (!gl_FrontFacing) 
          uv.x = 1.0 - uv.x;
        

        material.baseColor = texture(materialParams_videoTexture, uv).rgba;
    

然后在您的 .sfa 文件中将材质源更改为 externalTexture.mat:

     source: "sampledata/models/externalTexture.mat",

【讨论】:

感谢您的回答。不知何故,它似​​乎仍然不正确。背景的某些部分仍然被剪掉。我需要对我在问题中链接的 github 项目中的示例代码进行额外的更改吗?

以上是关于ARCore Sceneform ChromaKeyVideo Sampleproject 如何使用视频功能的主要内容,如果未能解决你的问题,请参考以下文章

Sceneform 1.15 无法在 ARCore-Android 中播放 fbx 动画

ARCore Sceneform ChromaKeyVideo Sampleproject 如何使用视频功能

ARCore Sceneform ViewRenderable 以随机角度旋转图像

ARCore 不显示对象的真实尺寸

Google Sceneform – 是不是已弃用?有替代品吗? [关闭]

如何在 Flutter 中运行时生成 Sceneform 资源