記事一覧

August 2011 Unreal Development Kit Beta

書くまでもないと思ったけどUDK8月版が出た。
http://udk.com/news-beta-aug2011
竹中工務店さんによるUDKの新たな使用法が紹介されている。
こちらでも。
http://www.gamebusiness.jp/article.php?id=4150

事前計算とはいえ、UDKはわりとしっかりしたGI処理をしているので建築デザインの用途にも向いていると思う。
こちらのyoutubeと関連動画にも注目。
http://www.youtube.com/watch?feature=player_embedded&v=n6UkNN-LRi0#!

8月号の新機能として一番気になったのはMaterial Functions。
http://udn.epicgames.com/Three/MaterialFunctions.html
マテリアルエディタのノードの部分的な処理を単体のグループみたいにまとめて、他のマテリアルから共有して引用しながら使えるようになる。
一括で修整などもできるから、かなり効率が上がると思う。ある程度の機能を備えたMaterial Functionsのサンプルも入ってた。
あと新機能のキャプチャ機能もマシニマ作成にはうってつけ。

UDKのすばらしいマテリアルや作品

John Heeter氏
海面に効果的なマテリアルを公開中。
http://www.johnheeter.com/

James Stout氏
http://microwavetower.blogspot.com/
製作過程のフォーラム
http://www.polycount.com/forum/showthread.php?t=74483

Julio Juarez氏
チュートリアルと太陽と月が動くサンプルを公開中。
http://3dbrushwork.com/

David Miranda氏
Crysis2にもあるようなマテリアルとポストプロセスを作っている。
公開してくれー。
http://dmg3d.blogspot.com/
http://forums.epicgames.com/showthread.php?t=750541

Jordan Walker氏
EpicでGoWシリーズの製作スタッフです。
BRAWLというコンテストの作品。ソース丸ごと公開中!
http://www.polycount.com/forum/showthread.php?t=82199
http://mutantspoon.com/

c35ur氏
同じくBRAWLに出展された作品。
http://www.youtube.com/watch?v=boVHMYWVVrA

キャラに武器を持たせる 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マップを持たせ、それをライトマップ用に使っている。

マテリアル・ポストプロセス WL-Shader 完成

Epicフォーラムにて紹介してます。
http://forums.epicgames.com/showthread.php?t=810407
ダウンロード
http://unreal.rgr.jp/Mydownloads/Weightless/WL-Shader.zip

含まれている殆どのマテリアルに共通しているこだわりとして、
・スペキュラのグロスにテクスチャを指定できる
・スペキュラマップは明るさとコントラスト調整を加えられる
・ノーマルマップは強度の調整が可能
・各種テクスチャはデフォルトで専用ブランクテクスチャが入っているので、全てを設定する必要が無い
などがあります。
ただ、予定にあったガラス用のマテリアルは難しすぎて時間かかりそうなのでやめておきました。

マテリアル作成@UDK

ファイル 144-1.jpgファイル 144-2.jpgファイル 144-3.jpg

UDKで使いやすく、そこそこ高機能なマテリアルを作っている。
「どのタイプにどの機能があり、どこを調整可能にするのか」等をCrysis2のシェーダを参考にしている。大まかな種類ごとに以下の専用のマテリアルを作る予定。

・肌(完成)
SSS(要Dx11)
光源通過(SSSが使えない場合の代用)
フレネル
光源に関係なくディフューズにスペキュラーを合成
その他

・布(完成)
SSS(要Dx11)
フレネル/ファジー
ディテール(小さくノーマルマップを合成)
その他

・髪
透過設定
その他

・漆喰/コンクリート
POM
スペキュラによる画像ベースの反射(要Dx11)
エディタ内でペイントできるStaticMeshの頂点カラーで2種類の別テクスチャ(ディフューズ/スペキュラ/ノーマルなど2つずつ)をブレンド
ブレンドを単純なグラデーションではなく、マスキングするテクスチャを指定可能

・ガラス/眼球カバー
屈折
独自のスペキュラ

様々な機能は数値や色で調整可能で、設定によって未使用にすることもできる。
完成したら公開します。マテリアルインスタンスでテクスチャを入れたり数値の変更をするだけで使えます。

Sculptris

無料で使えるSculptris
http://oakcorp.net/zbrush/sculptris/features/index.php

モデリングに関してZBと大きく違うのはポリゴンの分割で、押し出したり凹ませる部分だけポリゴンを分割する。全体を均等に分割するZBよりかなり効率が良い。表面積の大きい人体の全身や服のディテール追加ならこっちのほうがいいのかもしれない。
実際使ってみなきゃ分からないけどね。

character10 その2

ファイル 142-1.jpg
ファイル 142-2.jpg
テクスチャも完成してリグを入れてポーズをつけてCrysis2のSandbox3にインポート。ポリゴン数は三角で20317。
いつも思うんだけどCryEngineならでわのライティングの影響なのか、ノーマルマップの効き具合が弱く見えてしまう。


ファイル 142-3.jpg
Mayaのビューポート2.0


ファイル 142-4.jpg
ファイル 142-5.jpg
テクスチャは自分でDDSに変換するより、resource compilerの自動変換に任せたほうがいい。どうやらGamma correctとかいう処理をしているらしく、普通のddsだと強力な太陽光で簡単に色が飛んでしまう。HDR関係なのかな?
スペキュラマップのアルファチャンネルを使ってグロスをコントロールできるようだけど、なんでアルファチャンネルでやらなきゃいけないんだ。メモリの節約か?

character10

ファイル 141-1.jpg
体はcharater08のモデルを100%流用。テクスチャだけ作成。

ファイル 141-2.jpg
まだ途中で、服のノーマルマップとAOをベイクところ。
髪と靴はBlueMars用に作ったものを使っている。

ファイル 141-3.jpg
服は一度基礎モデルを作りGoZでZBrushに持って行き、詳細をモデリング。
そしておおまかなローポリモデルをリトポロジ機能で作成。ベイク時の面の向きを意識して三角ポリゴンを多様。(後からモデリングソフトで三角化しても分割結果がソフトによって全く違ったりするためでもある)
使うテクスチャを一まとめにしたいのでベイク先のモデルを一度ひとつにまとめてUVを整列させたりもしている。
xNormalでノーマルマップとAOマップを生成。

リトポロジの形状は、元のハイポリと比較して外側の輪郭がなるべく一致するように心がける。これは頂点一つずつを手打ちでやっていくZBrushのやり方が適していると思う。かなり面倒だけど。
ただ、あまり変化が無いスカルプを施したモデルの場合、わざわざリトポロジをせず一番最初の基礎モデル(Sudv1)をそのまま使えたりもする。

Autodesk Beast

ゲームのライティング処理でたまにAutodeskの「Beast」というのを聞くので調べてみた。どうやらLightmassと同じGI処理を事前処理し、ライトマップを自動で作成するミドルウェアらしい。
特徴として高速性がウリでGI処理とライトマップのベイク処理そのものが自動でリアルタイムに行われる。
http://www.youtube.com/watch?v=E3WjIJxsFDg

同じUnrealEngineを使っていたMirrasEdgeは屋内外で結構リアルな事前ライティングを使っていたが、あれはBeastを採用しているらしい。また、ほかのゲームエンジンのSDKである「Unity」にもBeastの機能が入っており、機能の一部としてBeastを無料で使えてしまう。
AutodeskのBeastの紹介ページでBeastはUnrealEngine3に入っていることが書かれているが、現在公開されているUDKにBeastの機能は入っていない。
UDKに入っているLightmassは、ライトマップだけでなく空間全体にライトを敷き詰める処理も行い、移動する物に対してもきれいなライティングが行われる。ただ、非常に時間がかかる。

UDK日本語フォーラム

http://forums.epicgames.com/forumdisplay.php?f=366
下のほうに日本語フォーラムのリンクがあります。
海外特有のこの形式のフォーラムで日本語って逆に違和感あるなあ。

MP5 RAS ローポリ その3

CryEngine3でのレンダリングをリベンジ。
ファイル 138-1.jpg
ファイル 138-2.jpg
マテリアルとテクスチャを調整。
AOをベイクしレイヤとしてスペキュラマップにも乗算合成。こうすることで強制的にAOの影の部分を完全に暗くなるようになる。
テクスチャは全て1024x1024にリサイズ。
あとキューブ式の環境マップも作成して適応。キューブマップにはAMD提供のこのツールを使った。
CubeMapGen
http://developer.amd.com/archive/gpu/cubemapgen/pages/default.aspx

PhotoshopがあるならnVIDIAのDDSプラグインで作れる。

MP5 RAS ローポリ その2

完成
Cinema4Dでレンダリング
AOのみ
ファイル 137-1.jpg
ファイル 137-3.jpg

CryEngine3
ファイル 137-2.jpg

テクスチャはカラー・スペキュラ・ノーマルを各一枚4096x4096で作成
CryEngine3はスペキュラマップの強弱の制御が緩い気がする。
細かいパーツでは影も処理されないから、小物とかのレンダリングにはきついのか。

お知らせ

いつからからか分からないけど、コメント機能にエラーが出るようです。
自分でやってみてもエラーが出るしcgiファイルをアップロードしなおしても変わらず原因不明。cgiのプログラムを変な風に弄ったのかサーバの仕様に絡んでるのか分かりません。
で、気軽に公開できるようなメールを作成することに。
ta20rgr@hotmail.co.jpというアドレスを取得したので、ご意見や質問あればこちらにご連絡ください。トップページの上のほうにも書いてあります。
ちょいプライベートな常用メアドに転送設定しているので確認漏れはありません。

MP5 RAS ローポリ

モデルとノーマルマップが完成した。
尖っていない微妙な丸みの角をローポリとノーマルマップで表現するのは非常に困難。ポリゴンが少ないほどスムースエッジ処理で面の法線が安定しない。だからといってシェープエッジとノーマルマップは相性が悪い。

ノーマルマップは昔Nurbusを駆使して作ったmp5から作成することを意識していたけど、こんな平面があるものは無理にノーマルマップにこだわらずにローポリ基準で作って最小限ベイク処理を行うほうがいいのかもしれない。

Cinema4Dスカイライト+AOで30秒ほど。
ファイル 135-1.jpg

Sandbox3(CryEngine3)で毎秒60フレーム。
レンダリングツールとして使える。
ファイル 135-2.jpg

Crysis2 SDK その2

ファイル 134-1.jpg
Crysis2は全体的にノイズっぽいのが画面にかかっているが、こう静止画でキャプチャしてみるとさらに目立つ。
ゲーム中でも思っていたんだけど、HumanskinのSSSはちょっと効きすぎな感じがしてる。度合いを調整する設定が無くSSS用テクスチャも入れても効かない(?)。

ファイル 134-2.jpg
BlueMarsに作ってた木も結構変わる。幹のテクスチャを作り直したほうがいいな。なぜかVegetationでないと影にテクスチャのアルファが反映されない。

Crysis2 SDK

ダウンロード
http://www.mycrysis.com/support/

マニュアル
http://sdk.crymod.com/dashboard.action

無事にMayaのプラグインから出力できた。
ファイル 133-1.jpg
用意されているshaderも同じだったけど中身は結構違ってた。
マテリアル構成はテクスチャごとにUVを変更できるようになっていた。

Dx11の最高設定にしてやっているが、物体とその影が落ちる場所が遠い場合、影の輪郭はぼやけているが近いところはクッキリしているのが再現されていたりしている。
ファイル 133-2.jpg
これはかなり嬉しい。

本家のキャラと比較すると光の当たり具合が全然違う。
どういうことだ・・・。
ファイル 133-3.jpg

June 2011 UDK Beta released

LandscapeにFoliage機能が追加され、Terrainのように草木をペイントで配置できるようになった。これでほぼTerrainと同じ機能を兼ね備えているので、設定がいろいろと面倒だったTerrainは次第にフェードアウトしていくと思う。
あとStaticMeshでLOD形状を生成する処理が追加されたりKimsetのデバッグ機能、各種負荷のモニタ機能などが追加されている。

http://www.udk.com/download