ARCore и Sceneform - добавить карту нормалей в каноническую текстуру face me sh - PullRequest
1 голос
/ 16 января 2020

Я работаю над приложением AR, используя ARCore Sceneform. Я пытался добавить карту нормалей к лицу sh текстуры. Но нет никакой документации или демонстрации, доступной на этом.

Texture.builder()
   .setSource(this, R.drawable.cartoon)
   .setUsage(Texture.Usage.COLOR)
   .build()
   .thenAccept(texture -> faceMeshTexture = texture);

addOnUpdateListener:

for (AugmentedFace face: faceList) {

    if (!faceNodeMap.containsKey(face)) {

        AugmentedFaceNode faceNode = new AugmentedFaceNode(face);
        faceNode.setParent(scene);
        // faceNode.setFaceRegionsRenderable(faceRegionsRenderable);
        faceNode.setFaceMeshTexture(faceMeshTexture);
        faceNodeMap.put(face, faceNode);
    }
}

Ответы [ 2 ]

0 голосов
/ 18 января 2020

Sceneform Framework предоставляет определения материалов по умолчанию, которые позволяют разработчикам получать правдоподобно выглядящие материалы. Таким образом, вы можете добавить normal map для своего канонического лица мне sh, используя JSON i sh код в .sfa или .mat file.

Посмотрите на этот пример на GitHub.

Вот фрагмент кода:

{
  materials: [
    {
      name: 'Planet_Mat',
      parameters: [
        { baseColorFactor: [ 1, 1, 1, 1, ], },
        { baseColor: 'Planet_Mat_baseColor', },
        { normal: 'Planet_Mat_normal', },
        { metallicFactor: 1, },
        { metallicRoughness: 'Planet_Mat_occlusionRoughnessMetallic', },
        { emissiveFactor: [ 0, 0, 0, 1, ], },
      ],
      source: 'build/sceneform_sdk/default_materials/gltf_material.sfm',
    },
  ],
  model: {
    attributes: [
      'Position',
      'TexCoord',
      'Orientation',
    ],
    collision: {},
    file: 'sampledata/models/Planet/Planet.gltf',
    name: 'Planet',
    recenter: true,
    scale: 0.5,
  },
  samplers: [
    {
      file: 'sampledata/models/Planet/Planet_Mat_baseColor.png',
      name: 'Planet_Mat_baseColor',
      pipeline_name: 'Planet_Mat_baseColor.png',
    },
    {
      file: 'sampledata/models/Planet/Planet_Mat_normal.png',
      name: 'Planet_Mat_normal',
      params: {
        usage_type: 'Normal',
      },
      pipeline_name: 'Planet_Mat_normal.png',
    },
  ],
}
0 голосов
/ 17 января 2020

Ознакомьтесь с этой статьей об использовании пользовательских материалов в ARCore. Я не знаю вашего случая, но вам может потребоваться создать пользовательский материал, как описано в статье, и для этого вам потребуется фиктивный объект.

...