アーカイブ

‘Programming’ カテゴリーのアーカイブ

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

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 タグ:

PyMax公開準備中

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

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

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

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

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

PySide for Windows

2010 年 9 月 2 日 chiyama コメント 4 件

CEDEC中だから・・・・ということは全く関係なく(笑、急遽飛び込んできたのが PySide for Windows リリースのニュースです。

PySideは Maya や RealFlow でも採用されている Qt というライブラリを Python から使用するためのライブラリです。同様なものに PyQt が存在し、これまでは Windowsで Python から Qt を使うには PyQt しか選択肢がありませんでした。

しかし、PyQt の最大の問題点はライセンスです。 PyQt はオープンソース版と商用版の二つのライセンスがあり、オープンソース版で開発したプログラムは LGPL でリリースしなければいけません。 LGPL とは、平たく言えば”公開したプログラムのソースコードは全て公開する必要があり、第三者がそのプログラムを自由に使うことができる”という形態です(似たようなものにGPLもあり、いろいろ違うのですが割愛w)。
※PyQt のオープンソース版は GPL ライセンスでした。GPLはLGPLよりも制限が厳しく、完全にソースコードを公開する必要があります。ご指摘ありがとうございます!!>okayuさん

オープンソースなプロダクトならこれでも全く問題ないのですが、商用ツールを作成して配布するときにはこれでは困ります。そこで商用ライセンスを購入すればGPLではない形式にできるのですが、開発者一人当たり£350(約4万5千円)かかります。

しかし、PySide は完全フリー、かつGPLに縛られないという夢のようなプロダクトなのです。これは嫌でも期待が高まります。私もそろそろPyQtのライセンスを購入しないといけないなーと考えていたところなので、このタイミングでの PySide のリリースは嬉しいやら何やら複雑な気分です。

まだ動作検証もしていないので実用に耐えられるかわからないですが、これは期待大です!!早速テストして、よさそうならこちらに乗り換えることを本気で検討します。

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

Py3dsMax installation and demo

2010 年 2 月 20 日 chiyama コメントはありません

Blur Studio 作の Py3dsMax が更新されていて、本格的に使用できるようになっていました。以前も動作はしたのですが、UI 部分が動かなかったので MaxScript から python モジュールにスクリプトを文字列として渡すとかしないといけなかったんですね。

今回のアップデートは PyQt に対応し、Python スクリプトもエディタから直接実行できるようになっています。Great!!!!!!

インストールも至って簡単で、Py3dsMax のサイトから必要なインストーラをダウンロードしてインストール、そして 3ds max のプラグインパスにインストールした Py3dsMax のパスを通すだけ(Max2010は、標準添付のQtライブラリを改名して無効にする必要あり)。

ついでなのでダウンロードからインストール、サンプルプログラムの実行までをムービーにしてみました。画面再撮で見にくかったり、インストール途中でハマってもたついたりしますが、全体の雰囲気は掴めるのではないかと思います。



とりあえずいいから動いているのを見たい!! という方は、 07:00 あたりから再生してください。

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

並カン

2010 年 1 月 31 日 chiyama コメントはありません

今日の昼から開催される並カンに参加します。
ちょっと前に確認したときは定員オーバーでキャンセル待ちだったので諦めてしまったんですが、今はまだ余裕があるみたいです。

ミカンと聞いたら参加しないわけにはいかないですよね(違

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

Qt のライセンスについての考察

2009 年 12 月 9 日 chiyama コメントはありません

Qtを使うと決めたものの、ライセンスのことをすっかり忘れていました。そういえば、以前も Qt にしようか迷って、ライセンスの余りの酷さに心が折れたことを思い出しましたよw

SRA のサイトにFAQがあったのでざっと目を通してみました

そして、そこで驚愕の記述が。

Q8 : オープンソースでないアプリケーションを Qt のオープンソース版で開発し、販売を開始する時に商用ライセンスを購入するのは可能ですか?
A8 : いいえ。商用ライセンスの取り決めは、商用ライセンスの取り決めの下に Qt を用いて開発されたソフトウェアだけに適用されます。この取り決めに先だって Qt オープンソース版で開発されたコードには適用されません。商用版ライセンスなしに Qt で開発されたソフトウェアは全て、オープンソースソフトウェアとしてリリースしなければなりません。

えぇぇぇぇ!!!まーじーでーすーかー!!!!????更にこんなものも:

Q13: プログラムを作成したい全てのプラットフォーム用にライセンスが必要ですか?
A13: はい、必要です。例えば Qt を Windows と Mac の両方で使用するのであれば、2 つのプラットフォームのライセンスが必要になります。Windows と Mac と Linux で Qt を使用するのであれば、3 つのプラットフォーム用のライセンスが必要です。

Qt の商用ライセンスって、最低でも $2995 するんですけどwwwこれは気軽に買える金額じゃないです(汗

ここで気になるのが、PyQt(GPL/商用のデュアルライセンス) を使用してプログラムを作ったときのライセンスについて。ちょっと考察してみました

※ここからは、私個人の勝手な考察です!!これが全面的に正しいという確証はないので信じないでください!!

  1. LGPLライセンス下では、LGPLなライブラリ部分を動的リンクしていれば全部のソースを公開する必要がない(はず)
  2. ということはQtを使っても、共有ライブラリとして使う分には自分が開発した部分のソースコード公開の義務は発生しないはず
  3. Qtベースでカスタムウィジェットを作っても、静的リンクしなければ大丈夫
  4. このカスタムウィジェットをPyQtから呼んで使っても、ウィジエットは大丈夫
  5. カスタムウィジェットをPyQtから呼ぶアプリを作ると、アプリ部分はソースコードを公開しないといけない
  6. 更に pyside(情報ありがとうございます!!>@t_ashulaさん) を使えば、アプリのソース公開義務も発生しない?

スクリプトベースのアプリとLGPLの動的リンクまわりの解釈がどうなるのかがはっきりしないですが、こんな感じでしょうか? pyside のサイトで名言されてますね。クローズドソースな商用アプリも作れるみたいです。

PySide Qt bindings allow both free open source and proprietary software development and ultimately aim to support all of the platforms as Qt itself.

更に言うと、LGPL な Qt を使って BSDライセンスなカスタムライブラリを作ってそれを商用利用するというのは OK なんでしょうか。こういう抜け方は誰でも考えるでしょうから、調べればいろいろ解釈がみつかると思います。。。が、疲れたので今日はここまで。

それにしても、これだけがんじがらめになってると Qt を使う気が一気に萎えますね。これまでも同じ理由で Qt を避けてきたのです。特に、途中から商用ライセンス下で開発することができないというのはキツすぎます。これだけはちょっと飲めないです ;-(

カテゴリー: Programming タグ:

Custom Plugin Manager for 3ds max

2009 年 11 月 3 日 chiyama コメントはありません

プラグイン開発者にとって、プラグインの動的 Load/Unload ができるかできないかは生産性に直結する問題です。

振り返ってみると Maya はさすがというか標準で対応していて、気軽にプラグインの更新ができるようになっています。

ところが、3ds max は遅延ロードには対応しているものの Unload ができません。これは正直アリエナイです(笑。こんな環境でプラグイン開発なんてやってたらmaxの再起動だけで1日が過ぎてしまいます。いや、そんなのに頼らずに一発で動くのを作ればいいじゃん?という声も聞こえてきそうですが、よっぽどの天才ならともかく、凡人の私には無理です(笑

ということで、プラグインマネージャからプラグインのアンロードができるように手を加えてみました。maxのモロモロの実装がアレな関係でMayaほどきちんと動かないですが、Unload→プラグイン更新→Load くらいはできます。

max2010/64bit 版のプラグインをアップロードしておくので、使いたい方は自己責任でご利用ください :-D

Unload 対応プラグインマネージャ for 3ds max 2010/64bit

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

64bit Mayaプラグイン開発環境を無料で構築する

2009 年 8 月 31 日 chiyama コメントはありません

64bit 版の Mayaプラグイン開発環境を作るためにやった作業メモ。ほとんど memlog さんからのコピペですwww

続きを読む…

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

githubを使ってみよう

2009 年 4 月 15 日 chiyama コメントはありません

記事に触発されて、github を使ってみることにしました。

使ってみると決めたらまずはアカウント作成。必要なのはユーザー名とパスワード、それから ssh public key です。ここで間違って private key を貼りつけたりしなければ、特に問題はないと思います。

そしたらもう使えるようになっちゃいます。早っ!!本当にこれだけでした。記事にもならない(汗

使えるようになったので、早速lucille を fork します。これも簡単、my fork ボタンを押すだけ。

画面が切り替わって一瞬何が起こったか理解できないけれども、もう自分の lucille リポジトリができています。早っ!! github を使うと決めてここまで 5 分かかってません。これはスゴい。

そんな感じでできた私のページはこちら。使い始めの印象としては今までで最高です。使い勝手はどうかなー?

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

gitについての記事

2009 年 4 月 15 日 chiyama コメントはありません

git の話をしているところにピッタリなタイミングでこんな記事がありました

ソーシャル化するOSS開発者たち

この記事を読むと、CVS や Subversion(svn) と git が全く違うということがわかります。

特に目から鱗だったのが、CVS や svn の中央レポジトリが物理的な”土地”と同じく政治的な意味を持つのに対して、 git のようなどこにでも同じレポジトリが存在するようになるとレポジトリという形は意味をなさなくなり、それぞれのレポジトリ上で何が行われているかが意味を持ってくるという話でした。
分かれたレポジトリで興味深い変更がされたら、自分のところに持ってくる(git pull)ということなんですね。へー。

この文章を読むと、 git 内での物事の考え方がわかる気がします。私も早速 lucille のクローンでも作ってみますかねw

カテゴリー: Programming タグ: