記事一覧

動画やゲームも滑らかなリモートPCソフトSplashtop2

離れたタブレットからPCを操作してみたく、VNCやウィンドウズのリモート機能を試しましたが、このSplashtop2というソフトが群を抜いてパフォーマンスが高い。
サウンドも普通に転送され、リモートするPCのデスクトップは解像度をそのまま維持、マルチモニタに対応したモニタの切り替え機能もあります。
接続後、設定をsharpからsmoothに変えると、多少文字が滲んだ感じになるが動画やゲームも何とかできそうなフレームで描写される。
タブレットはPC用のマウス・キーボードもサポートしているので、それらを併用すればリモート先のPCをそのまま使っている感じになりますね。
リモートされるPCはStreamerっていう専用ソフトを常駐させるんですが、名前からして画像の連続転送ではなく動画みたいなストリーミング処理したデータを送っているんだろうか?
このソフトに限らずタブレットのリモートアプリは、Googleアカウントで同期すればポートを空けたりせずとも簡単にPCを検出できたりします。

http://www.splashtop.com/ja/splashtop2
http://www.youtube.com/watch?v=80e80QMvIy8


UDKのKismet、特にMatineeを勉強中。
シーンを丸ごとFBXに出せますね。しかもUDKで編集した頂点カラー情報も維持している。DCCツールで丸ごとシーンを構築する場合に便利そう。

UnrealEngine4 その2

デモ
http://www.youtube.com/watch?v=OZmRt8gCsC0

機能の詳細やエディタのインターフェイス等
http://www.youtube.com/watch?v=MOvfn1p92_8
UnrealEngineはバージョンが変わるとガラリと見た目が変わりますね。
一体化できるタブを多用した構成。

nVIDIAの記事
上記2つの動画の高解像度版もあります。
http://www.geforce.com/whats-new/articles/stunning-videos-show-unreal-engine-4s-next-gen-gtx-680-powered-real-time-graphics/

GI処理はvoxel cone-tracingという手法(Shader.jp)
http://www.shader.jp/?p=701

西川善司の3Dゲームファンのためのグラフィックス講座・E3特別編その7
http://game.watch.impress.co.jp/docs/series/3dcg/20120610_539330.html


ファイル 224-2.jpg
窓が閉じる瞬間を捉えたもの。動的なオブジェクトである扉がGI処理に影響している。
ライトマップを使わない完全なリアルタイムのライティングがGI処理で可能。奥のほうまで間接光が影響し、精度も高そう。動的なHDRのトーンマップ、影を落とす煙もようやく普通にできるようになった。
流動的に動く大量のパーティクルも特徴的。
ゲームコードを修整するとき、バックグラウンドでコンパイルさせながらテストプレイしつつ、
コンパイルが終わったと同時に続行中のテストプレイに即反映とか凄い事になっている。


ファイル 224-1.jpg
チラッと見えるタイトルバーに ~UDK とあるので、UDKとして出る可能性もあるんじゃないか

ある程度の処理ならば、コードを書かずにKismetの進化形のような機能で補えるみたいで、ウォークスルー動画ではStaticMeshに回転などの機能とプロパティから調整可能な設定項目を自作している。
この機能は対象のStaticMeshからアクセスしており、Cinema4DのXPressoに似てる。

スクウェア・エニックス開発のゲームエンジン「Luminous Studio」

こちらのLuminous Studioの技術デモとして、Agni’s Philosophy-FINAL FANTASY REALTIME TECH DEMOが公開されました。
最も特徴的でアピールされているのが、これがリアルタイムで動いている映像だということ。現行のゲームハードで動いているのではなく、それなりにハイエンドなPC上で動いているんだと思う。
http://www.agnisphilosophy.com/jp/index.html
http://www.4gamer.net/games/032/G003263/20120606107/
Yebis2というポストプロセス専用ミドルウェアも使っているみたいですね。

ずっと前にも書いたと思うけど、ゲームエンジンのグラフィックシステムを利用したムービー製作は今後流行っていくと思う。
UDKとCryEngineSDKが奇跡的に無料で使えるので、レンダリング待ちやエフェクト作成等に疲れた方は是非使ってみましょう。今のところこの2つしかありませんが、個人的にプリレンダには戻れなくなりました。

追記
http://www.youtube.com/watch?v=Q9xhFpuIMX4
パーティクルとメタボールで血の水滴の表現
テッセレーションで毛の生成とかすごく欲しい機能があるじゃないの

UnrealEngine4 その1

http://www.wired.com/gamelife/2012/05/ff_unreal4/all/1?pid=2573
翻訳(GameBusiness.jp)
http://www.gamebusiness.jp/article.php?id=6156

気になるのはライティング関係の
”The Orrery room demonstrates real-‐time lighting and C++ editing capabilities. Here we show developers how to change properties in--game, on the fly, without having to wait for code to compile.”
という記述。ライティングも既存のシステムに縛られなくなる?

マテリアル自体を光源になっているような機能は、Dx11のImage Based Reflectionsが改良されたやつなのかな?どこまでの範囲でリアルタイムって言ってるのが分からないから早く動画で見たいよ。


追記
http://gameindustry.about.com/od/trends/a/Unreal-Engine-4-First-Look.htm

Dynamic Global Illumination
これはSSGIとかでもなさそう
数年前からOpenGLでリアルタイムのGI処理とかあったけど、あーいう感じなのかな
http://lightsprint.com/

---------------------

Cliffy B: EpicとUnreal Engine 4で次世代機を牽引していく必要がある
http://gs.inside-games.jp/news/335/33557.html


---------------
ゲームコードとして使われていたUnrealScriptは無くなり、完全にC++になる

In the past, gameplay code existed in UnrealScript. UnrealScript is the scripting language which forms the core of current community mods, and much of the gameplay code of all previous Unreal Engine titles.

However, UnrealScript is being removed.

In its place, the engine will be 100% C++, and highly optimized.

http://gameindustry.about.com/od/trends/a/Unreal-Engine-4-First-Look.htm

ZBrushによるハイレベルな映画キャラクタの作成 レンダリングはUDK

http://www.zbrushcentral.com/showthread.php?168180-UDK-Realtime-Davyjones-and-other-characters

Dx11のSSS+Tranmissionでキャラクタ特有のわずかな光の透過がリアル。
テッセレーション+ディスプレイスメントマップも活用し、ZBrushのディテールを維持。リアルタイムには見えない。
何よりZBrushのモデリングとテクスチャペイントのクオリティには学ぶところもありますね。

WL-Shaderも一部使われています。次の更新内容のアイデアもいただきました。

UDKのFBXインポート

ActorXで作成するPSK/PSAのインポートが無くなってました。これからはアニメーション関連もFBXで行うらしい。確かにFBXは今まで出来なかった機能の属性を含ませることができるし、モーフやアニメーションなども一括で更新できたりするので非常に便利で作業もやりやすい。
またActorX等のプラグインが無いソフトでもFBXは大抵のソフトでサポートされているし、MayaやCinema4Dのように高さ方向の軸がYのソフトでオフセットの回転を加えなくてもそのまま使える。
StaticMeshのインポートもずっと前からFBXでやってます。


ファイル 205-1.jpg
FBXのインポート時にファイル内の構成を確認できるという徹底ぶり。
複数のオブジェクトが有る場合、一つのStaticMeshに結合させたり個別にインポートさせることも可能。個別にインポートする場合、"Name_シーン内のオブジェクト名"という名前でインポートされる。シーン無いのオブジェクト名だけにしたい場合はNameの部分を空白にすればいいだけ。

UDKのマシニマをどんなに重くても指定したフレームレートでキャプチャする

UDKのMatinieeにはリアルタイムで動画をキャプチャする機能はある。しかし解像度が高く重い描写だと、パフォーマンス不足になりカクカクな動画になってしまうだろう。
それを解決するのが以下の方法。

UDK Gameのショートカットにパラメータを追加。これはキャプチャ専用のショートカットになり常にキャプチャした状態で動作する。



~UDK-2012-03\Binaries\Win32\UDK.exe NightAndDayMap -BENCHMARK -MAXQUALITYMODE -NOTEXTURESTREAMING -DUMPMOVIE -FPS=30 -ResX=1920 -ResY=1080

これだと毎秒30フレームでフルHDのNightAndDayMapのキャプチャを作成できる。
プリレンダのCGソフトのように一コマずつ描写とキャプチャを行い、生成されるファイルは無圧縮なBMPの連番ファイル。かなりのファイル容量になるので注意。これを何らかのソフトで動画に変換すればいいんだろう。

詳細
http://udn.epicgames.com/Three/CapturingCinematicsAndGameplayJP.html

UnrealEngine4

4月あたりにUnrealEngine4の詳細が発表されるとかされないとか。
今まではレンズフレアからポストプロセス等色んな用途に使うシェーダをPixel Shaderでプログラマブルに作れてきたけど、4からはDx11で話題になっていたCompute Shaderが積極的に盛り込まれるんじゃないかと予想してる。
例えば製作段階でCPUが事前処理していたLightmassのGI処理がプログラマブルなGPGPU処理で完全リアルタイムとか、反射や透過がプリレンダと同質のレイトレーシングとか。CPUだけがやっていた演算処理をGPGPUで行えるんじゃないかと。

UnrealEngine4のリリース自体は2014年らしい。


新しいWL-ShaderでMP5もリフレッシュ
ファイル 192-1.jpg

以前のWL-Shaderはこう
ファイル 192-2.jpg

CustomLighting

UDKのマテリアルエディタは、ライティングからのごく基本なハイライト等も根本から自作することができる。
http://udn.epicgames.com/Three/CustomLightingJP.html
この仕組みを利用すれば、Half Lambert Shaderもわりと簡単に可能じゃないのか?

明るい部分と暗い部分を二極化するようにして、それぞれの領域に異なるトーンテクスチャを合成してマンガっぽくするとか。可能性が広がる。

先週末に、クロマブラーをもっと自然な描写になるように改良していた。これは画面の端に行くほどRGBの各チャンネルをずらす処理で、DOFとの相性が良い。
画像の下側はWL-Shader(開発中バージョン)に含まれる全てのポストプロセスを使った結果。
ファイル 189-1.jpg

ところで、ポストプロセスに使うバッファを必要な時だけダウンサンプリングさせて処理すればもっとパフォーマンス稼げると思うんだけど、そんな機能のノード無いよね。HLSLでカスタムノードしか無いのかなー

3Dゲームファンのためのグラフィックス講座

【GAME Watch バックナンバー】
3Dゲームファンのためのグラフィックス講座
http://game.watch.impress.co.jp/docs/series/3dcg/

難しすぎでもなく、なかなか勉強になる講座です。
結構昔からやっている講座なので、古いのから見ると進歩の過程もよく分かります。


ついでにこちらも
3Dグラフィックス・マニアックス
http://news.mynavi.jp/column/graphics/001/index.html

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