Не все модели имеют предопределенный сэмплер текстуры. Поэтому, если вы пытаетесь установить текстуру для модели, у которой нет какого-либо текстурного канала, вы должны сначала установить для нее собственный материал.
Когда вы конвертируете свою модель в sfb через Android Studio, вы можете указать пользовательский файл материала. Вот простой пример материала, где вы можете установить собственную текстуру:
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. Затем загрузите материал во время выполнения и скопируйте материал из него. Теперь, когда вы загружаете свою модель, которую хотите показать, вы можете просто переопределить исходный материал своим собственным.