プログラムを組んでるので、その私的なメモです。ちょこちょこと追記してくかも。
内容的にはMinecraft(Bukkit/Spigot/Sponge)などのプラグインがらみか、3D(OpenGL)がらみのネタ中心です。
2017/7/18更新:lwjgl3系のネタを追加
目次
JYAML関連
Java用YAMLライブラリ
- 本家
http://jyaml.sourceforge.net/index.html - YAML仕様
http://yaml.org/
(日本語)http://magazine.rubyist.net/?0009-YAML - JYAML扱い方サンプル
http://etc9.hatenablog.com/entry/20091221/1261410989
lwjgl2系
OpenGLライブラリ
- 公式、およびJavaDoc
http://legacy.lwjgl.org/
http://legacy.lwjgl.org/javadoc/ - lwjgl解説
(桃缶食べたい)http://chocolapod.sakura.ne.jp/blog/archive/7 - OpenGL関連解説
http://homepage3.nifty.com/li-chu/OpenGL/OpenGL04.html
http://seesaawiki.jp/w/mikk_ni3_92/d/%a5%e1%a5%cb%a5%e5%a1%bc
http://www21.atwiki.jp/opengl/ - JBullet
まだネタが無い
lwjgl3系
OpenGLライブラリ
- 公式、およびJavaDoc
https://www.lwjgl.org/
https://javadoc.lwjgl.org/ - lwjgl3解説
(Wiki)https://github.com/LWJGL/lwjgl3-wiki/wiki
(ReleaseNote)https://github.com/LWJGL/lwjgl3/tree/master/doc/notes
(音ゲーの出来ない雑魚のブログ/日本語)http://cakkby.hatenablog.jp/
(3D Game Development with LWJGL 3)https://lwjglgamedev.gitbooks.io/3d-game-development-with-lwjgl/content/
https://ahbejarano.gitbook.io/lwjglgamedev/ - JOML(行列計算関連のライブラリ)
(公式?)https://github.com/JOML-CI/JOML
(JavaDoc)https://joml-ci.github.io/JOML/apidocs/index.html
関連用語(lwjglとOpenGL関連)
- OpenGL
2D/3Dグラフィック用API - OpenGL ES
組み込みシステム用OpenGL - OpenCL
異種混在のCPUなどの資源を使うAPI?(興味が無いからちゃんと調べてない) - OpenAL
オーディオAPI - OpenVR
VRハードウェア用API - Vulkan
2D/3Dグラフィック用API。OpenGLの刷新/再設計されたもの - LibOVR
Oculus用API - GLFW
Windowやイベント処理などのライブラリ。lwjgl2系のGLUTに変わるものみたいな - JOML
行列変換をサポートしてくれるライブラリ
Java
Java7系
- 日本語JavaDoc
http://docs.oracle.com/javase/jp/7/api/ - 命名規約
http://tomame0se.blog.shinobi.jp/java/java%EF%BC%9Ajava%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E6%A8%99%E6%BA%96%EF%BC%9A%E5%91%BD%E5%90%8D%E8%A6%8F%E5%89%87
http://oxynotes.com/?p=8679
Bukkit関連
直接関係ないけど、参考用
- プラグイン作成のチュートリアル
http://minecraftjp.info/modding/index.php/Plugin_Tutorial - JavaDoc(spigot)
https://hub.spigotmc.org/javadocs/bukkit/
3Dプログラミング関連用語
- 行列(マトリックス)変換
行列は高校の高学年の数学で習うかもしれないアレ。3Dプログラミング時に平行移動、回転、拡大縮小で行列を用いるとわかりやすい。数式とかは難しそうだけど、これだけなら概念は簡単。Webより3Dプログラミングの解説書とかで丁寧に説明されてるのを見かける。 - 行列合成
平行移動、回転、拡大縮小を同時に計算する時の概念で、通常は拡大縮小→回転→平行移動の順に処理する。(例えば、平行移動→回転、回転→平行移動とでは、中心軸と物体の位置関係が異なるので、想定外の結果になる)
当然、状況にもよるので、物体の位置関係などを気にしておく。 - クォータニオン(四元数)
3Dプログラミングでは座標の合成で使う(行列合成とは別もの)。複素数(プラスでもマイナスでも無い値)とか使うので、概念は非常に難しいので、ライブラリなどを活用した方が無難。
例えば左右の回転は回転軸がY軸となるが、一度回転した物体は相対的にはY軸でも現実のY軸と角度の違う軸を用いる事になる。さらに平行移動した場合は座標(0,0,0)を通過しない軸を回転軸にするかもしれない。そういう計算をする時に使ったはず(←うろ覚え) - ラジアン
角度の単位で、3Dの計算時によく用いられる。っていうか、間違えて公式に従って角度(°)を突っ込んで自爆することが多いので注意が必要な単位。1ラジアン=(180/π)度(°)。 - カリング
3Dの場合、他の物体に隠れて見えない物体などが出てくることがあるが、そういう物を表示させないことで、処理の軽量化を図る方法。 - テクスチャマッピング、バンプマッピング
テクスチャマッピングは3Dオブジェクトの表面に画像を貼ること。テクスチャ自体にも色を塗ったりグラデーションをかけられるが、複雑な色の場合、色毎にオブジェクトを作る訳にもいかないので、ある程度の大きさのオブジェクトにテクスチャを貼ってごまかす事。
バンプマッピングは見た目状グレースケールのテクスチャだが、色毎に法線(後述)を制御して、ポリゴンを増やさずに平面にざらつき感を与えたりなど凹凸があるように見せかける手法。テクスチャマッピングが平面なので違和感を感じる場合があるが、バンプと組み合わせることで、よりリアリティが出る。 - 法線、環境光(Anbient)、反射光(Specular)、拡散光(Diffuse)、自己発光(Emission)
法線…物体に対して垂直に引いた線(軸)の事。光(光線)は物体に衝突した際に、この軸の反対側に反射する。ポリゴンのへりの法線角度を調整することで、物体を滑らかに表現することもできるし、バンプマッピングを用いて複雑な法線を定義/利用することも可能。
環境光(Anbient)…光は光源からの線と表現するので放射状に存在する(つまり、光線毎に角度が違う)。太陽光線のように、どこに居てもほぼ一方方向から来る光は光線毎に角度を付けてもあまり意味が無いので、光の計算や管理を容易にする為に環境光を用いる。また、影は黒では無く間接光の影響で薄くなるので、環境光を擬似的な間接光として用いる事もある。
反射光(Specular)…光線が物体に当たると法線に従って反射するが、これは反射の度合いを示す。あまり反射しない物体の場合は黒に近づく。色の元素毎に設定するので、赤をよく反射するなら物体は光が当たるほど赤くなる。
拡散光(Diffuse)…光の反射時の拡散度合いを示す。拡散が弱く反射が強い物体は光沢が強く出る。
自己発光(Emission)…自分自身が発光物とする。光源としての処理の意味では無い(それはそれで必要だけど)。
コメントを残す