はぅ君プロジェクト > 管理人近況 > 未分類 > ポイントスプライト 【趣】
この記事は、旧システム用に書かれたものです。
本システムでは正常に表示されない可能性があります。ご了承ください。
遅寝早起き成功ヽ(・-・)ノ
まぁ昨日書いたんだし今日ぐらいは守らないと。
睡眠時間ノルマって、一日遅れてくる(気がする)ので、明日起きれるかが勝負でもあったりする。
ひさびさにProjectコンテンツ活動。
今回はポイントスプライトです。
3D空間は、全てポリゴンで表現されるのですが、雨とか雪とかにまでポリゴン張ってたら、パソコンの能力が全然足りません。
そこで、こういう小さな物体(パーティクル)はどう表現しようか?ということです。
2D描写機能(スプライト機能)を使っても実装できますが、それだと一昔前のドラマの雨シーンみたいに、『手前だけ雨が降ってる~』になってしまいます。
これでは話になりません。
そこで、ポイントスプライトの出番であります。
先ほど話しました、ポリゴンですが、DirectXの全てのポリゴンは3つの頂点のみで構成され、それで三角形を作っています。
四角形は4つの頂点を使って、三角形を2つ描写して実現しているわけです。
で、ポイントスプライトというのは、この頂点を1つだけ使って、スプライト機能を実装してしまおうという話であります。
頂点なので、これは3D座標を持てますから、主人公の動きに合わせた、現実味のあるパーティクルが表現できます。(雨に向かって走れば、雨が自分のほうに向かってくるように実現される)
また、建物の向こう側に降った雪はちゃんと隠れてくれます。
このポイントスプライトを応用すれば、火花とか砂煙なんかも実装できますね。
いわゆるエフェクト系なのですが、非常に重要な要素でもあります。
ちなみに、頂点1個分のコストしか使わないので、プログラムにもあんまり影響を与えることなく利用できます。
まぁようは点が描けるようになったということ。これがなかなか便利。
あとやりたいのは、ジオメトリブレンディングとかいう、オブジェクトに異なる変換を与えるもの。例えば立方体に捻りを加えたりできるらしい。
頂点をもっと動的にいじれば多分波が作れるんだ(・-・)! 海の波。あのうねうねうねっていながら、太陽の光を反射してるあの構図が大好き。
ところで、こうやって何かしらの機能の実現方法が分かったら、これを関数化してXGLに埋め込みます。
こうすることで、使いたいときに使いたいようにその機能が使えるようになるわけです。
つまり、XGLっていうのは、いろいろなやり方が書かれたコードということになります。数学で言えば関数に近いのかなぁ。
とある法則がf(x)=x*2+1って導き出せたなら、次からはその法則については何も考える必要は無くて、ただ単純にxを入れるだけで答えが出てきますよね。
そんな感じです。
コメント無し
2013年もよろしくお願いいたします!
合計 | 228095 |
12/12 | 20 |
12/11 | 99 |
12/10 | 80 |
12/09 | 93 |
12/08 | 78 |
12/07 | 93 |
12/06 | 98 |
1,721,430 | 秒 |
478 | 時間 |
19 | 日 |
5.4586 | % |