ARCore Sceneform ChromaKeyVideo Sampleproject как просто использовать функцию видео

Я ознакомился с недавно выпущенным образцом проекта ChromaKeyVideo для ARCores Sceneform.

Я хочу использовать эту функцию для отображения видео в моей сцене AR, но без функции цветного ключа. В примере проекта они использовали текстуры для выделения фона и т. Д.

Но как я могу преобразовать этот образец, чтобы просто отобразить видеофайл .mp4? На данный момент мне нужно использовать реализацию OpenGL Renderer. Было бы очень хорошо использовать для этого Sceneform. И очевидно, что это возможно. Но я не знаю, какие материалы мне нужно использовать, чтобы просто показать качественное видео.

Итак, как мне изменить этот образец, чтобы просто отображать полное видео без функции цветного ключа?


person J. Hegg    schedule 21.08.2018    source источник
comment
Думаю, это тот же вопрос, который я задавал здесь: stackoverflow.com/questions/52748733/ проверьте ответ (это тот же самый, но с большим количеством кода)   -  person yasin    schedule 17.10.2018


Ответы (1)


Вы можете создать новый пользовательский материал, который просто использует внешнюю текстуру. Вы можете создать новый файл .mat в каталоге sampledata / models с именем externalTexture.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",
person Clayton Wilkinson    schedule 21.08.2018
comment
Спасибо за ответ. Почему-то это все еще кажется неправильным. Некоторые части фона все равно вырезаются. Есть ли какие-либо изменения, которые мне нужно применить дополнительно к образцу кода из проекта github, на который я указал в своем вопросе? - person J. Hegg; 17.09.2018