在运行时更改AR核心中的对象纹理

时间:2019-12-18 09:40:59

标签: android 3d augmented-reality arcore sceneform

我正在创建一个应用程序,需要在其中更改3d对象的纹理(图案)。我正在使用AR Core SDK和android。我已经使用了下面的代码,但是没有用。

Texture.builder()
                .setSource(this,R.drawable.fabric3)
                .build()
                .thenAccept(t -> {
                    BaseTransformableNode node =
                            arFragment.getTransformationSystem().getSelectedNode();
                    if(node!=null){
                        node.getRenderable().getMaterial().setTexture("baseColorMap",t);

                    }
                }); 

文档也对我没有太大帮助。 这是我的SFA文件

{
  animations: [
    {
      clips: [
        {
          name: 'Take 001',
          runtime_name: 'cylinder',
        },
      ],
      path: 'sampledata/models/cylinder.fbx',
    },
  ],
  materials: [
    {
      name: 'Blue',
      parameters: [
        {
          baseColor: [
            1,
            1,
            1,
            1,
          ],
        },
        {
          baseColorMap: 'fabric2',
        },
        {
          normalMap: null,
        },
        {
          interpolatedColor: null,
        },
        {
          metallic: 0,
        },
        {
          metallicMap: null,
        },
        {
          roughness: 1,
        },
        {
          roughnessMap: null,
        },
        {
          opacity: null,
        },
      ],
      source: 'build/sceneform_sdk/default_materials/fbx_material.sfm',
    },
    {
      name: 'Black',
      parameters: [
        {
          baseColor: [
            1,
            1,
            1,
            1,
          ],
        },
        {
          baseColorMap: 'fabric3',
        },
        {
          normalMap: null,
        },
        {
          interpolatedColor: null,
        },
        {
          metallic: 0,
        },
        {
          metallicMap: null,
        },
        {
          roughness: 1,
        },
        {
          roughnessMap: null,
        },
        {
          opacity: null,
        },
      ],
      source: 'build/sceneform_sdk/default_materials/fbx_material.sfm',
    },
  ],
  model: {
    attributes: [
      'Position',
      'TexCoord',
      'Orientation',
      'BoneIndices',
      'BoneWeights',
    ],
    collision: {},
    file: 'sampledata/models/cylinder.fbx',
    name: 'cylinder',
    recenter: 'root',
  },
  samplers: [
    {
      file: 'sampledata/models\\cylinder.fbm\\fabric2.jpg',
      name: 'fabric2',
      pipeline_name: 'cylinder.fbm\\fabric2.jpg',
    },
    {
      file: 'sampledata/models\\cylinder.fbm\\fabric3.jpg',
      name: 'fabric3',
      pipeline_name: 'cylinder.fbm\\fabric3.jpg',
    },
  ],
  version: '0.54:2',
}

我有2个纹理面料2和3,我想在单击按钮时将纹理从面料2更改为面料3。 我正在为3d模型使用.fbx文件。

0 个答案:

没有答案