月: 2009年12月

CG

PreViz(Pre-Visualization)について調べてみた

白石さんのところより。これは良記事。

PreViz(Pre-Visualization)について調べてみた

PreViz とか Vコンテとかは現場では普通に使われていて、これ無しで映像を作ることは既に考えられないくらいに浸透しているのだけれども、数百人規模で動く海外作品と違って、日本ではより柔軟な運用wをしていることが多いと思います。

これは行き過ぎれば無計画化を招いて PreViz の意味を失う恐れはあるものの、PreViz に縛られて身動きがとれなくなってしまうのも本末転倒なので、 PreViz に対するスタンスをスタッフ全員で共有することが大事です。

あと、PreViz だとカメラワークや尺・テンポというものはかなりの精度で表現できるものの、エフェクト(特にゲーム系やハリーポッターのような柔軟性の高いもの)のイメージを早い段階で提示するのは難しいので、悩みどころだったりします。もうね、画面一杯エフェクト祭りだったときに PreViz 作れって言われた時の絶望感と言ったら…(苦笑

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

CG, Maya

PyQt on Maya

CG業界の標準スクリプティング環境が Python+Qt でほぼ確定っぽいので、私も今後はこの環境で開発をしていくことにしました。個人的にはスクリプト言語は Ruby、GUI ツールキットは fltk が好きなんですけど、そこでわざわざマイノリティになっても仕方ないですからね。。。。

ここで問題になるのが、標準で配布されている PyQt には 64bit 版が存在しないことです。将来的には Maya にも標準で PyQt が添付されるようになるでしょうが、今のところは各自用意する必要があるようなので syoyo さんの記事を参考に自前ビルドをしてみました。

結論から言えば、時間はかかったもののアッサリと動きました。Maya 上の Python から Qt のサンプルを動かすのもバッチリです 🙂 ・・・と言いたいところですが、一つ致命的な問題があることに気づきました。

スクリプト実行中は Maya が固まる

はい、ちょっと考えれば当たり前ですねw しかし、このままでは使い物になりません。
どうしたものか。。。と悩みながらドキュメントを読んでいると、pumpThread というものを使えば解決するようです。これは Maya の devkit に含まれています(devkit/other/PyQtScripts/qt/pumpThread.py)。

pyQtScripts/userSetup.py を実行すると Maya のメニューバーに pythonScripts という項目が追加されて、サンプルを試すことができます。・・・が、これもまたきちんと動いていないようで、相変わらず Maya が固まってしまいます。

また、標準でついてくる pumpThread にはいろいろ問題があるらしく、改良版が python_inside_maya という ML の “PyQt in Maya examples” というスレッドに掲載されていました。ソースはまだ読んでいないので内容については何とも言えないものの、こちらを使用したほうがいいのかもしれません。

今のところ私がわかっているのはこれくらいです。PyQt on Maya についてはまだまだ調査を始めたばかりでわからないことだらけなので、何か情報をお持ちの方はぜひ教えてください 😀