カテゴリー: Programming

Programming

Sphinx+翻訳 Hack-a-thon 2012.03

PyDoc はいい加減アレだし、そろそろ Sphynx 使いたいよねーと思っていたところに Sphinx+翻訳 Hack-a-thon があったので参加中。

作業ログ代わり兼Blogネタとしてやったことを記録していく感じ。

インストール

Windowsへのインストール

はいはい easy_install ドーーーーン!!

>easy_install sphinx

Sphinxを使ってみる

Pythonって何?という人のためのSphinxチュートリアルを参考に作業を進める

プロジェクトを作成する

Windows の場合、 $(Pythonのインストールディレクトリ)\Scripts\sphinx-quickstart.exe を使う。いろいろ聞かれるものの、ほとんどはとりあえずデフォルトで。プロジェクト名、Authorなどは適当に。

とりあえずビルドしてみる

$(Pythonのインストールディレクトリ)\Scripts にパスが通っていれば VS のコマンドプロンプトから起動しなくても大丈夫。

>make.bat html

ドキュメントを書いてみる

reStructuredText入門 を参考に。日本語でドキュメントを書く場合は、元の rst ファイルは UTF-8 で保存されている必要がある

例としては下のような感じ。ただし、セクションなどの記号は、特に標準というものはない。(!!)


========
タイトル
========

セクション
========

サブセクション
--------

サブサブセクション
^^^^^^^^

ドキュメント中で使用されていない記号が出てきたときに、それが随時セクションわけのための記号として登録されていく。
そのため、別のドキュメントで別のセクション記号が使用されていてもOK。

ただし、ドキュメントをインクルードする場合はそれぞれのドキュメントで仕様を統一しておく必要がある。

所感

  • やっぱりタグでドキュメントを書くのは21世紀になってやることなのカー?という気持ちが強い
  • Windows でも環境構築をするのは簡単
  • WYSIWYG で Web インターフェースなエディタが欲しいナー(チラチラ
CG, Programming

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

以前、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 CxCy | 

※2013/04/08 計算結果に間違いがあったので訂正しました。ご指摘いただいた Jagoon さんありがとうございます。

ε=(。・д・。)ふー

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

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

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

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

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

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

3ds max, Programming

PyMax公開準備中

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

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

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

CG, Programming

PySide for Windows

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 のリリースは嬉しいやら何やら複雑な気分です。

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

3ds max, CG, Programming

Py3dsMax installation and demo

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

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

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

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



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

Programming

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

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 を避けてきたのです。特に、途中から商用ライセンス下で開発することができないというのはキツすぎます。これだけはちょっと飲めないです ;-(

3ds max, CG, Programming

Custom Plugin Manager for 3ds max

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

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

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

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

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

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

CG, Programming

githubを使ってみよう

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

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

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

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

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

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