前提
LWJGLのセットアップが完了して、Eclipseのプロジェクトも作成済みであること。→前回をみてください。
インントロダクション
前回はプロジェクトをEclipse上に作成し、開発の準備をしました。
重要なことなので今一度、以下を確認してください。
- 作成した、プログラム「Hello World」が動くことを確認 → 前回
- LWJGLに必要なライブラリがBuildPathに繋がっていることを確認 → LWJGLのセットアップ
3Dグラフを作る
Chapter7-1で作成したCubeをベースに作成します。
初めにCubeを小さくします。変更するのは各頂点の位置を狭くします。
<DummyGame#init()>
// Create the Mesh float[] positions = new float[]{ // VO -0.1f, 0.1f, 0.1f, // V1 -0.1f, -0.1f, 0.1f, // V2 0.1f, -0.1f, 0.1f, // V3 0.1f, 0.1f, 0.1f, // V4 -0.1f, 0.1f, -0.1f, // V5 0.1f, 0.1f, -0.1f, // V6 -0.1f, -0.1f, -0.1f, // V7 0.1f, -0.1f, -0.1f, };
上記のように「0.5f」の部分を「0.1f」に変更します。
それで表示できるのが下のようなイメージです。
これができたら、大きさを調節できるように各頂点を定義している部分をメソッドに切り出します。そして、サイズを指定できるように変数に変えます。
<DummyGame#createCube()>
/* 追加したメソッドです */ private GameItem createCube(float cubeSize, float posX, float posY, float posZ) { // Create the Mesh float[] positions = new float[]{ // VO -1 * cubeSize, cubeSize, cubeSize, // V1 -1 * cubeSize, -1 * cubeSize, cubeSize, // V2 cubeSize, -1 * cubeSize, cubeSize, // V3 cubeSize, cubeSize, cubeSize, // V4 -1 * cubeSize, cubeSize, -1 * cubeSize, // V5 cubeSize, cubeSize, -1 * cubeSize, // V6 -1 * cubeSize, -1 * cubeSize, -1 * cubeSize, // V7 cubeSize, -1 * cubeSize, -1 * cubeSize, }; float[] colours = new float[]{ 0.5f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, 0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, 0.5f, 0.5f, }; int[] indices = new int[]{ // Front face 0, 1, 3, 3, 1, 2, // Top Face 4, 0, 3, 5, 4, 3, // Right face 3, 2, 7, 5, 3, 7, // Left face 6, 1, 0, 6, 0, 4, // Bottom face 2, 1, 6, 2, 6, 7, // Back face 7, 6, 4, 7, 4, 5, }; Mesh mesh = new Mesh(positions, colours, indices); GameItem gameItem = new GameItem(mesh); gameItem.setPosition(posX, posY, posZ); gameItem.setRotation(20, 30, 0); return gameItem; }
そして呼び出し部分を以下のように修正します。
<DummyGame#init()>
@Override public void init(Window window) throws Exception { renderer.init(window); gameItems = new GameItem[] { createCube(0.1f, 0, 0, -2), createCube(0.1f, 0.185f, 0.033f, -2.1f) , createCube(0.1f, 0.37f, 0.066f, -2.2f) }; }
ここまできたら、現在3つ並んでいるCubeをカレンダーのように並べます。が今回はここまでにします。ロジックを考える時間が欲しいのです。。。
でわでわ。。。
関連ページ一覧
<開発ツールのインストール>
<プロジェクトの作成(はじめ方)>
<GitからのPULL方法>
<Javaの基本から応用など>