在Arcore 3D模型中应用动态纹理

时间:2019-05-17 11:52:34

标签: java android arcore sceneform

我无法在从Google场景表单插件转换的3D模型上应用纹理。 我只能在“安迪”模型上添加纹理, 所有自定义模型都没有任何纹理。

我尝试应用在github上发现的纹理技术,这是我发现的链接 https://github.com/google-ar/sceneform-android-sdk/issues/41

std::pair

我希望按钮单击时选择的纹理会应用于ar core android中投影的3d模型

1 个答案:

答案 0 :(得分:0)

并非所有模型都具有预定义的纹理采样器。因此,如果您尝试为没有任何纹理通道的模型设置纹理,则必须首先为其设置自定义材质。

当您通过android studio将模型转换为sfb时,您可以指定一个自定义材质文件。这里是一个可以设置自定义纹理的材料的简单示例:

material {
    name : "Textured material",
    parameters : [
        {
           type : sampler2d,
           name : texture
        }
    ],
    requires : [
        uv0
    ],
    shadingModel : lit,
    blending : opaque
}

fragment {
    void material(inout MaterialInputs material) {
        prepareMaterial(material);
        material.baseColor = texture(materialParams_texture, getUV0());
    }
}

只需将其另存为.mat文件,使用此材料创建sfb,然后从上面进行编码即可。如果您想在运行时应用材质,那么暂时没有小解决方法是不可能的。只需创建一个简单的3D模型(例如三角形),然后使用这种材料将其转换为sfb。然后在运行时加载材料并从中复制材料。现在,当您加载要显示的模型时,可以使用自定义模型简单地覆盖原始材料。