記事一覧

World of Level Design. Game Level Design and Game Environments.

エディタが提供されているゲームや無料SDKを使ったゲームのレベルデザインのノウハウ情報を教えてくれるサイト。
右のUlitimateLevelDesigonにサインアップすると、FPSのステージ製作に欠かせない要素などを解説するPDFファイルがもらえます。
FPSゲーム製作の方に是非。
http://www.worldofleveldesign.com/

Gears of War 3のリファレンスモデル

http://www.zbrushcentral.com/showthread.php?162646-Gears-of-War-3-Environment-Art
http://www.zbrushcentral.com/showthread.php?162670-Gears-of-War-3-Character-Art-Dump
GoW3のキャラクタや設置物などの本来のハイポリモデル。ゲーム中ではこれらをローポリに落とし込んで使っている。

HDRレンダリング

UnrealEngineのライティングで納得いかないところが一つある。
UDKのポストプロセスエディタのトーンマップは自分で変更できる数値設定だが、これが完全な固定であるということ。

「暗い部分屋内に入ると明るい野外の明るさが増して見えたりする」というような、明るさの視覚シミュレートみたいなことができない。
強い光に照らされて強いハイライトが再現されるのはHDRの効果なんだけどトーン調整が一定なので、まぶしいところがずっとまぶしいので違和感と感じるときもある。

このページの「第2の効能は,人間の目やカメラの“露出”をシミュレートできるというところにある。~」の部分ができない。
http://www.4gamer.net/specials/3de/051116_hl2lc/051116_hl2lc.shtml

そんな珍しい機能でもないし、できてもいいと思うんだけど、Epic的にあんまりいらないのかな?

法線をカスタマイズ

SCARの部品の中に、一番ノーマルマップと相性の悪そうな形状があると思ったので試してみたら案の定・・・。
こういう形状は無理してノーマルマップにこだわらず、角の微妙な丸みを諦めてシャープエッジにするか、ポリゴンを面内に押し出して法線を安定させるか、もしくはハイポリ側をベイクしやすい形状にしたほうがいいのかもしれない。

ファイル 162-1.jpg
A:ソースとなるハイポリ
B:ローポリのワイヤー構成
C:Bのシェーディング表示
D:Mayaで法線を編集して少しマシに
E:Mayaでノーマルマップをベイク
F:xNormalでベイク

法線を変更することの有用性は最近知ったばかり。もっと早く知っておくべきだった。
ちょっと世代の古いゲームからも使われているっぽい。

*追記*
UDKへの出力に関して、上の作業のようにスムースメッシュではないカスタマイズされた法線情報を確実にUDKに持っていくには、AutodeskのFBXプラグインを使う必要がある。
http://www.3dmotive.com/exportingqualifiednormals/
実際にSkeletalMeshのPSKでは法線情報を持ち込めなかった。

Emissiveによるライティング

ファイル 161-1.jpg

UDKのLightmassは、マテリアルのEmissiveを使って他の3DCGソフトのGIレンダリングと同じように面を光源にできる。
点光源では難しい、広い面状のライティングを再現したい場合とかに有効。
静的なライティングになるので動かせはしないが、球面調和ライティングの処理に含まれ、動的オブジェクトにも反映する。
http://udn.epicgames.com/Three/LightmassJP.html#Emissive のメッシュエリアライト

日本工学院、アンリアル・エンジンの授業を開始

日本工学院、アンリアル・エンジンの授業を開始・・・「Unreal Japan News」第31回
http://www.gamebusiness.jp/article.php?id=4355

ついに学校まできたかー

キャラに武器を持たせる for UDK

ファイル 150-1.jpg
どうやろうか悩んでいたいけど、実際やってみるとかなり簡単にできた。


ファイル 150-2.jpg
まず武器の基準(手首のありそうな大雑把な位置でもいい)となる大まかな箇所を中心位置にして、そこからジョイントを構成。
画像では畳めるマウントとトリガーを動かすジョイントとマズルフラッシュのソケット用ジョイントがあります。
この武器だけの構成をUDKへPSK出力してUDKにインポート。


ファイル 150-3.jpg
キャラクタ作成の作業用シーンに武器のシーンデータを持って行き、武器のジョイント全てをキャラクタの手首のジョイント階層に入れ、移動XYZと回転XYZに全て0を入力し、手首ジョイントの基準にする。そして改めて指を動かしながら手に対する武器の細かい位置や正しい向きに修整し、手と武器を握らせた構成にする。武器の位置合わせに行われた移動と回転情報は次の作業で使う。
ここでは保存やエクスポートなどは要らない。

ファイル 150-4.jpg
ここでUDKに移り、コンテンツブラウザからキャラクタのSkeletal Meshを開き、手首のジョイントからソケットを作成する。そしてソケットマネージャからRelative LocationとRelative Rotationにモデリングソフト側武器の移動と回転情報をそのまま入力すれば(Mayaのセンチメートル単位に限る)、先ほど調整した位置と向きになる。ちなみに数値指定じゃなくてもドラッグ操作で調整はでき、スペースキーで移動と回転を切り替える。
位置が合っているかを確認するため、上の画像ではソケットマネージャのPreview Skel Meshに先ほど出力した武器のSkelMeshを指定しプレビューさせている。握ったアニメーションもプレビュー再生しておくとなお良い。

ソケットの作成
http://udn.epicgames.com/Three/SkeletalMeshSocketsJP.html

実際ゲームやマシニマ内でキャラクタに武器を持たせるのも結構シンプルな操作でいける。キャラクタと武器両方のSkeletalMeshをシーン内に設置し、メニューの「表示⇒ソケットのスナップを有効にする」を行うと、キャラクタ側に先ほど作成されたソケットが表示される。そして武器を選択し、次にソケット部分をクリックするだけでソケット部分に自動でフィットする。

チュートリアル動画 3D Buzz Video Tutorials - Using UDK
シネマティクスに含まれる「14_-_Cinematics__002_RobotSkelMesh」を参考
http://udn.epicgames.com/Three/VideoTutorialsJP.html


ファイル 150-5.jpg
Matineeなどでキャラクタが動いてもソケットにくっついた武器はソケット元のジョイントにずっと追従し続ける。
ここまでスクリプトや設定ファイルの作成等を一切行ってないし、DCCツール側もキャラクタに特殊な要素追加や出力し直す作業が必要ない。

Cinema4Dエッジ設定⇒Mayaの法線設定

ファイル 148-1.jpg
Cinema4Dのソフトエッジ・ハードエッジの構成は、ある角度以上の角全体にスムースエッジが自動処理され、必要な角のエッジにハードエッジをかける仕組み。あくまでエッジ単位の区別。

ファイル 148-2.jpg
Mayaは面ごとの頂点に法線情報があり一つの頂点でも使う面ごとに法線が指定される。C4Dと同じようにエッジやフェイス単位でソフト/ハードエッジを切り替えることも可能。

ファイル 148-3.jpg
C4DもMayaもハードエッジ/ソフトエッジは法線処理を使って処理されると見ていいと思う。ちなみに法線とは面の向きの定義。面ごとの頂点法線が、面から割り出された法線からの平均方向に統一されるとソフトエッジになる。異なる頂点同士の法線の違いは面の表面内でグラデーション処理されて緩和されている。

C4DからMayaにソフト/ハードエッジ情報を持たせてデータ移行するにはColladaが最適。C4DのFBXでは確実にサポートされていないようだ。
しかしこのままMayaからUDKに出力すると全てのエッジがハードエッジになっていると思う。どうやら法線とはまた違った処理でソフトエッジがかかっているらしく、「法線のロック解除」を行うと本当の法線の状態が見れる。全てがソフトエッジかハードエッジなら、まとめてどちらかの処理をかければいいが、ソフト/ハードエッジが入り乱れているモデルの場合、エッジを再設定するのは結構面倒。
「法線のロック」で構成されたソフト/ハードエッジを法線として成り立たせるには、ロックの解除をされる前の状態で一旦FBXに変換する。

・エクスポート時
オプションにあるカレント プリセットで「Autodesk Media & Entertainment」のデフォルト状態にしてエクスポート。
・インポート時
同じプリセットからジオメトリの項目で「法線ロック解除」と「頂点単位の法線を結合」にチェックを入れる。

これで法線のロック情報が法線そのものになっている。ロックの解除をしても変わらない。
何でCinema4Dからのデータ移行にこだわるのかというと、ポリゴンのモデリング・UVの処理はMayaよりCinema4Dのほうが高速にできるから。


追記
C4DからMayaへColladaを経由して読み込んだ場合、法線は全てカスタマイズ(ロック)されているものとして認識されている。
FBX形式(接線と従法線オプション)を使って出力し、UDKでTangentオプションを有効にしてインポートすれば、ロックした内容もそのまま読み込むことができる。なので上記の作業が必須というわけではない。

アニメーション出力メモ

UDKの骨格を含んだメッシュ(PSK)とアニメーション(PSA)の出力

アニメーション作成の作業に使っているシーンは動きやポーズの作成にコンストレインを多様している。
この作業シーンのままActorXでPSK出力すると、特定の条件のコンストレイントがジョイントと誤認されて狂ったジョイント構成が出力されてしまう場合がある。

ファイル 147-1.jpg
自動でリグを作るDSN_RapidRigのプラグインで作ったキャラクタだとそんな現象が起きた。ジョイントじゃないコンストレイントのオブジェクトがルートジョイントになってたりしている。HumanIKでは大丈夫だった。

そこで、ジョイントのアニメーション情報を維持したまま邪魔なコンストレイントを削除する操作が必要になる。他にいい方法があるだろうけど、やってみたのはFBXでベイク処理をして出力する方法。

いったんコンストレイント・ジョイント・スキンモデル全てをFBX形式にベイク処理を加えてエクスポート。それを改めて読み込むとコンストレイントの処理は全て無効になっているが、ジョイントにはコンストレイントを使って付けたアニメーション情報とスキンオブジェクトのバインド情報が残っている。
これでコンストレインなどの邪魔なデータを消してPSK・PSAを出力すればいい。

ファイル 147-2.jpg
ファイル 147-3.jpg


**追記**
FBX出力時のベイク処理はうまくいかないところがあるので、以下の流れで。

Root選択
編集⇒キー⇒シミュレーションのベイク
デフォ設定から「下位」を選択、タイムレンジを「開始/終了」にして0-300等全ての範囲を指定して実行
Rootジョイントを選択、エクスポートしMB形式で保存
別のMayaから開き、Rootジョイントの階層に入ってないコントレイントのグループ等があれば削除

エピック・ゲームズ・ジャパン

誰がどんな経由でここを見つけるのか、たまにアクセス履歴を見たりするのだけど、
そしたらエピック・ゲームズ・ジャパンのtumblrページを見つけた。UDNのドキュメントはよく目を通すけど、それでも初めて知ることが紹介されている。
エピック・ゲームズ・ジャパンは、UDKやUnrealEngineでおなじみのEpicによる日本支社。国内のUnrealEngineゲーム製作のサポート等を行っている。
http://epicgamesjapan.tumblr.com/

話は変わるが、UnrealEngineに限らずゲームエンジンによる3DCG作品が流行ってほしい。一部のコミュニティでは結構流行っているし、今後は3DCG分野の一つとして成り立つんじゃないかと思う。
そのような用途として特にUnrealEngineはデータの持ち込みが簡単でオススメ。Cinema4DやBlenderからでもアニメーションの作成ができる(細かな点ではC4DよりBlenderのほうが対応良い)。何より無料で使えるし。


ファイル 146-1.jpg
建物をインポートしてLightmassでライティングの処理。各パーツはライトマップをベイクされるので、ほぼすべてのStaticMeshは二つ目のUVマップを持たせ、それをライトマップ用に使っている。