Текстуры с программируемым цветом в Rajawali

У меня все отлично работает с Rajawali на Android, кроме текстур. Я хотел бы программно загрузить прозрачное изображение в виде текстуры с рисунком шахматной доски, где каждый черный квадрат фактически полностью прозрачен, а каждый белый квадрат просто белый. Я хотел бы использовать это как текстуру над объектом, который в противном случае имеет свойства рассеянного и зеркального цвета, которые можно изменить программно. Итак, если пользователь ввел синий цвет, я бы хотел, чтобы объект отображал сине-белый узор. Как я могу это сделать? Учебники rajawali не очень помогают, так как текстуры rajawali сильно изменились в последнем обновлении. Кроме того, приложение примеров Раджавали не очень помогает, поскольку все они, похоже, имеют дело с картами окружающей среды. Я пробовал, например:

protected void initScene() {
objParser = new LoaderOBJ(mContext.getResources(), mTextureManager,        R.raw.stdblock_obj); 
try{
Texture jetTexture = new Texture("jetTexture", R.drawable.chessboardtexture);
mTextureManager.getInstance().addTexture(jetTexture);
semiglossMaterial.addTexture(jetTexture);
semiglossMaterial.setColorInfluence(0);
}catch(TextureException e){
e.printStackTrace();
}
}

Объект визуализируется, но без текстуры. Размер изображения шахматной доски равен степени 2, и оно находится в правой папке R.raw.stdblock_obj. Это изображение в формате jpg, но я также пробовал использовать png, который тоже не работал.

Я также пробовал другой подход:

semiglossMaterial.enableLighting(true);
semiglossMaterial.setDiffuseMethod(new DiffuseMethod.Lambert());    
phongMethod.setShininess(iShininess);            semiglossMaterial.addTexture(new Texture("jetTexture",R.drawable.chessboardtexture));
semiglossMaterial.addTexture(new AlphaMapTexture("alphaMapTex", R.drawable.simpletexture3));
semiglossMaterial.setColorInfluence(0);

но и это не сработало. У кого-нибудь есть идея?


person EricK    schedule 12.03.2015    source источник
comment
запрос - R.drawable.chessboardtexture это изображение, которое будет использоваться в качестве текстуры. Но какова цель R.raw.stdblock_obj ? Это образ?   -  person kiranpradeep    schedule 19.03.2015
comment
R.raw.stdblock_obj — это obj-файл, содержащий объект Киран.   -  person EricK    schedule 19.03.2015
comment
Ok. Из второго абзаца вопроса показалось, что это изображение. Предложение: пробовали ли вы текстуры с цветом на простом примитиве Plane? Или это не работает только для проанализированных объектов?   -  person kiranpradeep    schedule 19.03.2015


Ответы (1)


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

"your3DobjectName".numChildren(), 

затем используйте простой

for(int i = 0; i < "your3DobjectName".numChildren(); i++)
{ 
   String name = "your3DobjectName".getChildAt(i).name(); 
   Log.d("rajawali", "Name: "+name);
}

Таким образом вы узнаете, сколько дочерних элементов и имя ваших дочерних элементов объявлено на вашем объекте.

person Armando Esparza García    schedule 13.05.2015