RSS2.0

LWJGL ライブラリの開発環境を整える

LWJGL を自分で拡張したい等の理由で、LWJGL 自体の開発環境を整える手順を書き残しておきたいと思います。環境は例によって Linux(Fedora 17)です。

LWJGL はプロジェクトも順調に進んでいますし、自分でライブラリ本体のメンテナンスをしなければならないということはないでしょうが、せっかくのオープンソースプロジェクトですし、一念発起してソースをいじってみたいという方が居ないとも限らないので、私が環境構築した際の情報を残しておきたいと思います。

ただ、LWJGL 自体を開発するための資料は見つけられなかったので、ソースコードを自前で eclpse に読み込んでいます。不足事項などあれば御指摘ください。

続きを読む LWJGLLinux  コメント (0) 2013/06/25 22:35:08

Linux 環境で LWJGL ライブラリをビルドしてみる

2013 年 4 月 21 日に LWJGL 2.9.0 がリリースされました。maven リポジトリにも ver 2.9.0 がアップされているので、maven を使う場合には pom.xml のバージョン番号を更新するだけで新しい jar ファイルを入手することができます。

今回はそこからさらに一歩踏み込んで、自分で LWJGL をビルドしてみたいと思います。環境はいつも通り Linux (Fedora17) です。LWJGL のビルドでは、jar ファイルの他に JNI として呼び出されるネイティブライブラリも生成されます。これはビルド環境用のライブラリのみビルドされるので、Windows 用のネイティブライブラリを作りたい場合は Windows でビルドしなければなりません。
また、LWJGL はビルドプロセス中で Annotation Processing Tool を使ってソースコードを自動生成しているため、リポジトリ内に必要なすべてのソースコードがコミットされている訳ではありません。もしリポジトリからソースコードを持ってきて自分で LWJGL の開発環境を作るのであれば、一度ビルドしてから eclipse などの IDE に読み込ませてください。
続きを読む LWJGLLinux  コメント (0) 2013/06/24 23:49:28

LWJGL で Blender の 3D モデルを表示してみる

普通 3D モデルを作るには Blender やメタセコイアなどのモデリングソフトを使うため、ゲームプログラム側ではこれらのモデリングソフトで作った 3D モデルを読み込み、表示する機能が必要になります。今回は Blender で作成した 3D モデルを Wavefront OBJ フォーマットと呼ばれるデータ形式で書き出し、LWJGL で読み込んで表示してみたいと思います。

完成図はこちら。
kuma.png
カクカクしててすごくレトロな感じがしますね!(注意: 作ったモデルのせいです(笑)

続きを読む LWJGLBlender  コメント (3) 2012/06/03 11:33:06

LWJGL で光源を使ってみる

LWJGL でのライティングについて試してみました。3D モデルといっしょに光源を置いて光を当て、3D モデルに陰影をつけていく機能です。
screenshot.png
光源から発せられる光には、モデルの照らし方によっていくつか種類があります。
またライティングにおいては、光をどの向きに反射するかを決める法線をモデルに設定していく必要があります。

ベクトルなんかも出てきてちょっと長くなるかもしれませんが、それでは見ていきましょー。

続きを読む LWJGL  コメント (0) 2012/05/20 15:54:54

LWJGL でデプステストを試してみる

今回は隠面消去の手法の1つである、デプステスト(深度テスト)について扱ってみたいと思います。
隠面消去とは、複数のテクスチャーを重ね合わせて描き込む際に、背後にある方のテクスチャーを割り出して手前のテクスチャーで隠すことです。

普通、複数のテクスチャーを重ね合わせる場合、先に描いたテクスチャを後から描いたテクスチャが上書きするため、奥にあるテクスチャーから描きこんでいく必要があります。しかし隠面消去を用いると、テクスチャーの描き込む順序をプログラマーが考慮しなくてよくなるため、コード側でテクスチャーを表示順でソートするといった処理が不要になるというメリットがあります。

デプステストによる隠面消去で、背景、キャラクター、キャラクターの前後にある複数のカードを重ねてみました。
screenShot.png
キャラクターの前後にあるカードがそれぞれ適切に上書きしている・されているのがわかると思います。
カードとキャラクターは透過イメージになっていて、これはアルファブレンドで合成されています。デプステストには透過イメージを扱いきれないという問題があるのですが、今回はこの問題への解決策についても触れていきます。
続きを読む LWJGL  コメント (0) 2012/05/15 15:54:46

LWJGL の座標系についてまとめてみる

今回は、三次元のモデルの座標が PC のウインドウ上の座標に変換される手順について触れながら、LWJGL(OpenGL)で扱ういくつかの座標系について、そして OpenGL 系の記事では必ず出てくるモデルビュー変換・射影変換とは何だったのかについてより知っていただければと思います。

今まで扱ってきたプログラムの裏でどのようなことが行われているのかを掘り下げたものなので、サンプルプログラムはありません。べ、別に楽しようとかじゃなi(以下略

OpenGL や Direct3D では、三次元でモデリングしたモデルを PC のアプリケーションのウインドウに配置する際に、何回か座標系を変換する処理が行われています。
突き詰めてしまえば、モデルは点、点同士を結ぶ線、線同士を結ぶ面で構成されていますが、そのひとつひとつの点がどこにあり、それをどの角度・距離から見たものなのか等を考慮して、アプリケーションウインドウ内での表示位置を決めなければなりません。ある点の座標をウインドウ内での座標に変換するために、以下のような段階を追って座標系を変換していきます。
続きを読む LWJGL  コメント (2) 2012/05/14 12:08:00

LWJGL で日本語フォントを使ってみる

今回は LWJGL でのフォントの使い方について書いてみたいと思いますー。
日本語表示もばっちり、こんな感じです。
screenshot.png
PSP 版だーりんも発売されたということでシュタゲネタ(笑

テキストメッセージの表示はゲームには欠かせない要素になりますが、OpenGL としてはあまりサポートされていない分野なので、LWJGL でも扱うのは少し手間がかかります。

基本的には、予め必要な文字をすべて書き込んでおいた画像をテクスチャーとして読み込み、そこから表示したい字を切り貼りしていく、というアプローチになります。
ただこれではフォントの準備だけで大仕事になってしまうので、Java AWT と連動させて動的に文字を書き込んだ画像を作っていく方法についても触れていきたいと思います。

2014/02/25 追記

LWJGL での日本語表示をより手軽に実現できるライブラリ LWJGFont をリリースしました。
この記事で紹介している方法とは表示するためのアプローチが異なりますが、あわせてご検討ください。


続きを読む LWJGL  コメント (0) 2012/05/05 09:28:25

LWJGL でキーボートやジョイスティックを使ってみる

前回の更新から少し間が空いてしまいましたが、LWJGL によるゲームプログラミング講座の続きを書いてみました。今回のテーマは入力処理です。
PC ゲームでは基本的には入力装置としてキーボードを使うことになると思いますが、LWJGL ではジョイスティック(ジョイパッド?ゲームパッド?)の API が用意されているので、合わせてご紹介していこうと思いますー。

今回の成果物はこちら。台風を縦横無尽に操って、尾道のあたりを荒らしまわりましょう。
Screenshot.png
ちなみに、マウス入力については今回は見送っています。私がコンシューマー系のゲームが好きなこともあって、ジョイスティックのみのインターフェースが好きなのが理由だったりします。マウスの入力処理については要望があればそのうち触れてみようかなーと思います。
続きを読む LWJGL  コメント (0) 2012/04/16 23:44:44

LWJGL でアニメーションさせてみる

LWJGL のタイマーを使ってポリゴンをアニメーションさせてみましたー。いかがでしょうー。
そしてせっかく動かすなら動画にしてみようということで、初動画にチャレンジです。音声はついてないので、セルフサービスであの曲を流していただけると嬉しいです。
動画はファイルサイズの関係などで若干微妙な感じになってしまいましたが、サンプルプログラムのほうはぬるぬる動きます。ぜひぜひ実行してみてください。

続きを読む LWJGL  コメント (1) 2012/03/28 19:48:39

LWJGL で加算合成、乗算合成ほかを試してみる

OpenGL のアルファブレンドによるいろいろな合成手法をまとめてみました。半透明表示の回ではアルファ値に応じて下地である元の色を強く見せる、一般的なアルファブレンド(透過表示)について扱いましたが、今回はアルファブレンドの他の合成方法について触れてみたいと思います。中でも加算合成、乗算合成はゲームのエフェクトとしてよく使われるものです。

半透明表示の回では色を塗ったポリゴンにアルファブレンドを適用しましたが、同じように、テクスチャーを貼り付けたポリゴンについてもアルファブレンドを適用することができます。今回は不透明な画像、半透明な画像、透過色を持つ透過イメージの3つを、それぞれアルファブレンドで合成してみたいと思います。
8e633b160a92304b7b081a50842bd42c8384.png
なお、私が LWJGL の glColor3f() が好きなので、説明では例にあげる RGB の値の範囲を(0f, 0f, 0f)~(1f, 1f, 1f)としています。一般的な RGB の最大値というと整数の(255, 255, 255)ですが、これも計算結果が 1/255 されるので、0f ~ 1f で指定した場合と結局は同じことになります。
続きを読む LWJGL  コメント (0) 2012/03/23 19:49:14
プロフィール HN: ももかん
ゲーム作ったり雑談書いたり・・・していた時期が私にもありました。
カレンダー
<<2024, 12>>
1234567
891011121314
15161718192021
22232425262728
2930311234