アクセスカウンタ

プロフィール

ブログ名
進捗日誌
ブログ紹介
ここはゲームプログラマのブログです。
2つのゲーム会社に合計7年半勤務した後に独立しました。
zoom RSS

線形デプスから非線形デプスへの変換式

2015/06/19 00:00
自分用メモ。

非線形デプスをd、線形デプスをlとすると、深度z、near距離n、far距離fを用いてそれぞれ以下の式で表される。
画像

二番目の式を変形してz = (f-n)l + nとしてこれを一番目の式に代入すると以下のようにdをlの式で表せる。
画像

ここでA = f / (n-f)、B = (f-n) / nと置き換えると以下のように表せる。
画像

なのでAとBをCPU側で計算してシェーダの定数バッファに送れば良い。
記事へブログ気持玉 / トラックバック / コメント


Half-Lambertの正規化係数を求める

2015/06/04 23:39
ついでなんでちょっとやってみます。何故これで求められるかは前の記事を見てください。
画像

超簡単
記事へブログ気持玉 / トラックバック / コメント


拡散反射がN・Lの関数で表現される場合の正規化

2015/06/04 00:32
お久しぶりです。この前このブログを検索してみたら全然上位に出てこなくて焦りました…ということでいきなりシェーディングの話を書いてみようと思います。

拡散反射がN・L(=cosθ)の関数で表現される場合、正規化は非常に簡単です。これをF(cosθ)とおくと球面上で積分する式は以下になります。
画像

ここでd(cosθ)=-sinθdθなので上の式は次のように変形できます。
画像

分かりやすくするためにx=cosθとおいて積分方向を反転すると以下のようになります。
画像

これは単なるF(x)の積分で、拡散反射ではF >= 0なので直感的にいうとこれはy=F(x)の曲線とy=0の作る面積(に2πをかけたもの)になります。

これを知っていると、ToonShadingっぽい表現でN・Lの代わりになにか小細工してオリジナルのF(N・L)を使う場合(例えばHalf-Lambertのような)は簡単に正規化係数を算出できます。何かアーティストにツールを与えてスプラインカーブを編集させた場合でも対応できます。さらにアーティストが1Dテクスチャを作成してN・Lでアクセスする場合も、総テクセルのカラーの合計がLambertの場合と同じになるようにすればいいので、前処理で補正しても実行時にフィルタして係数を求めてもどちらでも簡単に対応できると思います。
記事へブログ気持玉 / トラックバック / コメント


東京にいます

2014/11/11 00:40
最近大阪に帰ってくる(きてる)んですかと聞かれることがあるのですが、今後はずっと東京で仕事する予定です…なのですがもしかしたら大阪にちょいちょい行くことになるかもしれません。ですので今後ともよろしくお願いします。

ガンバの試合ももうちょっと見に行けると思います。新スタジアム超楽しみです!
記事へブログ気持玉 / トラックバック / コメント


退職しました

2014/11/08 02:51
すごく久しぶりのブログ更新になります。もう見てる人ほとんどいないと思いますけど…

この度退職しました。自分の会社をやってるのにどういうこっちゃという話ですが、事情があって自分の会社を開店休業状態にしながら他の会社に所属してそこの仕事を4年間ほどやっていて、そこを辞めたわけです。

その会社は色々情報管理が厳しかったり、海外のファンの方にツイッターやブログを監視されたりしてあまり情報発信ができなかったのですが、これからはブログもボチボチやっていって、仕事に関連した技術的なことも書けたらなと思っています。

記事へブログ気持玉 / トラックバック / コメント


RP-HJE600

2013/03/30 00:34
僕が使っているイヤホンはパナソニックのRP-HJE600シリーズです。気に入ってるポイントはなぜかこのシリーズにしか付いていない「こすれ音低減コードスライダー」で、スライダーを首の後ろでジョイントすることで服とのこすれ音とイヤホンがコードの重みに引っ張られる不快感を大幅に軽減できます。さらにイヤホンを耳から外した時もいちいち片づけずに首に引っかけたままにしておけるので、スマホやMP3プレイヤーで音楽を聴く人は重宝すると思います。

僕の耳では一つ下のモデルと正直音質の違いは感じられないんですけど、このコードスライダーのためにこっちを買っています。値段は高いけですけど正直お勧めです。


amazon.co.jpで買う
Amazonアソシエイト by Panasonic ステレオインサイドホン ブルー RP-HJE600-A の詳しい情報を見る / ウェブリブログ商品ポータル


記事へブログ気持玉 / トラックバック / コメント


ガンバベストゴール集 in Jクロニクルベスト

2013/03/09 08:50
YoutubeをウロウロしてたらJリーグのチャンネルに流れ着いたので、たわむれにガンバのベストゴールを集めてみました。僕の印象に残ってる順に1位から5位までです。


5位 (遠藤 保仁)Jクロニクルベスト:2003ベストゴール
http://www.youtube.com/watch?v=2m6Z0aS2LVs
スピードに乗ったドリブルからのループ。最後の冷静さが遠藤らしい。

4位 (遠藤 保仁)Jクロニクルベスト:2006ベストゴール
http://www.youtube.com/watch?v=I8Eqvw1B8W0
おそらくJリーグでの遠藤のベストFK。名手下田が一歩も動けず。

3位 (アラウージョ)Jクロニクルベスト:2005ベストゴール
http://www.youtube.com/watch?v=nHPRv-HW5Ko
優勝を決めた試合での先制ゴール。ちなみにアラウの好きなゲームは鬼武者。

2位 (二川 孝広)Jクロニクルベスト:2007ベストゴール
http://www.youtube.com/watch?v=S08mMvMzFoA
二川お得意の飛び上がりながらのロングシュート。利き足でない左でこの精度。

1位 (大黒 将志)Jクロニクルベスト:2005ベストゴール
http://www.youtube.com/watch?v=_J7WrrsZ25o
浮き球反転トラップからのミドル。これも利き足じゃない方。スタジアムがどよめいていたのを覚えています。


もっとあるかもしれませんが、とりあえず僕が見つけられたのはこんな感じです。
記事へブログ気持玉 / トラックバック / コメント


USBあったかマウス

2013/01/07 23:44
会社で休日出勤してるときにあまりに寒いので買ってみました。結構暖かくくなるのでいい感じです!が、机が冷たいのでそれなりのマウスパッドが欲しくなって来ました…

サンコ- USBあったかマウス4 USHOTM04
サンコー
2012-11-08

amazon.co.jpで買う
Amazonアソシエイト by サンコ- USBあったかマウス4 USHOTM04 の詳しい情報を見る / ウェブリブログ商品ポータル


記事へブログ気持玉 / トラックバック / コメント


世界でもっとも強力な9のアルゴリズム

2012/10/03 01:18
を読みました。プログラマとかじゃない普通の人に直感的に理解してもらおうという本なのかな…これがどれだけ普通の人に分かりやすいのかはちょっと分かんないですが。まあプログラマならサクサク読めるし、専門外の所はそれなりに楽しいです。


世界でもっとも強力な9のアルゴリズム
日経BP社
ジョン・マコーミック

amazon.co.jpで買う
Amazonアソシエイト by 世界でもっとも強力な9のアルゴリズム の詳しい情報を見る / ウェブリブログ商品ポータル


記事へブログ気持玉 / トラックバック / コメント


レンダリングパイプラインの違い

2012/06/12 02:02
をアーティストさん向けに簡単な表にしてみました。Shadowや半透明とかの話はあえて省いてあります。
画像

今はDeferredが流行りみたいですけど、次世代はどんなパイプラインが主流になるんですかね…
記事へブログ気持玉 / トラックバック / コメント


リアルタイムシャドウ

2012/06/12 01:37
を買いました。ほとんど読まずに会社の描画チームの所に持って行ってしまったのですが、ぱっと見は内容が広範にわたっていてかなり良さそうでした。描画チームのメンバー的には英語版の方がいいかもですが、それは会社に買ってもらうとします。欲しいと言われたら。


リアルタイムシャドウ
ボーンデジタル
Elmar Eisemann
amazon.co.jpで買う
Amazonアソシエイト by リアルタイムシャドウ の詳しい情報を見る / ウェブリブログ商品ポータル


記事へブログ気持玉 / トラックバック / コメント


セグメントスケール(続き)

2012/05/10 10:54
昨日の記事http://forte.at.webry.info/201205/article_2.htmlの続きです。

実は間違いがあって、子の移動量は親のスケールの影響を受ける必要があります。その移動量をts = Ps * t とすると子のワールドマトリクスは以下のようになります。

Cw = Pt*Pr*Cts*Cr*Cs = Pt*Pr*(Ps*Ps-1)*Cts*Cr*Cs = Pw*Ps-1*Cts*Cr*Cs

ここでマトリクスの性質上、 Ps-1*Cts = Ct*Ps-1なので、求めるべき新しいローカルマトリクスは以下のようになります。

Cl = Ps-1*Cts*Cr*Cs = Ct*Ps-1*Cr*Cs

これだと親のスケールの逆行列が間に入ってきてしまいますが、「左側からスケールマトリクスを掛けるんだけど移動量には掛けない」ような関数を作れば昨日の記事と同じ様な考え方でいけます。

ここまで書いといてあれですが、T中さんにMayaのAPIドキュメントを教えていただきました。ここに式が載っています。
http://docs.autodesk.com/MAYAUL/2013/ENU/Maya-API-Documentation/index.html?url=cpp_ref/class_m_fn_ik_joint.html,topicNumber=cpp_ref_class_m_fn_ik_joint_html

で、ここからは今の仕事に固有な話なのですが、そもそも今使っているモーションエンジンにはスケールアニメーションの機能が無くて僕がカスタマイズして入れているので、エクスポート時に子の移動量が親のスケールに影響されて移動量アニメーションとして吐き出されているんですね。なので今の仕事の場合は昨日の記事の式じゃないと逆に上手くいかない、ということになっています…
記事へブログ気持玉 / トラックバック / コメント


セグメントスケール

2012/05/10 00:10
に対応しました(今更)。要するに親関節のスケールを子関節に引き継がせないようなスケーリングです。腕が伸びるみたいな。実装は至極簡単なのでちょっと書いてみます。

マトリクスを親*子の順番で書くとすると関節のローカルマトリクスはMl = Mt*Mr*Msとなります。

セグメントスケールが入っている場合、親のマトリクスをP、子のマトリクスをCで表すとすると、親と子のワールドマトリクスは以下のようになります。

Pw = Pt*Pr*Ps
Cw = Pt*Pr*Ct*Cr*Cs = Pt*Pr*Cl

大抵の場合、子供のワールドマトリクスCwは親のワールドマトリクスPwから求めたいので、Pwを含めた形にCwを書きかえると以下のようになります。

Cw = Pt*Pr*(Ps*Ps-1)*Cl = Pw * Ps-1*Cl

ここでPs-1*Clを新しい子のローカルマトリクスだと定義すれば、上の式は通常のワールドマトリクスの求め方と同じになります。言いかえると、通常のローカルマトリクスClを求めた後、(普通にスケールを掛けるのとは)逆側から親のスケールマトリクスの逆行列 Ps-1を掛けて新しいローカルマトリクスを作ればいいわけです。当然ですが、スケールマトリクスの逆行列は超簡単に求められます。

小難しく書いてしまいましたが、要するに親のスケール成分をキャンセルするように親側にマイナススケールを突っ込めばいいよね!という話です。

このやり方の場合に気を付けなければいけないのは、スケールに0が入ってくると破綻することです。なので今回はスケールの最小値を定義してそれを下回らないようにしてみました。

※追記
ここまで書いて考え直してみたら、何か間違っているような気がしてきました(汗)。正しくはCt*Ps-1*Cr*Csな気が…明日テストデータを作ってもらって確認します…

※更に追記
続きを追加しました。
http://forte.at.webry.info/201205/article_3.html
記事へブログ気持玉 / トラックバック / コメント


12/05/03 実物大バルキリー

2012/05/03 12:22
画像を見てきました!

うーん正直微妙でしたね…質感も何かいまいちだし、何よりガウォーク形態の肩から前の部分しかないので大きさに圧倒されたりということもありませんでした。まあ毎日実物大のガンダムを見ているので、それと比べちゃうとどうしても。

でも今後は大阪でもやるみたいで、そのときは足部分も含めた全体像になるらしく、もしそうなら遊びに行くついでにまた見にいってしまうかもしれません(笑)。
記事へブログ気持玉 / トラックバック / コメント


12/04/26 サバイバルホラー

2012/04/26 01:48
せっかく発表になったので。今はこの仕事をしています↓

http://tangogameworks.com/project/
記事へブログ気持玉 / トラックバック / コメント


11/12/22 忘年会

2011/12/23 00:52
おひさしぶりです!
今日は今の会社の忘年会で、ビンゴ大会があって僕は景品としてPSVitaを供出したのですが、僕が出したVitaはこの人に当たりました…

画像

…もうVita自分で買ってるじゃん!
記事へブログ気持玉 / トラックバック / コメント


回転角半分のクオータニオンを求める

2011/09/30 01:10
まあありがちなネタですけど…

単位軸(X,Y,Z)周りに角度Aの回転を表すクオータニオン(Qx,Qy,Qz,Qw)はB=A/2として(XsinB,YsinB.ZsinB,cosB)となります。

C=B/2として、まずW成分から求めます。これは半角公式からcosC = sqrt( (1+cosB) / 2 ) = sqrt( (1+Qw) / 2 )とあっさり求めることができます。

次にXYZ成分ですが、sinBやsinCを計算する必要はありません。実際に必要なのはXYZ成分をスケールするための係数r=sinC/sinBなのですが、これは半角公式sinC*cosC = sinB/2からr = sinC/sinB = 1 / (2 * cosC)となりcosCから直接求められるからです。

さらに通常は平方根より平方根の逆数を求める方が高速なので、cosCを先に求めるよりrを先に一気に求めてそこからcosCを計算する方が高速になります。この場合、r = sinC/sinB = 1 / (2 * cosC) = rsqrt( 2 * (1 + Qw) )を求めてからcosC = 0.5/r を求める形になります。

注意しなければいけないのは、Qwが-1に近い場合、つまり回転角Aが±360°に近い時に精度がガタ落ちすることです。そういう回転角が来ないと分かっている場合は上記の方法でかなり高速に求められると思います。
記事へなるほど(納得、参考になった、ヘー) ブログ気持玉 1 / トラックバック 0 / コメント 0


強行軍

2011/09/22 00:40
先週は以前の会社で同僚だったデザイナさんがアメリカに転職するということで、大阪で開かれた送別会に参加してきました!が、他にも色々用事を入れたので相当な強行軍に…

9/18
18:00〜20:00 横浜でガンバ戦観戦
20:30〜23:00 新幹線で大阪に移動
23:30〜25:30 梅田で焼肉@情熱ホルモン

9/19
02:00〜06:00 梅田でカラオケ
06:15〜06:45 梅田でサウナ@大東洋
07:00〜12:00 梅田の漫喫で仮眠
12:30〜12:50 梅田でカレー@インディアンカレー
13:00〜14:00 阪神電車で神戸に移動
14:00〜21:00 神戸で送別会
21:30〜23:30 神戸でカラオケ
23:30〜25:00 車で梅田に移動

9/20
02:00〜05:30 梅田でカラオケ
06:00〜08:30 新幹線で東京に移動
09:15〜09:45 会社でシャワー
10:00〜20:00 仕事

時間は適当です。いやー懐かしい方々に会えて凄く楽しかったのですが、さすがに疲れましたね…一つだけ心残りなのは阪神梅田駅でミックスジュースを飲むのを忘れたことですが、まあ次の機会ということで。
記事へブログ気持玉 / トラックバック / コメント


Excelあれこれ

2011/09/10 09:18
僕が以前やった仕事では、プランナーが仕様を管理するためのExcelファイルにVBAを仕込んでそこからXMLを出力→バイナリ変換をしていました。これだと仕様と実データがズレないし余計な仕事も発生しないのでお勧めです。プランナがマクロボタンを押し忘れたりサブミットし忘れたりしなければですけど。

あとやったことないですが、VBAで実機と通信してExcelをフロントエンドとして使えたりしないかなと。入力支援機能は腐るほど付いてるし、アーティストがいくらでもカスタマイズ可能だし、シリアライズはセーブロードするだけ。シートは実機側のコアのコードだけ上手く作れば、特に苦労せず用意することが出来ると思います。
記事へブログ気持玉 / トラックバック / コメント


Excel使ってます

2011/09/10 00:05
僕の経験上、物事を理解するにはそれに関する全ての情報が頭の中に入っていることが大事で、全ての情報を頭の中に入れるにはそれらが同時に視界に入る状況を作ることが大事、だと考えています。

なので僕は大規模なソースを解析するときは、色々な情報が同時に目に入るようにExcelを使って似非のクラス図や関数のコールツリーを書いたり、時には色んなケースのコールスタックをデバッガからコピペして並べたりしています。こういうのを作っておくと漫然とソースを読んだりデバッガで追いかけたりするより理解がずっと早くなります。

ソース解析でお困りの方はぜひ試してみてください。
記事へブログ気持玉 / トラックバック / コメント


続きを見る

トップへ

月別リンク

進捗日誌/BIGLOBEウェブリブログ
文字サイズ:       閉じる