スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スプライトにシェーディング

ネタと健康がないので小ネタ。

液体を表現するときに大量にスプライトを描画するわけだけど、これをスプライトではなくて、体積を持った感じの球体にしたいと思ったことがあった。
理由はライティングしてスペキュラとかで「照り」を描きたかったわけだ。
しかし大量に表示されるスプライトにジオメトリを使うのは現実的でない。
うーん、とおもってたら、nVidiaのスライドでジオメトリではなくてスプライトからつくった法線でライティングするこれがあったぞと。
http://www.geeks3d.com/20100809/siggraph-2010-screen-space-fluid-rendering-for-games/
んでこの手法では深度から法線を作ってるようにみえるんだけどもその方法がいまいちよくわからんかった。
対象にするのは球体なので、そもそも法線を再計算するよりも球体の法線マップを書き込んだテクスチャを用意すればいいのではないだろうかとおもった。
ピクセルシェーダーではレンダーターゲットにある色を法線ベクトルとして扱ってライティングをする。

結果
sprite_lighting_2.jpg
なんかハイライトがゆがんでる・・。
でもまあ、それっぽくみえればいい話のエフェクトに使うので、これでいいかな・・ 実際に使うときはここまで光を強くしないし。


そのほか
○キーフレーム補間
モーション関係で、blenderの吐くfbxは、すべてのフレームにキーが打たれる(24FPSなら一秒間に24個)。
ゲームではキーフレームアニメーションなんだけども、キーフレーム間の補間なしに存在するキーの値を行列に与えてスキニングをしている。
なので24FPSを60FPSにタイムラインを変換してやってた。そうするとキーフレームの間隔が空いてモーションが割とがたがたになりスムーズに動いてくれない。
なので、最初はキーフレームのタイムラインを変換する際に補間したキーを埋めてぴっちり60FPS分のモーションを作っていた。
データを作るフローはblender->fbx出力->assimpを使った自作コンバータ->自作フォーマット->ゲームね。
コンバータ部分でタイムラインの変更とキーフレームの補間をする。
するともちろんデータ量は肥大化する。最初はボーンが220くらいのキャラを動かすのに実行時に補間してたら重いだろうなとおもってたんだけども。
んで肥大化したデータがけっこう洒落にならん感じだったので、やっぱり実行時補間することにした。
補間できればキーフレームをもっと間引いても問題ないし。
なのでキーフレーム間引き&補間がうまくいったので、まあそういう。

○モーショントランジション
あるモーションからあるモーションにうつるときに、モーションを作成する時点で最終フレームと開始フレームのポーズを完全に一致させてれば、「モーションの途中でほかのモーションに移行しないなら」問題はないけど、いろいろやってるうちにやっぱりそういう必要がでてきた。
なのでもやもやしながらモーションが「カクッ」とならないようにモーショントランジションを実装。
ほかにも理由はあるけど省略。

○モーションイベント
モーション内で特定の条件で、ループさせたい場面があった。一つのモーションをループさせるなら楽だけど、モーション内なのでモーションデータと一緒にそのループ開始と終端の情報が必要になった。
なのでそのへん編集するツールを作成。データはめんどくさいのでモーションデータには埋め込まないけど。

○えきたい
かなり試行錯誤してたんだけど、ほとばしるえきたいの表現はこれ。上のスプライトに対するライティングはまだ未実装。
liquid.jpg
ポリゴンとのあたり判定が結構苦労した。
やっていることは上のscreen space fluid renderingに近い(全然ちがうけど)。これに2Dメタボールの描画処理を加えてある。

○物理ボーン
スカート髪の毛とか、クロスシミュレーションをするには重すぎるのと、データつくるの大変かもしれんと思ってボーンでのあたり判定をして動かすことにしてた。
結果的には、スカートが微妙。めくれたりする動きや、あたり判定が頂点単位ではないので簡単にめりこむ。思ったようにうごかない。ここは妥協ラインが結構むずかしいかもしれない。立ってる状態とか、あまり大きく動かない場面だとまあまあなんだけども。

○おもちゃ
item.jpg
おもちゃ実装。
おもちゃ自体は意外と思い浮かぶバリエーションがなくて困った。
でもまあ十分と思われる数は用意できたのでまあいいやとしよう。

○数値的データ表示
ゲーム内でのいままでのデータ(○○した量、○○した回数)を記録して、それも表示できるようにした。
意外と無視できない要素かもしれないと思った。


キャラクターアニメーションやシェーダーとの格闘が多い日々。
キャラクターアニメーションについては拡充したりツール作ったりしていけば財産になるっていうか、今後のゲームにも無駄にならずに使っていけるし、シェーダーはどこまでもついてまわる。
いまのゲームでも画面エフェクトやパーティクル関係とか再利用可能な状態にまとめながらやってるので無駄はない・・とおもわれる。

実際のゲームの進捗は
さっぱり

いろいろ実装し補強したあたりで細かい不満点は消えてきたので、あとは本当にデータさえつくればっていう感じまで落とし込めてきている。

これ終わらせないと次にもいけないので。

諸行無常。
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

zerobyteorbit

Author:zerobyteorbit
deathpiyoがgameをdevelopしたり、musicをcomposeしたり迷走したりする。

現在は迷走中。

under the lotusはリビルドのために考え中。

deathpiyo twitter

UnderTheLotus test3h(download)
I'm thinking about rebuilding UTL.


同人音楽アルバム
[Lovers Immortality]
-Japanease-
Lovers Immortality -works until worldend- DLsite.com直リンク
Melonbooks DL
-English-
Lovers Immortality -works until world end- Link to DLsite.com

18+
【東の森の魔女2 VS 魔王 -終宴する世界と肛虐(逆)の魔女たち-】
東の森の魔女2 VS 魔王 -終宴する世界と肛虐(逆)の魔女たち- DLsite.com直リンク
DMM.同人

紹介ページ


【地下迷宮の機械姦自壊オナニー生活。】
地下迷宮の機械姦自壊オナニー生活。 DLsite.com直リンク
DMM同人

紹介ページ




DLSite
Link to DLsite.com

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。