回転マトリックスの求め方とマトリックスから回転角度の求め方

2012 年 1 月 18 日 chiyama コメントはありません

以前、mixi 日記に書いていたものの、mixi日記検索できないぜジーザス!!ってことでこちらに転載します。

XYZ順に行列を掛けるときの回転マトリックスの作り方と、そこからXYZそれぞれの回転値の求め方です。
これ、何故か数年に一度必要になるんですよね、、、、

なんか,毎度毎度この展開をやっては資料を無くしてる(そして再び一から計算しなおし…)んで,いいかげんウンザリなんですよね(笑
しかも、他のページに載っている式が間違っているものが結構あって、検索しても信用できなくて結局自分で計算するという。。。。ソレハサテオキ。

回転行列を求める

まず, XYZ それぞれの軸の回転.


    | 1  0   0 |
Rx = | 0 Cx -Sx|
    | 0 Sx  Cx | 

    |  Cy 0 Sy |
Ry = |   0 1  0 |
    | -Sy 0 Cy | 

    | Cz -Sz 0 |
Rz = | Sz  Cz 0 |
    |  0   0 1 |

Cx,Cy,Cz,Sx,Sy,Sz は cos(θx),cos(θy),…sin(θz) の略です.
表示が崩れて汚いのはご愛嬌(笑

因みに,これも忘れた場合は一から考えるんですけどイマドキはググった方が早いですね.そのときは座標系の違いに気をつけないといけないですけど.

XYZ回転のマトリックスを求める

XYZ 回転の場合,回転マトリックス R は RzRyRx.
これを一生懸命展開します.


   | CyCz SxSyCz-CxSz CxSyCz+SxSz |
R = | CySz SxSySz+CxCz CxSySz-SxCz |
   | -Sy SxCy CxCz |

ε=(。・д・。)ふー

根気があれば完全に手の運動です.でも,大抵どこかで間違えるんですよね…(´・ω・`)

回転行列から回転角度を求める

因みに,最初に R がわかっていれば回転角度も求めることができます。
ただし、このときに必ずしもマトリックスを作った元の回転角度がわかるというわけではありません。

こちらのサイトは行列の表記が転置されているので気をつける必要がありますが回転順序が違う場合も含めて詳細な計算方法が掲載されています(合っているかは検算していないので誰かやってくださいw)
※注記:NumPyで行列を扱うと、上記サイトのように列優先なので、NumPyを使うときは転置された表記のほうがわかりやすいかもしれません

続・回転行列から回転角度を求める

より詳細を記述した資料をみつけました(注意:PDF)。ちゃんとやろうとすると結構めんどくさいみたいです。笑

カテゴリー: CG, Programming タグ:

infraBench 公開しました

2011 年 11 月 7 日 chiyama コメントはありません

クライアントPCから見た社内インフラのパフォーマンスを計測するためのツール、infraBench を公開しました。

。。。と言っても、フレームワークとプラグイン一本しかまだ登録されていないですが(汗。

社内のインフラのパフォーマンスって案外定量的に計測されておらず、計測されていたとしても各社独自の方法で行われているので、客観的に早いのか遅いのか、快適なのかそうでないのかを知る術がほとんどなかったりします。

また、インフラの計測といっても非常に多岐に渡り、スループットやレイテンシ、トラフィック、などなどいろいろな計測方法やツールがあります。しかし、これらの情報を適度にミックスしながら比較し、現場の「遅い」という体感を数値に表すのは至難の業です。

infraBench を使うことで多角的なベンチマークを手軽に行う環境を構築し、更に他の環境と比較することでどこに問題があのかをより簡単に把握することができる環境構築を目指します。

その環境を構築するためにも、実際に使ってベンチマークを取って頂ける方や、プラグインを開発して頂ける方の協力が必要です。よろしくおねがいします。

つかいかた

現状、githubで公開しています。 git pull した後に config.txt を必要に応じて書き換えて infraBench.py を実行するだけです。計測結果の表示は全く整形していないのでまだ非常に見づらいです。

config.txt のかきかた

config.txt は一行毎に実行するベンチマークの命令を記述します。

サンプルで登録されているものはこのようになっています。


fileStat(path = './tmp/1k'   , size = 1024   , count = 10)
fileStat(path = './tmp/10k'  , size = 10240  , count = 10)
fileStat(path = './tmp/100k' , size = 102400 , count = 10)
fileStat(path = './tmp/1000k', size = 1024000, count = 10)

filestat がプラグインの名前、そのあとの () で囲われた部分がこのプラグインを実行するときの引数になります。
この引数の内容はプラグイン毎に異なります。

この例では、fileStat プラグインが4回呼び出され、それぞれカレントディレクトリの下に 1KB/10KB/100KB/1MB のファイルを 10 個づつ作り、それぞれのファイルの情報を取得するのにかかった時間と CPU サイクル数を計測します。

プラグインアーキテクチャ

infraBench は非常に単純なプラグインアーキテクチャを採用し、ほとんど手間無く機能を追加することができるようになっています。

プラグインで必要な関数は 3 つで、 preProcess(), process(), postProcess() になります。
infraBench は実行の際、config.txt で指定された実行順序に preProcess() を全て実行し、次に process()、最後に postProcess() を実行します。

各関数はargs と valuesという引数を二つ取り、args は config.txt で設定された値を辞書として取ります。values は infraBench 全体で蓄積していく値のブロックを取ります。
各関数は必要に応じて値の追加や既存の値の加工、削除などを行ってその結果を返り値として返します。これにより、 infraBench 全体ではあたかもプラグインというノードを直列に繋いだノードのようなふるまいになり、最後の処理が終った時の返り値に全ての情報が入っていることになります。

詳しくは modules/fileStat.py を読んでみれば何をすべきなのかわかります。

さいごに

infraBench は基本になる骨組はできているものの、必要なプラグインは全く整っていない状態です。ぜひとも一緒に機能を増やし、より手軽に社内ネットワークの状況を把握できる環境を構築していきましょう!!ご協力おねがいします。

カテゴリー: コンピュータ タグ:

なんか違うな。。。

2011 年 9 月 11 日 chiyama コメントはありません

前の記事、勢いで書いたもののやっぱり違うなぁと思ったり。自分語りしてもしょうがないんですよね、、、
続きを読む…

カテゴリー: 雑記 タグ:

学生~社会人時代、私が勉強に使った資料たち(1)

2011 年 9 月 11 日 chiyama コメントはありません

最近、学校の先生や学生さんから「何を勉強したら就職できるんですか?」というご質問を受けることが多いので、自分が学生時代~社会人にかけて勉強するのに使った教材や資料のうち、自分の血肉になったと実感した資料たちをご紹介します。

続きを読む…

カテゴリー: 雑記 タグ:

PyMax公開準備中

2011 年 4 月 30 日 chiyama コメントはありません

公開をしないとな~と思いつつ後回しにしてしまっていた PyMax を公開するための準備をはじめました。

まずは形からってことで、PyMax のサイトを立ち上げました。
コードとかバイナリとかドキュメントとか、準備ができ次第順次公開していく予定です。できれば今回のゴールデンウィーク中に一通りの準備を終えたいところです。

同時に、PyMax を一緒にメンテナンスしていただける方も絶賛募集中です!! JCGS としては既にガンガン使っているので使えることは間違いないですが、まだまだやらないといけないことがたくさんあるのです。きちんとメンテナンスをして情報発信をしていけば、日本国内だけではなく世界中のプロダクションで使用されること間違いなしの PyMax 、一緒にメンテナンスしませんか!!

カテゴリー: 3ds max, Programming タグ:

Wafの勉強をしてみた

ビルドシステムは make を始め幾つかありますが、21世紀になって make は無いわーということで他のものを探していたところ、Waf がいいという話を聞いたので調べてみました。

まず当たるのは本家の “The Waf Book” です。かなりの力作で、これを読めば Waf の全てがわかるでしょう。英語ですけどね。

これはこれでよくまとまっているんですが、英語&長い!!ということで私の脳では一気に処理できない!!ということで、こちらを読みつつ、”純粋関数型雑記帳“さんの”waf チュートリアル“という記事も参考にさせて頂きました。これはとてもわかりやすいです。執筆者の tanakh さんに感謝です!!

追記としては

  • Windows の VS2008 でも使えた!!(exe,lib,dllどれもさくっと生成できた)
  • “wscriptの基本的な書き方”の項目にある ”set_options” というのは Waf の仕様変更により “options” になっている
  • “ライブラリの作り方”の項目にある ‘cxx cstaticlib’ は ‘cxx cxxshlib’(DLLを作る場合は ‘cxx cxxshlib’)にする

このあたりが気になったところです。特にVS対応は予想外で嬉しかったです :-)

他にも幾つか仕様が変わっているものの、全て警告が出てどう変更すればいいのかわかるのでとても親切です。

カテゴリー: 未分類 タグ:

シーグラフ東京 第60回セミナー

直前ですが、3/9 に R&H の加藤氏をお招きして講演が開かれます。

皆さん奮ってご参加ください!!

シーグラフ東京 第60回セミナー

きたる3月9日、第60回目のシーグラフ東京セミナーは、Rhythm&Hues の加藤俊明氏を迎えて、カジュアルな雰囲気で開催します。

加藤氏は長年数々のレンダラー開発に携わり、Square USA時代には “Kilauea”: parallel global illumination renderer,
現在は老舗の CG/VFXスタジオRhythm and Hues Studios にて活躍される
トップレンダリストです。
今回はその加藤氏に、レンダラーの変遷と、ご自身が開発してきたレンダラーのお話をしていただきます。

世界の主流レンダラーは Pixar RenderMan ですが、実際の現場では様々なレンダラーが使い分けられ、自社開発のレンダラーを活用しているプロダクションもあります。
レンダラー開発者や、シェーダー開発者としてキャリアを重ねたい方や、数学がCG計算が得意で、自身のレンダラーを開発してみたい学生さん、CGプロダクションの中で、レンダラーがどういう位置づけで活躍しているのか、世界の第一線で活躍される加藤さんにお話を聞けるとともに、会場に集まる同業の面々とも情報交換して頂けます。

カテゴリー: 未分類 タグ:

CGWORLD.jp スクリプト兵法書~MAXScript編~ 第四回

CGWORLD.jp の max script 講座の第四回が更新されました。

前回に引き続き、一気にステップアップするための内容です。

今回は具体的に ParticleFlow とスクリプトを使用して映像を作るための手順の解説をしています。
ParticleFlow に関してはいろいろと問題もあって、環境によっては今回解説した内容だけではきちんと動かない可能性もあるので、もし問題や不明な点があればご連絡頂けると嬉しいです。

カテゴリー: 3ds max, CG タグ:

Thought of You – by Ryan Woodward

2011 年 1 月 10 日 chiyama コメント 2 件

ひさしぶりに、感動的なアニメーションを見ることができました。

ストーリー性、アニメーションの内容、最後の意外性、どれを取っても素晴らしいです。これは泣ける!!

この作品の制作者は Ryan Woodward 氏です。この人の Web サイトには、これ以外にもたくさんのアニメーションが載っていて、見ていてもとても楽しいです。

特に驚いたのがエフェクトアニメーションの内容。ジャパニメーションAnime(コメント欄でご指摘いただきました。ありがとうございます!!)の影響を受けていることがすごくよくわかります。そして、レベルがとてつもなく高いです。

Traditional EFX Reel from Ryan J Woodward on Vimeo.

Batman Beyond – Return of the Joker – Alt title sequence from Ryan J Woodward on Vimeo.

Osmosis Jones title sequence from Ryan J Woodward on Vimeo.

この人、アニメーションだけではなくドローイングもガッチリできるなーと思ったら、Academy of Art University という学校で修士まで取得しているようです。なんかもう、、、、日本では考えられないですね、、、

きちんとした教育機関で教育を受けてマスターの学位まで取得して、きちんとしたベースの上にこんな技術を身につけられたら、全く太刀打ちできる気がしません。スゴ過ぎる、、、、

因みに、この作品の振り付けをつけた人は日本人らしいです。メイキングもあったのであわせて見るととても面白いです。実際のダンサーに踊ってもらって、それをベースにアニメーションを描いたみたいです。

Thought of You – Behind the Scenes Preview – ROUGH CUT from Cambell Christensen on Vimeo.

それにしても、緩急のアレンジのしかたや体の変形のさせ方が気持ち良いです。日本のアニメーションって、このスタイルを目指しているよね?っていうのを実現してしまっているように思えます。

カテゴリー: 未分類 タグ:

CGWORLD.jp スクリプト兵法書~MAXScript編~ 第三回

なんだかものすごーく久しぶりな更新な気がしないでもないですがw、CGWORLD.jp の max script 講座の第三回が更新されました。

スクリプト兵法書~MAXScript編~
Vol.3:スクリプトの具体的な作り方(前編)

今回と次回は、これまでの基礎から一気にステップアップするための内容となっています。

3dsmax といえば特殊なことをするためにはプラグインが必要だ!!という認識が一般的ですが、そんなことはありません。スクリプトを駆使すればHoudiniにも負けない表現力を標準機能で手に入れることができます。その可能性の一端を垣間見ることができるような記事になっています。

カテゴリー: 未分類 タグ: