Размещение текста на трехмерной плоскости

Я пытаюсь разместить трехмерную плоскость с текстом на ней. Самолет отображается правильно в 3D. Но текстура с текстом не рендерится.

Вот мой код для создания 3D-объекта:

float destPoints[]={1.23f,1.2f,-3.0f};
Object3D destPointObject3D = makePoint(destPoints,"Laptop");
getCurrentScene().addChild(destPointObject3D);

/**
 * Render the new correspondence destination point measurements 
 * white background with plain text
 */
private Object3D makePoint(float[] openGLPpoint, String text) {
    Material mSphereMaterial = new Material();
    mSphereMaterial.enableLighting(true);
    mSphereMaterial.setColorInfluence(0);
    mSphereMaterial.setDiffuseMethod(new DiffuseMethod.Lambert());
    Bitmap bitmap= ImageText.setTextInImage(text);
    try {
        Texture t = new Texture("text",bitmap);
        mSphereMaterial.addTexture(t);
    } catch (ATexture.TextureException e) {
        Log.e(TAG, "Exception generating earth texture", e);
    }
    Object3D object3D = new Plane(0.3f,0.1f,100,100);
    object3D.setMaterial(mSphereMaterial);

    object3D.setPosition(openGLPpoint[0],
                         openGLPpoint[1],
                         openGLPpoint[2]-3);
    return object3D;
}

//imageText method to write text
public static Bitmap setTextInImage(String text){
    // the original file yourimage.jpg i added in resources
    Bitmap src = 
            BitmapFactory.decodeResource(App.getContext().getResources(),
                                         R.drawable.white);    
    Bitmap dest = 
            Bitmap.createBitmap(src.getWidth(),
                                src.getHeight(),
                                Bitmap.Config.ARGB_8888);
    Canvas cs = new Canvas(dest);
    Paint tPaint = new Paint();
    tPaint.setTextSize(35);
    tPaint.setColor(Color.BLUE);
    tPaint.setStyle(Paint.Style.FILL);
    cs.drawBitmap(src, 0f, 0f, null);
    float height = tPaint.measureText("yY");
    float width = tPaint.measureText(text);
    float x_coord = (src.getWidth() - width)/2;

    // 15f is to put space between top edge and the text, if you want to 
    // change it, you can
    cs.drawText(text, x_coord, height+15f, tPaint); 

    return dest;
}

0 ответов

Другие вопросы по тегам