[英]Applying Dynamic texture in arcore 3D model
我无法在从Google场景表单插件转换的3D模型上应用纹理。 我只能在“ andy”模型上添加纹理,所有自定义模型都没有任何纹理。
我试图应用我在github上发现的纹理技术,这是我发现https://github.com/google-ar/sceneform-android-sdk/issues/41的链接
CompletableFuture<Texture> futuretexture= Texture.builder().setSource(this, R.drawable.texture).build();
ModelRenderable.builder()
.setSource(this, R.raw.model)
.build()
.thenAcceptBoth(futuretexture, (renderable, texture) -> {
andyRenderable = renderable;
andyRenderable.getMaterial().setTexture(MaterialFactory.MATERIAL_TEXTURE, texture);
})
.exceptionally(
throwable -> {
Toast toast =
Toast.makeText(this, "Unable to load model_node renderable", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
return null;
});
我希望有我们在按钮单击时选择的纹理将应用于ar core android中的投影3d模型
并非所有模型都具有预定义的纹理采样器。 因此,如果您尝试为没有任何纹理通道的模型设置纹理,则必须首先为其设置自定义材质。
通过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。 然后在运行时加载材料并从中复制材料。 现在,当您加载要显示的模型时,可以使用自定义模型简单地覆盖原始材料。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.