Android向けOpenGL 3DライブラリRajawaliを使って、最小限のシーンをセットアップしてみました。
まず、app/build.gradle
にRajawaliを追加します。
build.gradle
dependencies {
compile 'org.rajawali3d:rajawali:1.1.970'
}
MainActivityを以下のように書き換えます。
MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import org.rajawali3d.view.SurfaceView; // これ重要!! android.view.SurfaceView ではない!!
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SurfaceView surfaceView = new SurfaceView(this);
surfaceView.setSurfaceRenderer(new MyRenderer(this)); // setRenderer() ではなく setSurfaceRenderer()
setContentView(surfaceView);
}
}
MyRendererクラスも作成します。
MyRenderer.java
import android.content.Context;
import android.graphics.Color;
import android.view.MotionEvent;
import org.rajawali3d.Object3D;
import org.rajawali3d.materials.Material;
import org.rajawali3d.primitives.Sphere;
import org.rajawali3d.renderer.Renderer;
import org.rajawali3d.scene.Scene;
class MyRenderer extends Renderer {
MyRenderer(Context context) {
super(context);
}
@Override
protected void initScene() {
Scene scene = getCurrentScene();
// 球を作る
Object3D obj = new Sphere(1, 16, 16); // 半径1の球。16,16は頂点の分割数で、数を大きくするほど球に近づく。
obj.setPosition(0, 0, -5); // 視点は0,0,0で0,0,-1の方向を向いている。0,0,-5は画面の奥の方になる
scene.addChild(obj);
// 球の見た目を定義する
Material material = new Material();
material.setColor(Color.CYAN);
obj.setMaterial(material);
}
@Override
public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset) {
}
@Override
public void onTouchEvent(MotionEvent event) {
}
}
実行結果
球が見えます!よくわかんないけど!