Pentanium Reactor Blog

ゲーム、アニメ、CG、プログラミング

GLKitでオブジェクトの選択

2013年03月16日 18時49分06秒 | プログラミング
PS4の情報が出てきたものの詳しいことも発売もまだまだ先だからなぁ感の漂う昨今、いかがお過ごしでしょうか。
とりあえず時代はまだまだ3Dらしいので、GLKitでも使おうかということで作ってみたよ。
なんて実はBlenderがそろそろGL_SELECTやめたいとか言ってるのを見て、そういえばGLKitにもunprojectあったなと思ったのが本当のきっかけだったりする。
というわけでやってみたのがこちら
マウスでクリックするかタップするとそこにあるオブジェクトが選択されて色が変わる、みたいなもの。
GLKitならOSXとiOSで同じソースが使えて良いねッ!
ただOSXは10.8以降になっちゃうけど。
ちなみにOSXでGLKitのGLKBaseEffectなどを使うにはOpenGL 3.0 Core Profileで初期化しないといけないので注意。
あとGLKViewに相当するものは無いので適当に作りましょう。
そして肝心な部分は、
GLKVector3 screenVec = GLKVector3Make(px, py, 1.0f); // 左下を原点とした時の画面上の座標
int vp[] = {0, 0, _viewportWidth, _viewportHeight}; // ビューポートの矩形
GLKVector3 upv = GLKMathUnproject(screenVec, cameraMatrix, projectionMatrix, vp, &isSuccess);// 変換

というだけなので特に難しいことは無し。
罠があるとすれば、上のisSuccessになっている変数はBOOLじゃなくてboolだということくらいで大した問題ではないかと。
なお座標系の原点がどこかなどというのは、この文章を読もうと思った時点でわざわざ言わなくても大丈夫な人だろうと想定しています(笑
で、まあこれだけじゃ面白くないよなということで、上げてあるコードではこのUnprojectの中で何をやってるのかというのを適当に。

/*
GLKVector4 screenVec = GLKVector4Make((px / _viewportWidth) * 2.0f - 1.0f, (py / _viewportHeight) * 2.0f - 1.0f, 1.0f, 1.0f);
GLKMatrix4 ivm = GLKMatrix4Invert(GLKMatrix4Multiply(projectionMatrix, cameraMatrix), &isSuccess);
GLKVector4 upv4 = GLKMatrix4MultiplyVector4(ivm, screenVec);
GLKVector3 upv = GLKVector3MultiplyScalar(GLKVector3MakeWithArray(upv4.v), 1.0f / upv4.w);
*/

GLKVector3 screenVec = GLKVector3Make((px / _viewportWidth) * 2.0f - 1.0f, (py / _viewportHeight) * 2.0f - 1.0f, 1.0f);
GLKMatrix4 ivm = GLKMatrix4Invert(GLKMatrix4Multiply(projectionMatrix, cameraMatrix), &isSuccess); // 全体の変換の逆行列
GLKVector3 upv = GLKMatrix4MultiplyAndProjectVector3(ivm, screenVec); // Projectが付くのはwを考慮して計算してくれるものだったらしい

こっちも見たまま。
わざわざwで割らなくてもGLKMatrix4MultiplyAndProjectVector3で良かったということに後で気がついた。
あと人によっては馴染みがなさそうなのは、オブジェクト毎の移動や回転などの変換があるものは、逆変換を求めてレイの方を回す→求まった交差点を変換、みたいなパターンくらい?
それから今回のは何も考えずにポリゴン総当たりになっているけれど、思ったよりも負荷は少なそう。
ポリゴンモデラーとか普通にいけるかもしれないよッ!

しかしやっぱり少なくとも月一くらいは更新できるといね。

Tokyo Demo Fest 2013

2013年02月17日 17時41分38秒 | CG
2月9日、10日にあったTokyo Demo Festを見てきたよ。
ついでに10日はワンフェスも行ってきた。
...前の投稿の最後を受けていえば貴様逃げたな、と?
ワンフェスとかぶってモチベーションが下がり気味だった上になかなか思い通りのものができなくてと言い訳をしておくッ!(開き直り
最終的に4.6kbになっちゃったこんなものも作りはしたから許してorz

完成は事後だけど(死)。あと若干不気味。
結局1ヶ月前位から手をかえ品をかえ色々試して、これなら!となったのが2日前くらい。
ワークフローも良くなかったし、軽くデスマしてもちょっと無理でした。
しかしGLSLが9kほどでこんな感じだから、gfxでも6~7kくらいに納めないといけないってところだろうか。
4k introで3kくらいとどこかで見た覚えがあるし。
普段からの技術開発はとても大事。

まあそんな事は良いとして、今年のTokyo Demo Festで私が見たのは、結局1日目のオープニングからと2日目のPC系のCompo。
アンスティチュ・フランセ(日仏学園)という固そうなところだからどんな雰囲気なんだろうと思ったら、離れのレストランみたいな所が会場だった。
ちょっとお洒落な建物で、正にパーティーな感じ。
セミナーやデモショーは本館(?)のシアターみたいなところでやってた。
特にデモショーは映画館のような大画面に良い音響で最高。
Numb Resの中盤の流体っぽい場面のメッシュ化されてるところは手前だけだったんだ、とか初めて気付いたり。
あと昔のデモを大画面でみるのはまたなにやら趣があって良い。
そしてCompoは前よりもたくさん作品が集まった様子で、とても盛り上がっていた。
さりげなく(でもないか)中の人のT_Sさんが何個も出してたけど、その頑張りもすごい(笑)
で、私はちょっと疲れたのでここまでで、見た分だけ投票して結果を見ずに帰宅。
結果はTDFのリザルトのページで。
という感じで、とても面白かったし刺激になった。
やっぱり日和ってgfxとか言ってちゃダメだね。
Demoかintroを目指さなきゃ。
来年はアンケートの作品を出しますか、にYESと答えたいと思った。

おまけ
togetter: TokyoDemoFest 2013
pouetのTDF2013の作品一覧: Tokyo Demo Fest 2013


あけおめ

2013年01月10日 18時18分59秒 | 雑記
明けましておめでとうございます。
今年もよろしくお願いいたします。



シュライハーのグライダーだよ!
実は私もよく知らない(オイ

さて、新年ではあるのですがそうそうネタがある訳でもなく。
とりあえず無意味にDistance Field Textureについて語ってみた
いつも通りの誰得感だけど、個人的にはこれはもう少し流行っても良いと思うんだけどね。
少し面倒ではあるけど。
Twitterで書いたように使ってなくもないし。

あとは今年の抱負とか。
いろいろどうにかしたい。いやする。
とりあえず直近では2月にあるTokyo Demo Festとか。
introはちょっとなんだけど(音楽もネックだし)gfxくらいできたらいいなとか。
ただワンフェス冬とかぶってるのでどうしたものかみたいな。
…ワンフェス行ってたら逃げたという事で(爆
他にも妄想だけで悶々としてるネタとかできたら良いなと。
今年は真に新しい年にしたいものです。

CGWORLD カンファレンス

2012年11月13日 05時43分03秒 | CG
10月28日にあったCGWORLD 2012 クリエイティブカンファレンスに行ってきた。
メモと感想をざっくりと。

1枠目は スクウェア・エニックス-Gems- の 『Computer Graphics Gems JP 2012 スピンオフ from スクウェア・エニックス』
内容は書籍の紹介と補足。
スクウェア・エニックス-Gems- ってのはCG Gemsのスクエニの人たちって事だろうか。
講演者はインスタントラジオシティとIKの章の方。
GIの方は、鏡面のような時はクランピングすると暗さが際立つなどといった、アーティファクトの実例を実際に見られてなるほどといった感じ。
発展手法として紹介されたのは Adaptive Imperfect Shadow Map (視点からVPLを生成)とか Bidirectinal Refrective Sahdow Map (視点ベースで重要なVPLをサンプリングする)とか。
Ray Bundle TracingというのでGPUで視点からのパスを辿るとか。
2バウンス以上を考慮した方法もあるのですかという質問に対しては Imperfect Refrective Shadow Map というのがあるとの回答。
しかしImperfectは考え方が面白い。
IKのほうはとりあえずヤコビ行列IK最強という結論(笑)
キャプチャしたモーションデータから重さの違うものを持った時に、重心を崩さないようにモーションを変形するなんてこともできるとか。
この辺のはスクエニの論文ページにあったような気も。
モーションのブレンドは"Scatter Blend"というように聞こえたけれど、そんなキーワードでググると確かにモーションのブレンドの手法が引っかかってくるので必要があったら調査しようという感じ。

2枠目は デジタル・フロンティア の 『DFツール紹介マラソン』
デジタル・フロンティアの社内ツールの紹介。
バイオハザード ダムネーションで導入されたワークフロー用のツールとか。
それまではファイルサーバーに置いたものを各々が勝手に作業している感じだったのを、リポジトリ的なチェックアウト→作業→チェックインという流れに変えたそうな。
素材やコンポジットの設定の管理がしやすくなったとか。
ちなみにバイオはOpenEXRを全面的に導入していて、ヘッダに色々情報を入れたりしているらしい。
あとはMayaのデフォーマーやらAEのプラグイン、mental rayのシェーダーやら。
mental rayのシェーダーでできたけど、プレビュー用にMaxでCameraとして実装する必要が生じて大変だった、などといったツールをまたがっていると大変だというエピソードも。
DF TALKよろしく、求人もしてるよ。とのこと。

3枠目は OLM Digital の 『ド根性映像制作をやめないか? 映像制作を支える技術の大切さ』
講演者はフランスから来たという方。ちなみにすごい経歴。
刺激的なタイトルだけど、映像制作のどのようなところに技術を使うかという話。
具体的にはまずシステム。OLMにはSIチームがあるそうだ。
そもそも映像制作の環境にあったシステムを外注するのは難しい、とのこと。
次にパイプライン。
ネーミングやディレクトリ構成を全社で共通化するための設定ツールを用意したり。
作業者まかせにすると絶対に守らない人が出てくる、という至極真っ当な理由による。
商用ツールも無くはないけど自社で作った方が融通が利くし安上がり、ということらしい。
最後に効率化や新しい表現のためのR&D。
ホームページで配布しているツールもその一環。
OLMはアニメ関連の仕事が多いのだけれど、たとえばマジックワンドのようなものでさえ意外とセル風のべた塗りだといい感じに動作しなかったりするので、改良したものを作ったりするそうだ。
ただのwatershedだけどねって言ってた。
アンカーポイントのようなものでメッシュを動かすと、その形になるようにシェイプキーのミックスを設定してくれるというのは便利そうだなと思った。
Pose Space Deformation という言葉は覚えておいてもいいかも。
最後にPac Manのアニメ向けの求人もしてるよ、とのこと。

4枠目は 亀村/山岸/加藤 の 『リニアワークフローとカラースペース~VFXにおけるカラーマネージメント~』
最近流行のリニアワークフローを実演を交えて紹介という内容。
これは圧巻。
それぞれの機器によるガンマ補正などを全てキャンセルした『シーンリニア』でとにかく作業。
画面で確認する場合には、リファレンス用のトーンマッピングを用意して必ずそれを使って見る。
なお、リニアでフィルタをかけると効きすぎたりするので、そういう場合はLogをとってかけたりすると良いらしい。
また、CGの方は計算機なので入力がリニアなら出力もリニアになるはず、という考えでやるそうな。
もちろん確認はモニタのガンマに合わせて。
勝手にライティングの調整などをしないようにとのこと。
実写合成だとHDRでIBLなんだろうね。
色味などは最後にポストプロセスで好みにあわせれば良いとのこと。
ACES規格という色空間は覚えておこう。

とりあえずこんな感じだったんだけど、最後のカラコレの話は本当にすごかった。
実写のプレートのカラーチャートとCGでレンダリングしたカラーチャートを比較したり、測定器で計ったEV値とシーンリニアに直した値が大体一致する様子を見せたりと、とことん理屈で詰めていく。
本当に手間も知識も必要なものなのだなと思った。
あとOLMの人の言ってた、映像制作会社の技術部門の仕事が何かと言われたら『(デザイナーの)夢を叶える仕事』技術の力で。というのが良いなあと思った。

最後に、4Gamerにいくつかまとめが上がってる。
[CGWORLD 2012]「バイオハザード ダムネーション」のメイキングレポート。デジタル・フロンティアが語る長編CG映画の作り方とこだわり
[CGWORLD 2012]実際のゲーム制作で感じたUnityのメリット&デメリットまとめ――「百鬼大戦絵巻」での実例
[CGWORLD 2012]やり過ぎこそがフロム・ソフトウェアの味?――「ARMORED CORE V オープニングCG メイキング」レポート
[CGWORLD 2012]“3D映像の盛衰とこれから”が語られた大口孝之氏の講演「3D世紀 立体映画の100年」をレポート。3D映像の歴史を俯瞰できる資料の数々も一見の価値あり

偉いな4Gamer。

百鬼夜行

2012年09月16日 17時04分40秒 | CG
いつの間にかしばらく更新しないと謎テンプレートに勝手に変更されるようになっていたらしい。
ので更新するのです。

まず3DCGARTSで魑魅魍魎 3D百鬼夜行祭をやっていたのでつくった。
前の祭りは間に合わなかったから、今回はそのリベンジ的な意味合いも込めて。

猫蜘蛛。
テテンテテンテテンテテンテテテテ テテンテテンテテンテテンテテテテ
ぐわんげは大好きです。キャラもビジュアルも音楽も良い。
でも資料の関係でおとぎ奉りバージョンです(笑
他の作品群はこちらから。
ARTSのと絵が違うと言われそうですが2枚目にこのバージョンがありますのでご容赦くださいm(_ _)m
とはいえこのペースなら大丈夫っしょ。あとはBlenderでテクスチャをベイクして...ベイク...なんか上手くできないんですけど!
という流れでプリレンダで出したという体たらく。
ARTSの1枚目の通り、無理矢理プリレンダにしたせいであまりに微妙なので、後で手直ししてこっそりこのバージョンを追加。
ちなみに原因は作品ページに書いてある通り、テクスチャに使っている画像にベイクしようとしていたせい。
ベイクすると張ってあるテクスチャが全て剥がされるという状態になっていた。
原因が分かってみると、ベイクするために画像バッファがクリアされてたということでしょうか。
こういう破壊的にベイクするのは昔はできたような気がしていたんだけど、よく考えてみると[cg]にあげた雪ミクもこの前のケモっ子もライティングとかAOを別に焼いてペイントソフトでカラーテクスチャと合成してたし、実はやった事は無かったかもしれない。

あとjsdo.itQ Vol.2 夏を涼しくする表現というのに便乗して
WebGL ふるいど
を投稿。
タイトル通り出落ち。ただレイマーチングしたかっただけ(笑
一応Three.jsでカスタムシェーダー使う時のサンプルにならなくはないと思うよ!
ただノイズ使いすぎて重すぎ。

とりあえずこんなものかな。
しかし2ヶ月に1回以上更新しないといけないのか...