在安卓系统中,除了纹理之外,所有的功能对我的Rajawali都很有效。我想以编程方式加载一个透明的图像作为纹理,具有棋盘图案,其中每个黑色方块实际上是完全透明的,而每个白色方块只是白色。我想使用它作为一个对象的纹理,否则具有漫反射和镜面反射颜色属性,可以通过编程更改。因此,如果用户输入了蓝色,我希望对象显示为蓝白色模式。我该怎么做呢?rajawali教程没有真正的帮助,因为对于纹理rajawali在上一次更新中改变了很多。此外,Rajawali examples应用程序也没有真正的帮助,因为它们似乎都在处理环境地图。我尝试的是:
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);但这也没有起作用。有谁有主意吗?
发布于 2015-05-13 23:17:57
你必须将该纹理添加为.obj文件的子级,如果你不知道有多少个子级有你的.obj和它们的名称,使用:
"your3DobjectName".numChildren(), 然后使用简单的
for(int i = 0; i < "your3DobjectName".numChildren(); i++)
{
String name = "your3DobjectName".getChildAt(i).name();
Log.d("rajawali", "Name: "+name);
}这样你就会知道有多少个孩子,以及你的孩子的名字在你的obj中声明
https://stackoverflow.com/questions/29016168
复制相似问题