2010年11月27日土曜日

blender2.5のマニュピレータのショートカットキー編集

blenderの3D Viewでオブジェクトをマウスで操作するためのマニュピレータというものが
あります。これによりマウスだけで移動、回転、サイズ変更の3種類の操作が出来ます。
また、マニュピレータそのものの表示・非表示の切り替えも可能です。
下図の赤枠の左から表示切り替え、移動、回転、サイズ変更のボタンです。



で、これをいちいちボタンで切り替えるのが面倒なのでショートカットキーを設定します。
マニュピレータ表示・非表示の切り替えにはCtrl+Spaceがデフォルトで割り当てられていますが
OSXではスポットライト検索と重なっているため使えません。
というわけで、この表示の切り替えのショートカットも変更してこんな感じにしてみます。

・表示切替 : ESC+1
・移動 : ESC+2
・回転 : ESC+3
・サイズ変更 : ESC+4

キーボードの左上部分をUIのボタンの順に割り当てるイメージです。
実際の設定はメニューの"User Preference"->"Input"で行います。

まずは表示切替から。表示されるカテゴリから"3D View"->"3D View(Global)"で
"space_data.show_manipulator"を設定している部分を下記のように変更します。




次は移動、回転、サイズ変更の設定です。この3つはデフォルトではショートカットキーは
割り当てられていないため新規に項目を作成する必要があります。先ほどと同じカテゴリの
一番下にある"Add New"をクリックして項目を3つ作成して、以下のように編集します。



以上の設定が完了したら正しく動作するか3D Viewでテストして、問題なければCtrl+uなどで
デフォルト設定として保存しておくとよいでしょう。


参考ページは以下
・Blender Newbies
  Blender 2.5 Tip: How to Setup Keymaps to Change Transform Manipulator Modes


---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

2010年11月24日水曜日

Mitsubaレンダラ 0.2.0がリリースされる

タイトルのとおりMitsubaの新バージョンがリリースされていました。
以前アナウンスがあったKD-Tree周りの改善だけでなくblender2.5向けの
プラグインが早速追加されるなど、いろいろ興味深いものになっています。

とりあえずリリースノートを訳してみました。



前バージョンよりだいぶ間があきましたがMitsubaの新バージョンをリリース
しました。リリースが遅れたのはレンダラについて非常に多くのアーキテクチャ
変更を行ったためです。それらの変更は実際にみなさんがMitsubaを利用する際に
目に見えるものではありません。
しかし、レンダリングの高速化というかたちで体感していただけると思います。

アーキテクチャ変更以外の今回の変更内容は以下のとおりです。


・COLLADAインポータの安定性の改善。
  大抵のシーンを正しく読み込めるようになりました。従来はインポータ読み込まれた
  シーンは何百ものメッシュデータファイルに分割されていましたが、今回から単一の
  圧縮ファイルへ変換するようになりました。

・blender2.5への統合のための試験的なプラグインの追加
  プラグインにはマテリアルデザイナの機能も含まれています。このプラグインは
  現在リリースされているblender2.55には含まれていない機能を利用しています。
  そのためプラグインの利用にはsvnの開発版を自分でビルドする必要があります。
  また今回のプラグイン作成にあたりDoug Hammond氏が開発したEFパッケージ
  から多くの恩恵をうけています。この場を借りて感謝を申し上げます。

・Jonas Pilo氏提供のテストシーンをマテリアルデザイナーのプレビュー時の
  サンプルオブジェクトとして利用させていただきました。
  どんな感じになっているかはこちらの動画で見ることができます。

・KDツリーを利用した高速化とツリー構築のためのコードを全面的に書き換え。
  この新しいコードではよりよいツリー構造を生成します。これにより処理時間は
  古いバージョンと比較して数分の一にまで改善されています。さらに処理可能な
  ポリゴン数も増え30M triangles以上のポリゴンが扱えるようになりました。
  旧バージョンでこのような多くのポリゴンを含んだシーンをレンダリングしようと
  した場合利用可能なメモリをあっというまに使い果たしてしまうケースがありました。
  (こちらの元記事で詳細を説明しています。)

・インスタンスのサポートが追加されました
・シェイプの限定的なアニメーション(剛体のみ)が可能になりました

・Edgar氏の献身的な貢献によりIntel C++コンパイラでMitsubaをコンパイルする
  ためのパッチが提供されました。こちらの公式ダウンロードページで配布している
  windows向けMistubaは32bit/64bitどちらもIntel C++コンパイラでビルドして
  います。Visual Studioでのバイナリより高速な処理が可能となっています。

・シーン記述に用いられるXMLの書式がよりわかりやすいものになりました。
  特にオブジェクトとプロパティを好きな順序で記述することが可能になりました。

・UVマッピングに関して調整のためのパラメータ(offset、scale)が追加されました

・Luminaire importance samplingがより柔軟な設定が可能になりました。
  旧バージョンでは光源のサンプリングをその光の強さに応じて行っていましたが、
  不適切な結果になるケースがありました。今回のリリースではサンプリングの
  重み付けをマニュアルで指定することができるようになりました。

・ヘアーのレンダリングに一部対応。
  今回のバージョンでは自己交差形状のレンダリングが可能になっただけで、髪の毛
  特有の散乱モデルはまだ実装されていません。一部対応というのはそのためです。

・PLYファイルの読み込みが可能になりました。
  Ares Lagae氏の貢献によりlibplyを利用して実現されました。

・レンダラから頂点カラーを参照することが可能になりました。
  散乱モデルの色情報の前に"texture"を記述することで利用可能です。

・irradianceキャッシュを使用した際のレンダサーバの競合によるロックを修正。
  旧バージョンでマルチコアのマシンでレンダした際のパフォーマンス低下の原因と
  なっていました。

・ファイルをロードした際に表示されるダイアログにコンソールがつきました。
  詳細な処理の状況が表示されるので重いシーンをロードする場合に便利です。

・内蔵の環境マップの照度についてimportanceサンプリングがサポートされました。
  旧バージョンではuniformサンプリングのみ利用可能でした。

・多くのマテリアルとテクスチャがGLSLで実装されました。
  これによりインタラクティブプレビューでの表示が可能になりました。

・プレビュー表示の高速化。
  ジオメトリの評価をGPUでの処理に最適化したため、わずかですがプレビューが
  早く表示されるようになりました。


以上に加えて多くのバグフィックスが行われました。
ドキュメントについては不完全な部分がありますが今後整備をすすめていく予定です。



とざっくりこんな感じ。

今回追加されたblender2.5向けのプラグインで利用しているEFパッケージというのは
luxblend25でおなじみのexporter frameworkのことなので、すでにLuxRenderを
blender2.5系で利用している方は問題なくmitsubaのプラグインも利用出来るのでは
ないかと思います。

そのへんも含めてこれから試してみる感じで。

---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

blenderのアドオン、プラグインが増えている模様。

blender2.5系で関連する仕様やAPIが整備されるに従い、様々なアドオンが
リリースされています。また機能追加もblender本体のバイナリファイルでなく、
Pythonスクリプトで実装され標準アドオンとして新機能が追加されるという
パターンも多く見受けられます。

で、現在標準アドオンだけでもどれくらいあるのか気になったので調べてみると 
公式wikiに2.53時点の標準アドオンのまとめページを発見。数えるとその数28個。
これに加えて現在最新の2.55で追加された物もありますし、開発版で追加される物も
日々増えています。

さらにblender2.5系でLuxRenderを使用するためのluxblend25などのように
標準では同梱されていなアドオンやプラグインも多数存在しています。
アドオンやプラグインの情報のみを専門的にまとめたサイトが欲しいところですが
なかったので個人的なメモついでにブログを作ってみました。

こちら-> blenderのアドオンやらプラグインなど

すべてのアドオン情報を網羅する、というのはさすがに無理なのであくまでも
自分の目についたもの、気になった物を中心に記載していければ・・という感じで。
実際の使い方などを解説するのではなくちょっとしたブックマークがわりのもの
として更新していく予定です。

こちらのブログは今まで通り、自分がやったことの覚書や短めのチュートリアル、
各種解説などの内容で更新を続けていきますので今後ともご贔屓に。

---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

2010年11月17日水曜日

オブジェクトごとのスタイルモジュールの割り当て

FreeStyleを使っていて不便だと思っていたのが指定したスタイルモジュールがシーンに
存在する全てのオブジェクトに適用されてしまうところ。blender標準のエッジも同様の
仕様なんだから仕方が無いというか、そういうものなんだろうと思っていました。

が、よく調べたらFreeStyleの公式ブログの進捗情報にヒントを発見

詳細は上記ブログを見てもらうとして、ポイントはビューマップに存在するエッジがどの
オブジェクトのものなのか?が参照できるようにになっていたという点。上記ポストには
これを利用してシーンに存在するオブジェクトの名前を指定して、そのオブジェクトの
ビューエッジを取得するObjectNamesUP1Dクラスがサンプルとして掲載されています。

こんな感じ。

class ObjectNamesUP1D(UnaryPredicate1D):
    def __init__(self, names):
        UnaryPredicate1D.__init__(self)
        self._names = names
    def getName(self):
        return "ObjectNamesUP1D"
    def __call__(self, viewEdge):
        return viewEdge.viewShape().getName() in self._names

これを利用して

upred = AndUP1D(QuantitativeInvisibilityUP1D(0),
                ObjectNamesUP1D(["Cube"]))
Operators.select(upred)

とするとカメラから見えて、かつCubeという名前のオブジェクトに含まれる、という
条件に当てはまるエッジが取得できるという仕組み。

早速これを利用したスタイルモジュールを作成して実際にレンダリングしてみました。
まずはこんなシーンを作る。



これを各オブジェクトに異なるスタイルモジュールを指定してレンダするとこんな感じ。



やったことは

最初にシーン全体に対して汎用な設定のモジュールでエッジを描画。
次にシーンのSuzanneには左上から順にm01からm12までの異なる名前をつけてあるので
  上段(m01〜m04):それぞれ色を変更したスタイルモジュールで上書き
  中段(m05〜m08):それぞれエッジ検出とタッチを変更したスタイルモジュールで上書き
  下段(m09〜m12):最初に指定した汎用設定の描画のまま上書き無し
という感じ。

ファイル構成としては最初はシーンで使うスタイルモジュールを1個にまとめられないかと
いろいろ試していました。が、スタイルモジュール中で一度作成したビューエッジのを
解放、もしくは上書きしてビューエッジを再作成する、というのがうまく出来ず・・・。
結局シーンで使用するスタイルの数だけスタイルモジュールを作成しています。

というわけで、上記シーンの下段4つは個別のスタイルを割り当てていないので使用した
スタイルモジュールの数は、m01〜m08用にそれぞれ設定を変えた8個+全体描画用の
汎用設定1個の合計9個を使用しています。

ついでに上記シーンのファイルをこちらにアップしてみたり。

個別設定のスタイルモジュールsmod_m01.pyからsmod_m08.pyの8個、全体設定用の
スタイルモジュールのsmod_main.py、シーンの.blendファイルが含まれています。
freestyle関連は設定済みなので、ファイルを開いてレンダすればスタイルモジュールを
適用した状態でレンダされるはずです。

---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

2010年11月12日金曜日

osxとnvidiaな環境でLuxRenderをビルドしたり。

前回からのつづき。ようやくLuxRenderのビルドもできるようになりました。

いろいろてこずったんでメモ。
luxraysがすんなりいったのでluxも楽勝だと思ったらそうでもなかった。

参考にしたのはLuxRender公式wikiとフォーラムのこのあたり。
[Tutorial] Build on Mac OS X with Xcode
OSX-renewing buildprocess -out-of-the-box-compile-
LuxRays - Building on Mac OS X
手順は、必要なライブラリやツールを準備、ソースのダウンロード、ビルド設定
ファイルの編集、Xcodeのプロジェクトファイル出力、Xcodeでビルド、という感じ。
詳細は以下に。


1. ライブラリやツールの準備

必要なパッケージの明細は上記リンク先で確認するとして、ここでは嵌った点のみメモ。

ひとつはcmake。
portで導入するとバージョン2.8がインストールされるけど、いろいろ調べるとcmakeは
バージョン2.6が推奨らしい。またフォーラム等ではgui版を利用した手順の方が比較的
多く目についた感じ。

というわけでcmakeはこちらからGUI版のcmake2.6.4のdmgパッケージをダウンドード
して インストールするのがおすすめ。既にportで2.8をインストールしていてもport版は
 /opt/local/bin、dmg版は/usr/binにインストールされるので併存させても問題無さげ。
ちなみに一応2.8でも試してみたけどうまくいかなかった。cmakeのバージョン以外に
問題があった可能性は否定できないけど推奨環境にしておくのに越した事はない。

もう一つはQt。
こちらもportでインストールしたものだとOSX SDKのフレームワークのインストール先に
Qt関連のフレームワークセットが作成されず、Xcodeでビルドする際に面倒なことに。
なのでQtもdmgで配布されてるインストーラ付きパッケージを利用するほうがよさげ。
こちらからQt SDK for Mac(LGPL版)をダウンロードしてインストールすればOK。

最後にLuxRenderの最新の開発版をビルドする場合にはLuxRaysライブラリが必要に
なるので、そちらを先にビルドしておく。その辺は以前すませているのでここでは省略。


2. ソースのダウンロード

mercurialを使ってcloneする。
$ hg clone http://src.luxrender.net/lux
$ hg clone http://src.luxrender.net/luxrays
$ hg clone http://src.luxrender.net/macos
src.luxrender.netからclone出来ない場合はbitbucket.org/luxrenderを試すと良さげ。


3. ビルド設定ファイルの編集

cmakeの設定ファイルであるCMakeLists.txtを自分の環境に合わせて編集。
途中いろいろいじったけど、結果的にはOpenCL関連の修正だけでよかったみたい。
85行目あたりにあるOPENCL_INCLUDE_DIRSとOPENCL_LIBRARYの部分を前回の
LuxRaysの時と同様に修正しておく。


4. Xcodeのプロジェクトファイル出力

最初にインストールしたcmakeのGUI版を起動する。
"Browse Source"のボタンをクリックしてcloneしてきたluxのフォルダを指定。
"Browse Build"のボタンをクリックしてこちらも同じフォルダを指定。
次に下にある"Configure"ボタンをクリックすると出力ファイルの形式を尋ねられるので
ファイル形式は"Xcode"、オプションは"Specify options for cross-compiling"を指定。



で、"Continue"をクリックして次に行くとプロジェクト詳細設定のダイアログが表示される
ので下図のように設定。OSやSDKのバージョン、CPU種別は各自の環境に合わせ要変更。



で、"Done"をクリックすると最初のウィンドウに戻って設定が始まる。プログレスバーが
進んで完了してもリストのアイテムがいくつか赤いままに残っている場合は、"Configure"
ボタンをクリック。再度設定が行われると赤いのが消えるはず。設定が問題なく済めば
"Generate"ボタンが有効になるので、それをクリックしてXcodeのプロジェクトファイルを
出力させる。luxのソースフォルダにlux.xcodeprojというファイルが作成されていればOK。


5. Xcodeでビルド

まずは先ほど出力したプロジェクトファイルをXcodeでひらく。
メニューの"プロジェクト"→"プロジェクト設定の編集"でビルド対象のアーキテクチャや
最適化オプションを自分の環境に合わせて指定。あとはメニューの"ビルド"→"ビルド"して
完了するのを待つ。問題なく完了すればソースフォルダのRelease以下にLuxRenderを
はじめとするビルドされたファイルがあるので起動してみる。



こんな感じのウインドウが表示されればOK。

---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

2010年11月8日月曜日

nVidia GPU環境でのslgとLuxRenderビルド

さらに続いてはSmallLuxGPU(というかLuxRays)とLuxRender。

Ubuntuのデスクトップでslgをビルドするための環境を構築したときの経験をもとに
今度はnVidiaのサポートからOpenCL SDK的なものをダウンロードしてくるんだろうなーと
探してみる。

が、OpenCL SDKのダウンロードリンクらしきものが発見できず。

とりあえずOSX用のCUDA Driver、CUDA Toolkit、CUDA SDK入手してインストールすると
/Developer/GPU Computingのフォルダが作成され、OpenCL関連のファイルも含まれている模様。

が、いろいろ試してみてもうまくビルドが成功しない・・。

再度グーグル先生に聞いたらLuxRenderの公式wikiにosxでのビルドについて詳しく書いてあった。

気になってたOpenCL SDKについても説明されていて、Khronos Groupが提供しているcl.hppを
利用してビルドすればOKとのことらしい。ただし、自分の環境ではwiki通りにやっても1カ所
うまくいかないところがあった。cmakeするともらってきたcl.hppが見つからないため正しく
インクルードされず、ビルドエラーがいくつか発生する。

なのでinclude/luxrays/luxrays.hの34行目
#include <OpenCL/cl.hpp>
#include <cl.hpp>に変更すると今度はエラーなし。

であとはいつものようにmakeしてビルドが完了するのを待つだけ。無事にビルドできたら

$ ./bin/slg

としてデモモードで起動してみる。ちゃんと起動すればいつものウインドウが表示される。



こんな感じ。LuxRenderはまさに今ビルドしているところなのでとりあえずここまで。

---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

MacPorts導入とblenderビルド

というわけでまずはMacPorts導入から。

MacPorts自体の入手先とかも含めていろいろ忘れてたのでまずはここを読んで復習。
MacWiki-MacPorts

MacPortsをインストールしたらblenderをビルドするために必要なものを確認。
Building Blender 2.5 for Mac

portで明示的にインストールしたのは下記のもの。
実際は依存関係解消に必要な他のパッケージも自動的に追加されてるけど面倒なので省略。

mercurial
cmake
boost
freeimage
qt4-mac @4.7.0 (aqua)
glew
doxygen

boostは+python26とかオプションをつけておかないとboost_pythonが無いって
いろんなところから怒られる。

あとよく考えたら+universalをつけておいたほうが良かったのかもしれない。
で、ビルド時に基本-m64なり-march=core2とかして、だめなら-m32で妥協する作戦の方が
良さげな予感も一瞬したけど気にしない。

ここまでできたらblenderがビルドできるか先にテスト。
まずはソースもらってくる。
$ svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/blender
$ svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/lib/darwin-9.x.universal

で、ここをみるとffmpegがシステムにインストールされている必要があるとのことなので
あらかじめインストールしておく。ついでにsconsもいれておく。

$ sudo port install ffmpeg
$ sudo port install scons

無事にblenderはビルドできたので次はSmallLuxGPUとLuxRender。

---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

新Air購入を検討していたと思ったらMBP13インチを買っていた

・・何を言ってるのかわから(ry

というわけで、新マシン投入に伴う作業環境の移行・再構築関連でいろいろメモ。
基本的にメインはノートで作業。本番の重いレンダリングはデスクトップという体制に。


Ubuntuなデスクトップを自作して以降、ほぼそちらがblender専用マシンとなっていたわけです。
が、アニメーションやLuxRender、SmallLuxGPUなどで長時間レンダリングをすることが増えて
レンダとそれ以外の作業用でマシンを分けたいなーと感じることが多くなったり。

また、これまでMacBookで動作を少しでも軽くするため表示モードの切り替えやレイヤー分けを
駆使しつつモデリングしていましたが、デスクトップのGLSLでテクスチャ表示したまま作業できる
環境を体験しまうと不便さは否めない感じ。さらに今のMacBookは初Macとしてここ4年以上に渡り
メイン環境としてよくがんばってくれましたが、さすがにあちこちガタが出始めている感もあり
・・・といった状況。

というわけで、今年に入ってからずーっと検討していたMacBookの買い替えを実行。
初めは新Airを考えていましたが、そこまで可搬性は必要ないのとユーザーによるストレージ、
メモリ増設の可否、有線LANの有無を考慮して最終的に後継はMacBook Pro 13インチに決定。

MBPは旧MBと同様チップセット内蔵GPUとはいえ性能の差は歴然。テクスチャ表示しながらでも
さくさくです。ついでにCPUも64bit対応になったのでビルド環境も含めてまっさらな状況から
構築しなおしてみました。

長いのでわけました。
MacPorts導入とblenderビルド
nVidia GPU環境でのslgとLuxRenderビルド

---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手