Java 3D LWJGL 〜セットアップ手順〜

LWJGLのセットアップを行います。
JOGLとか、Java3D系のフレームワークを試して見ましたが、3Dモデルをゲーム的に使用するのであれば、LWJGLが一番適当なフレームワークに思えるのでこちらを使用するための手順を記載します。

参考にするサイトはこちらです。(英語)

ライブラリの作成した時の動画を下に載せます。Eclipseでのライブラリ追加を行いました。

Zipのダウンロード

こちらのリンクからダウンロードサイトに移動できます。そして、下の方に「〜.zip」があるのでそれをダウンロードします。

そして、ダウンロードできたら、ライブラリ用のフォルダを作成します。上の動画では「LWJGL3」というフォルダを作成し、それをライブラリとして使用しました。細かいところは動画で実行しています。

追伸、全てをダウンロードすると(カスタムでは無い方)動画のように、jarファイルの仕分けをしないといけませんが、リンク先のとこだと、対象になるOSを選択してくれるので楽です。

Eclipseにライブラリを追加

上の動画にもありますが、手順を記載しておきます。

  1. 対象になるプロジェクトを右クリック
  2. 「Add Library」ライブラリの追加でユーザーライブラリを選択
  3. ライブラリを作成してあれば下のようにライブラリを指定する
    下のものはライブラリを作成済みで、追加済みなのでエラーになっています。
  4. ライブラリが無い時は作成する
    3の画像で右のほうに「User Libraries」というボタンがあるのでそれをクリック
  5. 下のような画面が立ち上がる
  6. Newボタンを押下
  7. 適当な名前を入力してライブラリ名にする(今回はテスト的に「NEW」と入力)
  8. NEWライブラリ(フォルダ)にJARファイルを追加(Add External Jarを選択する)

そして、忘れてはいけないのが、Nativeのことです。

上のような感じで、

  1. ライブラリを開く
  2. Nativeライブラリロケーションを指定
    これは、ダウンロードしたnative-<OS名>のあるディレクトリを指定するだけで良いです

これで、ライブラリフォルダが作成できるので作成したライブラリを選択してApplyしてやればオK!

実行テストをする

コードをコピーして、動かそうと思ったら、下のコードでエラーが出ました。

import static org.lwjgl.system.MemoryStack.*;
import static org.lwjgl.system.MemoryUtil.*;

この部分は、Nativeライブラリのロケーションを追加していないと出ます。

そして実行!

WARNING: nextEventMatchingMask should only be called from the Main Thread!

はて?何だろう?調べてみるとこちらのサイトで解決策がありました。MacOSの場合、上のようなエラーが出るということなので。。。
-XstartOnFirstThread をVMの引数に渡してやればOK!ということでした。
実行結果です。

とりあえずは、LWJGLを動かせたので、これでセットアップは完了ということになります。

Vertex3fクラスが無い

しかし、これで終わりではありませんでした。
今回の目的は、*.objファイルから3Dモデルを読み込みことなので、「Vertex3f」などのクラスも使用したい。。。

なので、こちらのJARファイルも必要なのでビルドパスに追加します。

そして、こちらのGithubリポジトリからObjFileLoaderをダウンロードします。 (パッケージ名などの細かいエラーは省略)

Displayクラスが無い

まだまだありました。。。org.lwjgl.opengl.Displayがlwjgl.jarにあるはずだけど、見つからず・・・。
探してみたところorg.lwjgl.utilにあるということでJARファイルをダウンロードしてきました

MavenでDisplayModeクラスを追加

Mavenを使用する場合です。POM.xmlファイルに下の依存関係を追加します。
注意としては<dependencies>タグの中に追加するところです。

<dependency>
    <groupId>org.lwjgl.lwjgl</groupId>
    <artifactId>lwjgl</artifactId>
    <version>2.9.1</version>
</dependency>

ビルドエラーはとりあえず解消

今までのファイルをインポートすることで、ビルドエラーは解消できると思います。
そして、チュートリアルのページを見つけました。とりあえずこれを進めないことには、Objファイルが読み込みできないと思いました。

まとめ

  1. セットアップの手順はここのページを見て行う
  2. JARファイルのダウンロードは、ここのページで行う、使用しているOSに対応したJARをダウンロードできる
  3. lwjgl_util.jarをダウンロード(追加)する
  4. pom.xmlにlwjglを追加する(上記の依存関係を追加する)
    <dependency>
    <groupId>org.lwjgl.lwjgl</groupId>
    <artifactId>lwjgl</artifactId>
    <version>2.9.1</version>
    </dependency>

でわ、でわ。。。