アーカイブ

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

lucille@github を使ってみよう

2009 年 4 月 11 日 chiyama コメント 13 件

仕事が一段落して、久しぶりに心休まる週末なので github を使ってみることにしました。
とは言っても、github を使うのが目的ではなく lucille の最新コードを手元に持ってきていつでも最新版を使えるようにしたいのです。

github?
ここ最近開発者の間で流行っている Git のリポジトリを公開するためのサイトです。Git は…CVS とか Subversion とかのソースコード管理システムの一つみたいな認識でいいんじゃないかと。何で流行ってるのかと言うと…何でだろ?

Git?
そもそも Git って何よ?という感じだったので Wikipedia を参照すると、なるほど、

  • Linuxカーネルを開発するためにリーナスが作った
  • 分散バージョン管理システム

ということですか。これは流行るわけだと妙に納得。

使ってみる
とりあえず github から lucille のコードを持ってきます。
これはもう簡単。Web ページからダウンロードできます。download ボタンを押すと zip か tar で持ってこれるようです。

ダウンロードしたら適当な場所に解凍してビルド。

ビルド
INSTALL を読むと幾つか依存するツールがあります。

  • python ( for scons )
  • scons > 1.0 ( http://www.scons.org/ )
  • flex
  • bison
  • gcc > 4.0 (If you use gcc)
  • cunit ( Optional. Used for unit testing. http://cunit.sourceforge.net/ )

足りないツールはサクサクと入れちゃう。昔はソースコード原理主義で一から作る派だったけど、今はそんな元気ないので Fink を使っちゃう。
環境が整ったらドキュメント通りに build/install。私の環境(Mac OSX 10.5)だと特につまづくところもなくおわりました。

レンダリング

>lsh tut1.rib

とかでレンダリングできる。…がっ! muda とかいうファイルができるだけ。何これ?私のやってることはムダだって言われてる?(言ってません)
rib をいじって出力先を muda.tif に変えてみる

Display “muda.tif” “tiff” “rgb”

muda.hdr ができる。出力は問答無用で HDR ファイル?なんて漢仕様(涙

3Deliht についている hdri2tif でも読めない。うむむ。。。

とりあえずドキュメントでも読むか
lucille のドキュメントは SPHINX というものを使っているみたいです。doxygen みたいなもの? Python の easy_install というものでサクッとインストール。

>sudo easy_install sphinx

その後、doc/userman に移って make。

chiyama@lain:~/Projects/OpenSource/syoyo/lucille-git/doc/userman[668]% make
make html
mkdir -p build/html build/doctrees
sphinx-build -b html -d build/doctrees . build/html
Running Sphinx v0.6.1
loading pickled environment… done
building [html]: targets for 5 source files that are out of date
updating environment: 0 added, 0 changed, 0 removed
looking for now-outdated files… none found
preparing documents… done
Exception occurred: 20%] cgkit
File “/Library/Python/2.5/site-packages/Jinja2-2.1.1-py2.5-macosx-10.5-i386.egg/jinja2/environment.py”, line 357, in parse
raise e
TemplateSyntaxError: expected token ‘lparen’, got ‘block_end’
File “/Users/chiyama/Projects/OpenSource/syoyo/lucille-git/doc/userman/_templates/layout.html”, line 7
{%- macro relbar %}
The full traceback has been saved in /var/folders/Jo/Jonjry+EHaeb9BGfWDzB2k+++TI/-Tmp-/sphinx-err-VdNq5_.log, if you want to report the issue to the author.
Please also report this if it was a user error, so that a better error message can be provided next time.
Send reports to sphinx-dev@googlegroups.com. Thanks!
make[1]: *** [html] Error 1
make: *** [all] Error 2
chiyama@lain:~/Projects/OpenSource/syoyo/lucille-git/doc/userman[669]%

エラー!!ガッデム!!
ドキュメントが生成できない問題は syoyo さんが早速対応して下さって解決しました :-D
ありがとうございました。

とりあえず置いておいて git 環境を作る
すぐに解決しなさそうなので最初の目的に戻る。Web 経由ではなく、コマンドラインから手軽に最新のコードを持ってこれるようにする。

GitHubを使い始めてみたメモ

このあたりを参考に、git 環境を作る。これも Fink で一発。

Binary がなくて source から入れることになって小一時間かかってしまった。。。

気をとりなおして環境構築の続き。

git にユーザー名とメールアドレスを登録する。

> git config –global user.name “Hiroshi Chiyama”
> git config –global user.email “hchiyama@gmail.com”

clone でマスターと同じものを手元に持ってくる。

> git clone git://github.com/syoyo/lucille.git
Initialized empty Git repository in /Users/chiyama/Projects/OpenSource/lucille/.git/
remote: Counting objects: 3139, done.
remote: Compressing objects: 100% (1457/1457), done.
remote: Total 3139 (delta 1946), reused 2757 (delta 1626)
Receiving objects: 100% (3139/3139), 4.72 MiB | 384 KiB/s, done.
Resolving deltas: 100% (1946/1946), done.

できたので試しにビルドしてみたりレンダリングをしてみたりする。

日々の更新
ここまでこれば常に最新版を手元に持ってくることができるようになる。

> git pull

まとめ
これでひとまず環境は整いました。ちょっと使った感じ、git は個人で使うにはちょっとオーバースペックすぎるかなぁという気もします。分散開発とかの概念が入ってる分、CVS や Subversion よりも複雑な印象を受けます。慣れれば便利なんでしょうけどね。

今後は lucille の開発動向を追いつつ、いろいろと試してみようかなと思います。今回解決できなかった問題もいくつかあるし。

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

Blender一人読書会

2009 年 1 月 25 日 chiyama コメント 2 件

CGソフトの内部構造が知りたかったので、Blenderのソースを読んでみました。ドキュメントを色々探したところ、blender.org – Architecture がBlenderの内部構造解説の決定版ぽいです。

ここを読めばアナタも Blender Master!! …というわけにはいかないですが、解析のための大きな手掛かりになります。
特にページ下部にあるソースコードの構造図はものすごく参考になります。この手の解説は古すぎて最新版では全く参考にならないことが多いのですが、私が見た限りこの図の通りの構造になっているようです。

あとは、Adding new Space Window のように、機能を追加する際の手順を解説してあるドキュメントを参考にするとデータや関数の相互関係の理解がしやすいです。で、これを読んでわかったんですが Blender って機能拡張しようとするとかなり厄介です。ソースコードのあちこちに依存関係が散らばっていて、それを把握するだけでも一仕事です。最近であればきちんとクラス化して、必要な部分を埋めていくだけで機能拡張できるようなアーキテクチャにするんでしょうがBlenderは定数定義、新関数の定義の嵐で目が潰れそうですwww

このあたりまで目を通せれば当初の目的は大体達成できたので、これぐらいでやめておきます。

Blender は思っていた以上にドキュメントが充実していて、比較的簡単にソースコードを読むことができたのはうれしい誤算でした。オープンソースの統合型3DCGソフトなんて他にないので、とても助かります。

ただ、内部の構造が余りにもスパゲティすぎるのが困りものです。ガイドがないと手も足も出ません(苦笑。
アーキテクチャも柔軟性に欠けるし、コアから書きなおしたほうがいいんじゃないか?というのが正直な感想です。


(追記)Hackers Guideに、実際にコードを書く時の情報がまとまってます。

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