2015-03-12 5 views
0

Все работает отлично для меня с Rajawali в Android, кроме текстур. Я хотел бы программно загрузить прозрачное изображение в виде текстуры с рисунком шахматной доски, где каждый черный квадрат на самом деле полностью прозрачен, а каждый белый квадрат просто белый. Я хотел бы использовать это как текстуру над объектом, которая в противном случае имеет размытые и зеркальные цветовые свойства, которые могут быть изменены программно. Поэтому, если пользователь вводит синий цвет, я хотел бы, чтобы объект показывал сине-белый узор. Как я могу это сделать? Учебники rajawali действительно не помогают, поскольку для текстур rajawali сильно изменился в последнем обновлении. Также приложение примеров 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); 

, но и это не сработало. Любая идея?

+0

запрос - 'R.drawable.chessboardtexture' это изображение, которое будет использоваться в качестве текстуры. Но какова цель 'R.raw.stdblock_obj'? Это образ? – Kiran

+0

R.raw.stdblock_obj - это obj-файл, содержащий объект Kiran. – EricK

+0

ОК. Из вопроса второй пара это выглядело так, как будто это был образ. Предложение: вы пробовали текстуры с цветом на простом примитиве Plane? Или это не работает только для проанализированных объектов? – Kiran

ответ

1

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

"your3DobjectName".numChildren(), 

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

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

в этом случае вы будете знать, сколько Чайлдс и имя вашего ребенка объявлена ​​в вашем OBJ