モデリング関連メモ:続き

昨日の続き。

テクスチャの参照方法

とりあえず3dsのファイルフォーマットを調べるところから。
日本語なら簡易だけどこことか、英語でいいならこことか。
マテリアルにテクスチャが複数内包されているかたち。普通のテクスチャ以外にもなんか色々Mapがある。ま、詳細はどうでもよくて、ひとまず概念だけ記憶。


で、プログラム側。具体的にどうやって描画まで持っていくのか。一つのモデルを表示する場合でも、複数のマテリアルが割り当てられていて、さらにそれぞれに複数のテクスチャが割り当てられている。マテリアルごとに分岐していって描画するのか、あるいは頂点ごとに参照マテリアルが指定されていて云々なのか、とかその辺。


OpenGLでのモデル表示はhttp://www.geocities.jp/gamerabbits/opengl1_7.htmのサンプルコードを参考にする。関数の意味はWisdomSoft:OpenGL入門:テクスチャを参照しながら。
OpenGLでは「名前」をテクスチャに付けて、それを使ってバインドする模様。シェーダからはどうやって見るんだろう。
床井研究室 - 第8回 視差マッピングを見る限りでは、モデルのテクスチャも普通にサンプラを使うっぽい。
本体で

glUniform1i(glGetUniformLocation(gl2Program, "dtexture"), 1);

と叫びながら、シェーダではそれを

uniform sampler2D dtexture;

とやって受け止める。
モデルの表示とあわせて考えると、「頂点を普通に描いていく」「マテリアルが前のと違ったら再設定」「テクスチャもその時に」「そこでサンプラにセット」「シェーダはそれを参照」という流れか。じゃあやっぱり仕事の方もなにがしかのサンプラが用意されてると思って良いか。あとはそこを調べるのみ。シェーダ側からじゃなくて、本体の方もマテリアルの設定まわりを見ればテクスチャを渡してる部分がわかるかも。

テクスチャまわりは普通どうやって描くのか

「テクスチャ 描き方」というベタなクエリでググりつつ、そいや写真を撮ってテクスチャにするとか聞いたなぁと思いつつ調べる。素材ってのもあったな。


んと、そもそもはアレの設定の描き方はどうするのが一番楽かを知るのが目的なわけで、それってもと画像から色でマスク作ってくりぬいてから作業すればほとんど問題ないのでは?という感じだ。問題は色の指定ぐらいか。

テクスチャのブレンドのあっちゃこっちゃ

デザイン側で設定してモーション化とかできるのかなぁとか思ったんだけど、どうせソフト側で制御することだし、まあいいか。ということで次。

OpenGLでグレア実験とか

そいや、すでに誰かやってないかなーと思って「opengl グレア」とか「opengl ポストエフェクト」とかでググるけどいまいち。最初からコーディングするつもりだったんで別にいんだけど。


で、床井研究室でGLSLについて調べたり、http://tpot.jpn.ph/t-pot/program/index.htmlでシェーダやポストエフェクトについて調べたり。
ODEのアレはシェーダの実験用でもあるんだよなーということを思い出し、GLSLを使う方向で進むも、drawstuffの中身読まないとつらくね?と思って引き返してt-potのサンプルを動かそうとして動かないのがあったり。もしかしてこのノートじゃシェーダ動かないんじゃ?と思い調べ中。


前に4Gamerで初心者用のスペックの解説があったなーと思って探す。
「PCゲームのお作法」がそれだった。これを見る限り、自分のノートは「グラフィックス統合型チップセット」というやつに該当するらしい。で、その統合なんちゃらがシェーダをサポートしてるかを探る。
時間がかかったけど、Wikipediaを見る限りではシェーダがサポートされてないやつらしい。
じゃあ頑張ってもしょうがないじゃないか!
ということで、シェーダいじりは完全にお仕事のみになります。ポストエフェクトとかいじってみたかんだども。まぁそこらへんは次のPCを買ったときってことで。


明日以降

  • モデルのテクスチャの場合もサンプラがあるはずなんで、それを探す
    • シェーダで普通にsamplerあたりで探す
    • 本体側でマテリアルのセットまわりを探す
  • アレからアレをもとにアレしてアレする
    • アレが多すぎだよ!書けないなら手帳にでも書いてろ俺!


疲れた。とにかく、シェーダまわりはうちのノートじゃどうしようもないということがわかったので、そこらへんの予定は先送りで。再び音楽の調査に戻る。それが終わったら再びおもちゃだな、ってまた完成までの時間が延びるのか。伸びる?延びるでいいのか。うん。