2015年03月25日

BGEデモ動画

昨年末にキャンセルになったレーシングミク2014ver.のBGEデモ企画の紹介動画をアップしました。




このデモでは、BlenderのRigidBodyJointを使って、BGEでMMDっぽい髪揺れを実装しています。
「BlenderでMMDっぽいことができるよ」というのを伝えるために作ったデモでしたが、わけあって公開をキャンセルしたので、こんな形での紹介になっております。

今回は動画の紹介だけで、髪揺れの作り方は別の機会に紹介する予定です。
チュートリアルビデオを探せば参考になるものがありますので、お急ぎの方はYoutubeで「Blender Ragdoll」あたりを検索してみると良いかと思います。

では。
posted by gency at 01:49| Comment(0) | BGE

2014年03月24日

3Dグラフィックエンジン使うよ

AndroidでBGEを動かそうとしていましたが、早々に挫折しました。
代わりにAndroid用のゲームが作れる3Dのライブラリを使うことにしました。

BGEの代わりにしては難易度が跳ね上がりますが、ずっとBGE使ってたせいで3Dの基本も忘れてきてるので、鍛え直すにもいいかなと思ったりもします。

で、以前から気になっていた「Ogre」と「Irrlicht」というふたつの有名な3Dグラフィックエンジンを導入して、それぞれでHelloWorldを作ったりサンプル弄ったりしながら、機能やコードの読みやすさなどを比較し、どっちを使うか検討してました。
・・が、どうやら私の環境ではOgreをGPUで動かすことができないようで、Irrlichtを選択するしかありませんでした。
いきなりトラブルスタートとか勘弁ですので。

Irrlichtにも問題はありましたが大きなトラブルはありませんでした。
問題といえば、サンプルの影の描写で糸引いたみたいになってたり、衝突判定ゆるゆるだったりという程度ですね。それよりも描画速度やAPIのシンプルさなど良い部分が勝っている感じです。

なかでも私が惚れたのは描画速度。
2000頂点ほどのモデルをシーンに8体配置してアニメーションさせても400FPSというアホみたいな速度を見たとき、ずっとBGE使いだった私は衝撃を受けました。
GPUの本来の力ってこんなに凄かったんだね。
GTX285には申し訳ないことをした。。


▼鬼門、モデルデータ

BGE以外でゲームを作るときの鬼門ともいえるのがモデルフォーマット。
Irrlichtが対応するモデルフォーマットのうち、アニメーションが使えるフォーマットで、なおかつBlenderから直接エクスポートできるのは、X、MS3D、MD2の三つくらいしかないようです。
(他にはb3d、MD3があるけど、エクスポータが見つからず・・)

この三つのなかから使えそうなものを選ぶわけですが、これがなかなか決めかねております。
というか・・結論を言えば、使えるものがひとつも無いです。
三つとも試しましたが、全部アレでした。

MD2はボーンデータがなかったり、メッシュ(Blenderで言うオブジェクト)とマテリアルが1つずつしか持てなかったりと仕様的に物足りないです。
あと、三角ポリゴンじゃないとダメという仕様も難儀。
三角に変換するのを忘れてエクスポートやり直しという事態が想定されて嫌ですね。。

さらにテクスチャも後からプログラム側で貼り直す必要があったり、座標系の変換もされてないので自前でどうにかする必要があったりと何かと手間が掛かるため、早々に候補から除外しました。

Xは言わずもがな・・まともなデータが吐くのが大変です。
少なくとも私はちゃんとできた試しがないです。
今回も一応とばかりに使ってみたんですが、頂点位置すらめちゃくちゃでした。
対処も何も一切もせず、早々にご退場願いました。

残るはMS3Dですが、2.68aでMS3Dをエクスポートしていたときのこと、出力されたはずのファイルがどこにも見当たらないという現象が起こりました。
そしてその後、エクスポートしようとしたモデルデータが入ったBlendファイルを開こうとしたら「未対応のフォーマットです」というエラーが出てファイルが開けなくなってしまいました。

2.68a以外のバージョンではファイルを開くことができたので、後に別バージョンで再度エクスポートしてみたのですが、今度は正常にエクスポートすることができました。

トラブルの原因は調べてませんが、Blendと同名のMS3Dを出力しようとして発生した関連付けの事故だと妄想しております。
悪さしたのがエクスポータかWin7かは分かりませんが、、、怖いので再現するつもりもないです。
ちなみに、事故ファイルをダブルクリックしてBlenderを起動したら元通りに直りました。

で、MS3DをIrrlichtに読み込んでみた結果ですが、Xと大差ないレベルで酷かったです。。
ひとつだけ頂点が水平線の彼方に配置されてしまったようで、面が線に見えるほど伸びきってたりして、インパクトはXより上でしたね。
なんかトラブっただけって感じでしたね。。。


そんなわけで、まともに使えるモデルデータがひとつもない状態です。
結局、最初に除外したMD2が一番マシでしたね。
メッシュとアニメーションが正しく出力できたのは彼だけですし。
でも仕様が古臭くて使う気になれないんだよなぁ。

そして独自フォーマットへ・・


▼シェーダーとかBulletとか

今回、新たに発足したIrrlichtゲームプロジェクトの現在までの進捗をざっと紹介します。
モデルの描画とアニメーションを再生する仕組みはすでに作りました。
今はマテリアル周りとBullet(物理エンジン)の実装を同時進行でやっているところです。

今回は固定機能を使わないで自作シェーダーだけでやるつもりです。
で、自作のシェーダーを導入するための仕組みはほぼできあがりました。
Irrlichtは、サンプルが実に親切なのでこの辺の実装は容易でした。
助かりますわん。

Bulletの進捗ですが、こちらもわりと進んでましてSDK導入、サンプルのビルド、諸々のテストなどを経まして、そろそろゲームプロジェクトに物理エンジンを組み込もうかというところです。
まあ本番はここからですけどね。
どうやって組み込んだものやらさっぱりでやんす。


▼まとめ

今回はこんなところです。
それにしても、モデルフォーマットはいい加減どうにかしてほしいですね。
まあ難しいからどうにもなってないんだろうけど、せめてインディーズゲーム界隈だけでも定番フォーマットが誕生しないものだろうかね・・。

なんか、今日は愚痴が多くなりましたね。
すごい長文だし。
画像もない。
申し訳ない申し訳ない。

テトさんゲームにSSAOフィルターを導入したので、次回あたりでそれを紹介しようかな。
ミクさんも取り上げたいけど、前に紹介したときの状態で完全に止まってます。
ネタも被ってしまったので新しいアイデアを考え中です。

ではまた。



posted by gency at 00:34| Comment(0) | BGE

2014年02月05日

セルシェーダーでテトさん

アニメのようなビジュアルを表現するセルシェーダーを作ってみたよ。

celteto.jpg

とりあえずってことでノードで組みました。
トゥーンレンダリングの原理は、光線と法線の内積を色にするというものです。
光線ベクトルはライトに見立てた定数のベクトルを使っています。
この部分は、いずれはノードからGLSL直打ちに変更したときに、実際に設置されたライトからサンプリングすることになります。
(ライトデータの取得は組み込み変数を使わずに自前でサンプリングしてます)
今回は雰囲気の絵が見たかったので、ノードで仮組みしました。

輪郭線エフェクトは、いつぞや紹介したやつをそのまま使っています。
トゥーンシェーダーと輪郭線エフェクトは、一つの「セルシェーダー」としてまとめるのが理想だったんですが、輪郭線はポストエフェクト以外では無理そうだったので、トゥーンシェーダーノードと併用での実装となりました。


▼マテリアル輪郭線
約1年前に挫折した、マテリアルに適用するタイプの輪郭線エフェクトの作成に再チャレンジしてみました。
当時は線が汚すぎて挫折しましたが、今回は果たして・・・。
まあ、結論を言っちゃうと、今回もダメでした。
パラメータを詰めたことで、少しだけマシにはなったかなー程度でした。
原理が「視点と法線の内積」と、1年前と基本的に同じやり方だったので、当然といえば当然。
ということで、現在は別の方法を探っているところです。

で、すでに新しい輪郭線のヒントになりそうな面白い記事を見つけていまして、近いうちにBGEで実現可能か検証してみるつもりです。
BGEは使えるシェーダーに制約が多いので、記事にある通りの実装が可能か分かりませんが、まあ試行錯誤してみます。
結果がどうあれ一応報告はする予定です。


▼ ミク
ミク嬢速報。

mikumikuuuuu.jpg

借り物の髪をミクさんオリジナルに改造しました。
これでだいぶミクさんっぽくなったかと。
顔がまだケモ耳さんと同じなので、違いを出したいところです。

今回はこんなところです。
またね。
posted by gency at 21:08| Comment(0) | BGE