Rajawali中具有可编程颜色的纹理

时间:2015-03-12 17:14:10

标签: android opengl-es 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);

但这也行不通。 有人有想法吗?

1 个答案:

答案 0 :(得分:1)

您必须将该纹理添加为子项,.obj文件的子项,如果您不知道有多少孩子拥有.obj及其名称,请使用:

package com.example.alex.jsonparsegridview;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class ImageAdapter extends BaseAdapter {
    private Context context;
    private JSONArray android;
    private String TAG_PATH = "path";
    ArrayList<HashMap<String, String>> oslist = new ArrayList<HashMap<String, String>>();


    public ImageAdapter(Context context,  JSONArray android) {
        this.context = context;
        this.android = android;
    }

    public View getView(int position, View convertView, ViewGroup parent) {


        View gridView = null;

             try {
                 if (convertView == null) {

                     LayoutInflater inflater = (LayoutInflater) context
                             .getSystemService(Context.LAYOUT_INFLATER_SERVICE);


                 JSONObject c = android.getJSONObject(position);

                // Storing  JSON item in a Variable
                String path = c.getString(TAG_PATH);

                // Adding value HashMap key => value

                HashMap<String, String> map = new HashMap<String, String>();

                map.put(TAG_PATH, path);

                oslist.add(map);

                gridView = new View(context);

                // get layout from mobile.xml
                gridView = inflater.inflate(R.layout.mobile, null);

                // set value into textview
                TextView textView = (TextView) gridView
                        .findViewById(R.id.grid_item_label);
                textView.setText(path.toString());

                // set image based on selected text
                ImageView imageView = (ImageView) gridView
                        .findViewById(R.id.grid_item_image);


                Picasso.with(context).load("http://www.500kgiveaway.co.uk/" + path).resize(400,400).into(imageView);

                 } else {
                     gridView = (View) convertView;
                 }

             } catch (JSONException e) {
                e.printStackTrace();
            }

        return gridView;
    }

    @Override
    public int getCount() {
       return android.length();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

}

然后使用简单的

"your3DobjectName".numChildren(), 

通过这种方式,您将知道在您的对象中声明了多少孩子以及您孩子的姓名