2012年10月12日金曜日

CGGJP2012画像変形の実装



ComputerGraphicsGemsJP2012の7章「移動最小二乗法を用いたインタラクティブな画像変形」を実装しました。

Unity上で実装、デフォのPlaneがXZ平面なためXY平面に頂点を回転させました。
ピンクの点が制御点となっています。
左クリックで掴んでドラッグして遊んで下さい。
キーボードの上下矢印キーで、アフィン変形→類似性変形→リジッド変形と変化します。
Aキーを押したら制御点が元の位置に戻ります。制御点が画面外に移動した時に押して下さい。
他Shift押しながら上下矢印キーで現在の制御点のまま画像変形のモードだけ切り替えます。

ゲーム中のお遊びで、スーパーマリオ64にあったようなマリオの顔引っ張りまわるの思い出します。
何かの演出(ワープとか異空間とか?)に使ってイベントを盛り上げたい時に役立ちそうですね。
これメインのゲームはあまり面白いのが思いつくところがない・・・

2012年10月6日土曜日

第3回海外ゲーム技術勉強会に参加してきました

第3回海外ゲーム技術勉強会に参加してきました。
http://atnd.org/events/32468
会場ちょっと迷ったので、5分ぐらい遅れての参加です。

#1 Heliumエンジンの設計と実装
スライドはこちら
http://www.slideshare.net/DADA246/helium-14611490
このスライドのMemoryの中盤あたりから話を聴き始めました。
海外のオープンなゲームエンジンのコードを読まれての、各項目について解説されていました。
最近Torque3Dもオープン化したとか、たくさんゲームエンジンがオープンになってきてますね。
色々気になってメモしたところとしては、

CheckSumの方式MurmurHash

は初めて聞いたので、ぐぐってみました。
http://perl-users.jp/articles/advent-calendar/2011/hacker/11
Austin Appleby氏により考案されたMurmurHashは、衝突困難性と一様性に優れ、かつ計算コストがMD5等よりも圧倒的に優れたハッシュ関数でその出力範囲はint型の範囲に限定されています。
ってことらしいです。使える機会があるかどうか。

SmartBuffer

ゲームのバージョンが変わっても、動作をさせるためのものらしい。
バイナリデータを作ってて、バージョンが上がったために、構造体のメンバが増えたりしたときに
古いバイナリで動かしてしまったら、増えたメンバにデフォルト値で初期化させて動かそうとか。
バイナリバージョンが違うよって警告文を画面に出して動いていれば、非プログラマの人でも原因がわかるし修正も早くなっていいですね。
業務でも欲しい機能です。

EulerOrder

3D数学ブログラムで、回転行列の計算順序順に依存しないようにするために、enumでビットシフトをしてるとか。
ちょっとググってみたら割りとやってるとこがありますね。

後半の内容はこのゲームエンジンの作るゲームオブジェクトについての解説や
Rendering部分についてありましたが、追いきれてないのでスライドを御覧ください

#2 カスタマーサポート
Diablo3を買ったときにトラブったのでカスタマーサポートを利用した時のお話。
問い合わせがチケットシステムになってるとか、カスタマーサポート進んでいますね。

#3 アセットビルドパイプライン
Game Development Toolsの第一章からまとめての発表
ここでいうアセットはソースコード以外の全てのリソースだそうです。
アセットビルド時にビルドに必要なファイルの依存性を調べ、更新されているかなどをタイムスタンプやファイルのハッシュ値から調べて、ビルドを高速にするとか。
ビルド前にデータのチェックツールを実行して凡ミスを防ぐとか。
もっと深い話だったはずですが、追いきれませんでした。
スライドが後ほど公開されるそうです。

#4 VisualStudio2012のDirect3Dアプリ開発者向け新機能
スライドはこちら
VisuakStudio2012Pro版を買うと使用出来る新機能についての解説
アセットビューワーがあって、基本的なテクスチャやモデルは表示できるそうですが
ライティングなどないらしい。自前のビュワーの方がデバッグなどもできて高機能でしょうからあまり使わないかと。

シェーダー開発ツール
HLSLエディターで、型名とかの色分けできたりfxcの設定がプロパティで出来たりと便利そうです。

GPU診断機能
PIXのようなデバッガ機能が統合されたようですが、負荷計算はできない。
PrintScreenでスクショを取ればその時のコールスタックとかが見られます。

Windows8入れてVS2012Pro使うときは覚えておきましょう。


このガジェットでエラーが発生しました