2012年4月17日火曜日

LuxRender v1.0RC1がリリースされた模様。

いたLuxRenderですが久しぶりにv1.0として正式版のリリースが予定されているようです。

今回はそれに先駆けてv1.0RC版がリリースされた模様。
というわけで以下にリリースノートをざっくり訳してみました。


皆さん、ついにこの時がやってきました!LuxRenderの新しいRC版のリリースです。
LuxRenderがプロダクションレベルの制作に用いられるような品質に到達している、
いうことは頻繁に目にするようになった様々なアーティストによる使用事例から
明らかです。

今回のバージョンアップではその実績を強調するべく従来の0.xのナンバリングではなく
バージョンナンバーは1.0としました。まだ荒削りな部分はいくつか残っていますが、
今後数週間で可能な限り改善しベストなものにしたいと考えています。
よりよい正式版リリースのためにも皆さんからのフィードバックをお待ちしています。

今回配布のRC版にはSLG(Small Lux GPU)も含まれています。SLGは依然開発段階で
ありますがGPUによる驚くほど高速なレンダリングと十分な実用性を提供するものです。
今回のリリースは多くの皆さんの手によって可能となりました。そんなすべての皆様、
特にv0.8リリース以後に開発に参加してくれたメンバーに感謝の意を表したいと思います。


ダウンロードはこちらのページから可能です。
正式版リリースに向けてスプラッシュスクリーン募集のコンテストも予定されています。

以前のv0.8からの変更点は下記のとおりです。
(ご覧のように大量にあります。いくつか大幅に改善された機能もあります。今回の
"大幅な改善"は、まさに文字通りのものであり驚くべき量の作業の賜物です)

・さらに改善されたSPPM(Stochastic Progressive Photon Mapping)レンダリング
・より改善されたHybrid Pathレンダリング
・新しいHybrid Bidirectionalレンダリング
・ネットワークレンダリング時の各レンダノードへの自動再接続に関する改善
・レンダリングの速度とメモリ使用量の改善
・GUIの修正
・点光源およびスポットライトにも面光源と同様のpowerとefficacyの設定が可能に
・ノーマルマップに対応
・アニメーションレンダに関する改善
・論文に記載されているモデルにより忠実な実装になるようにcarpaintマテリアルを改善
・ボリュームオブジェクトの見た目を定義するためにcolordepthテクスチャを利用可能に
・新しく導入されたlayeredマテリアルにより、複数マテリアルを自由にレイヤーとして
 重ねることができるようになりました
・新しいglossycoatingマテリアルを適用するとどんなマテリアルにも光沢を与えることができます
・新しいfresnelパラメータではRGBカラーやミックス、グラディエーションなど様々な要素を設定できます
・metal2マテリアルは以前のmetalマテリアルよりもより柔軟な表現が可能になりました
・カラースペースに関しての修正
・linearトーンマッパーが改善され現実のライティングのしくみにより近い挙動になりました
・loop subdivisionが有効になっているオブジェクトの処理が改善されました
・Bidirectionalインテグレータの光源に関するオプションについて、direct samplingが新しくなりました
・イメージバッファの扱いがより早くなりました
・新たに導入されたSQBVHアクセラレータにより従来のQBVHに較べ、よりよい結果が
 得られます。 (SQBVHは開発中の機能になります)
・いくつかのDLL導入に伴いビルド方法が変更されました。実行ファイルサイズが小さくなりました
・その他たくさんのバグ修正と全面的な改善


・ソースコードの入手について
ソースコードが必要な方は下記のHGリポジトリからv10RC1のタグが付いたファイルをダウンロードしてください。

SLGを含むLuxRaysやエクスポータのソースはこちら
・Luxblend (古い2.4系向けのエクスポータ): http://src.luxrender.net/luxblend/file/c16130cea655
・LuxBlend25 (現行の2.6系向けエクスポータ): http://src.luxrender.net/luxblend25/file/8c20fa83f33f


以上ここまで。
ノーマルマップが使えるようになったのは非常に助かります。
マテリアルも従来からのもの、新規追加のもの、どちらも使い勝手がよくなっているようで
いろいろ試してみたいところです。他にもGPGPU関連や各インテグレータの改善などなど
満載という感じ。

v1.0正式版リリースのタイミングに向けてこちらに新機能の解説ページも準備されています。
今月末あたりにはblenderも2.63がリリースとなりそうな状況なので、こちらも楽しみです。


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

2011年9月11日日曜日

camera_distortion.pyなるものが。

ある日ツイッターで目に止まったこちらのブログのポスト、
記事のタイトルを見てみると


という非常に期待せざるを得ない感じだったのでさっそく訳してみました。
いつものように抄訳かつ適当に意訳だったりメモがわりの補足も含んでいるので
正確な内容を知りたい方はオリジナルの記事を参照してください。

で、以下から訳。



今回の記事は不均等な透視投影によりメッシュを変形させるエフェクトを実装した
BlenderのPythonスクリプトのコンセプトプルーフに関してです。

いわゆるセルアニメではキャラクターがシーンに存在するカメラや視聴者の視点に
近づいた際に、現実にはありえないような極端な変形を伴った絵として描かれることが
あります。例えば、キャラクターが腕を前につきだした時などです。そのときの腕の
大きさは画面に向かって手が伸びてくるような印象を与え、迫力を出すため、写実的な
表現として適切なサイズよりも大きく誇張して描かれることがあります。

今回のスクリプトの目的はこのような誇張のための変形をblenderで実現することです。
このスクリプトの基本的な考え方はカメラとオブジェクトの頂点間の距離に対して、
カメラの焦点距離を変化させてしまうという方法です。

焦点距離はblenderのカメラがもつパラメータの一つです。これは透視投影の際に画像の
アスペクト比を定義するのに用いられています。カメラとオブジェクトの距離を変えずに
焦点距離だけを大きくしたとすると、レンダ結果の画像に写るオブジェクトのサイズは
大きくなります。

今回のスクリプトはシーンに存在するメッシュオブジェクトに対して不均一な透視投影
処理を行うことでオブジェクトを変形させています。この不均一な透視投影のための
変換行列はカメラとメッシュオブジェクトの頂点間の距離から焦点距離を算出する関数と
して定義されています。カメラからオブジェクトの頂点までの距離はそれぞれの頂点ごとに
異なるため、算出される焦点距離も各頂点ごとに異なったものになります。

わかりやすく説明するため、焦点距離が50mmと80mmという二種類の値になったとします。
シーンの遠いエリアを焦点距離50mmのカメラで、その他の近いエリアを焦点距離80mmの
カメラでレンダリングして一枚の画像として出力すると、シーンは均一なパースにならず、
結果としてシーンに存在するオブジェクトは変形して描画されます。

実際にシーンをレンダリングする際には、先ほどの例のように焦点距離の値があまりに違い
すぎると焦点距離が切り替わる部分で出力される画像が滑らかにつながらず、ツギハギの
ような状態になってしまうことが予想されます。

そのためカメラと頂点間の距離から焦点距離を算出する際には下図のように滑らかで
連続した値が得られるように非線形補完を行っています。

[図1. カメラ-頂点間の距離と焦点距離の対応]

グラフの横軸はカメラと頂点間の距離、縦軸は焦点距離です。それぞれの最大値、最小値、
途中の区間で指定している値はデフォーマのパラメータとしてユーザーが定義できます。


以下の画像は不均等透視投影による変形の効果を示すサンプルです。
左端と右端の画像は同じオブジェクトを焦点距離50mmと80mmに設定したカメラで
それぞれレンダリングしたものです。
中央の画像は今回のスクリプトを適用して変形した状態のものです。モデル足元など
カメラから遠い部分は焦点距離50mmでのレンダリング、頭などのカメラに近い部分は
焦点距離80mmでのレンダリングに似た結果になっています。

[図2. 変形のサンプル(左から焦点距離50mm、変形を適用、焦点距離80mm)]

最後に上のサンプルで使用したスクリプトのリストを示します。

使用にあたっての制限事項としては

a. このスクリプトで変形を適用できるのはメッシュオブジェクトに対してのみ
b. シーンにあるメッシュオブジェクトそのものを変形します
 (オリジナルのバックアップのためのコピーなどは作りません)。
 また、オブジェクトを実際に変形させているためアニメーションのレンダリングには
 向きません。
c. ミラーモディファイアを使用している場合は事前に適用してモディファイアスタックから
 削除しておく必要があります。

また透視投影の仕組みを利用しているため、カメラはパースペクティブカメラでないと
適切な結果が得られません。



と、こんなところでしょうか。
まさに前回ふれたPencil+のパース変形モディファイヤ的なスクリプトのようです。
訳の最後にあるように制限がいくつかあるものの非常によさげです。
なんというか、ありがたいというか申し訳ないというか。
ありがたく頂戴しつつ作成中のモデルでテストしてみる感じで。

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

2011年8月22日月曜日

目玉つくった

今作ってるモデルの目玉は現状ボールにテクスチャ貼っただけ。
それだとちょっとつまらないのでトゥーン用モデル向けの目玉を作ってみたり。
bloggerのテストも兼ねて動画あげてみた。


これをベースにもうすこしいろいろ仕込んでいきたいところ。

あとは拍手お返事など。

>モデルも線画もシェーディングも良い感じですね。
>Twitterのほうを見ていて疑問に思ったのですが
>perspective geometry modifierとはどういったモディファイアでしょうか?
>透視変換行列を掛けるみたいな機能でしょうか。

ありがとうございますー。
Pencil+のパース変形モディファイヤ的なことができたらなー、とかなり適当に
つぶやいていました。詳細な仕組みや原理などはよく理解していません…。
すみません。

blenderでもラティスなどでモデルを変形させたり、コンポジットノードのレンズ歪み
等で似たような効果が出せないかと試してはいるもののなかなかうまくいかず、
freestyle統合版のシェーダー、もしくはモディファイヤとして実装されたら
それはとってもうれしいなって…という感じです。



というわけで、いろいろとうまいこととっかかりがつかめれば行けそうな気もする
けれどうまくいかず…そんな具合にしばらく試行錯誤してみる感じで。

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

2011年8月18日木曜日

仮想化ソリューションさん続き


体ができてしばらく放置気味だったけど、頭に着手。こんな感じ。



レンダリングはblenderのFreestyle統合版。
最近コードベースが2.59になってよさげ。

眉忘れてたので追加。大事なメガネも忘れちゃいけない。



眉毛とメガネって印象変わるなーと実感する結果にw
髪をそろそろ真面目に作り始めないと終わりが見えない予感。

次のイメージキャラクター的なものも出てきてしまったので
ペースを上げていきたいところ。

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

2011年7月31日日曜日

今のところこんな感じ

前回作り始めたの、とりあえずこんな状態に。
レンダはいつもと同じFreestyle統合版blender(ver. 2.58.1)



というわけで作り始めた某M$の仮想化ソリューションさん(仮称)ですが
作業時間は1日平均30分ほど。で、ここまで2週間くらい。

今までだとこれくらいまで出来上がるのは3週目以降な感じなのでかなり早い予感。
従来は頭部から作り始めていたのを、今回あえて体からつくるようにしたのが
よかったのかも。顔から作るとどうしてもいろいろテストレンダしては、
あまり意味なく悩んで手が止まったりしてしまうので。

あとblenderのToonとFreestyleのコツがなんとなくつかめてきたのか、
イメージする結果に寄せていく際に迷走することが少しは減った気も。

昔、Lightwaveとunrealのサンプルとして見たようなセルシェーディングは
blenderじゃ無理だろなーと思っていたけれど、標準でToonシェーダがついて
Freestyle統合版なんて素敵なものができたおかげで今やかなりいい感じに。

上の画像の時点ではまだ標準のToonとFreestyleのエッジだけでノードとかは
使ってないので詳細作りこみつつ、その辺も手を加えていく感じで。

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

2011年7月20日水曜日

なんかまたつくりはじめた

こんな感じ。



ツイッターのTLに流れてきたのを見て突発的に作り始めちゃったけど
今月中に終わらせたいところ。
多分Freestyle向けなのは相変わらずだけど、テストも兼ねてノードで
いろいろやってみたい感じで。

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

2011年5月18日水曜日

CUDA対応cyclesなblenderのビルドとちょっとしたベンチ

いろいろ迷いつつどうにかCUDAなCyclesをビルドできるようになったのでメモ。
ついでにCPUとGPUを比較するためのちょっとしたベンチも。


・使用したOSとハードウェア構成

OS:Ubuntu10.04LTS 64bit
CPU:PhenomII X6 1055T
チップセット:785G
GPU:Quadro600

GPUはCUDA対応のものを。ここ2・3年のnvidiaのGPUであれば多分大丈夫。
以下は手元のUbuntuなPCで行った手順を記載していますが、おそらくOSXや、
WindowsのCygwinやMinGWでも同様の流れでできるかと。試してませんが・・。



・CUDA環境の準備

まずはCUDA対応のGPUドライバとSDK、ツールキット等の開発環境の準備。
nvidiaのホームページからダウンロードしてインストール。
ドライバはv270系、SDK・ツールキットはv4.0を選択。

今回使用したのは下記のバージョン。
ドライバ:270.40
SDKとツールキット:ver4.0.13

以上のものがインストールできたら、自分のGPUが対応するCUDAのシェーダーモデルの
バージョンを調べておくとあとで少しばかり楽ができる。
CUDA SDKのサンプルに含まれているdeviceQueryやdeviceQueryDrvを実行して
確認してもOK。



・ビルドの手順

事前にインストールしておくライブラリやビルドの手順はblender.orgの公式Wikiを参考にしていけば
基本的にOK。ただし、Ubuntu10.04ではデフォルトでインストールされるboostのバージョンが
1.40と古いためエラーが出てビルドが通らず・・・それに気づくまでかなり嵌りました。

というわけでより新しいバージョンをソースからビルドしてもいいのですが、ppaでboost1.42が
提供されているのでそれを利用させていただく感じで。

$ sudo add-apt-repository ppa:lucid-bleed/ppa
$ sudo apt-get update


としてaptリポジトリに追加したら、aptitudeでいつものようにインストールすればOK。

あとはOpenImageIOとcyclesなblenderのソースをそれぞれダウンロードしてビルド。
この辺は先ほどの公式wikiに記載のとおり。

CUDA対応でビルドする場合のcmakeのオプションは手元の環境だとこんな感じ。

$ cmake ../blender
-DCMAKE_BUILD_TYPE=Release
-DCYCLES_OIIO=../oiio/dist/linux64
-DCMAKE_EXE_LINKER_FLAGS=-lGLEW
-DCMAKE_EXE_LINKER_FLAGS_RELEASE=-lGLEW
-DWITH_CYCLES_CUDA=ON
-DCUDA_INCLUDES=/usr/local/cuda/include
-DCUDA_LIBRARIES=/usr/local/cuda/lib64


CPUなどのスペックによってはcubinのビルドに時間がかかるので、始めに調べておいた
自分のGPUが対応しているシェーダーモデルのバージョンだけビルドしてもOK。

でcmakeが終わったら、あとはmake、make installすれば完成。



・実行

無事にビルドがエラー無く済んだら
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../oiio/dist/linux64/lib
という感じにライブラリのパスを設定して
$ ./bin/blender
で起動。

いつものblenderが起動したらレンダラを"Blender Render"から"Cycles"に変更して、
プロパティウィンドウの"Render"タブに以下のようなレンダリングデバイスを選択する項目が
表示されているか確認




上の図のようにCPUとGPUが選べるようになっていればCUDAに対応したCyclesが
正しくビルドされてblenderから利用できる状態になっている。

ちなみに何か問題があってうまく行ってないと下の図のような感じ。




ここまで無事に完了したら先程のライブラリパスの設定を
~/.bashrcに書いたり、起動用のシェルスクリプトを作成しておくとよさげ。



・CPUとGPUでベンチ

で、せっかくビルドが完成したのでGPUでのレンダがどれだけ早いかちょっとテスト。
下図のデフォルトのシーンをパス256、解像度1280x720に設定してCPUとGPUでレンダ



その結果、およそCPUで2分だったものがGPUで1分30秒という具合に。
解像度やシーンを替えてレンダしてみましたが、やはり平均で25%ほどGPUの方が早い感じです。

ところで、今回使用したGPUのQuadro600のGPUコアはGF108相当。
GeforceでいえばGT430相当のローエンドなスペックです。
それでもドライバの最適化等によりOpenGLアプリでディスプレイデバイスとしての
利用であればGeforceのハイエンドモデル以上(Nvidiaの発表によればGTX580以上)の
フレームレートが出るというのが面白いところ。

しかし、CUDAやOpenCLなどGPGPU用途での演算能力としてはコアが持っているシェーダー数と
動作クロックに準じたものとなり、コアが同等なGeforceローエンド相当の性能しかでません。
ひとつ上のQuadro2000でもコアはGF106相当なのでミドルレンジのGeforce GTS450程度です。

そんなGPUでもこれだけの差が付くのであれば、安価に購入できるミドルレンジのGeforceを
GPGPU用に追加するというのもよさそうです。GTS450の2倍のシェーダーを備えるGTX560Tiでも
20k円なのでCyclesだけでなくLuxRender等でのレンダも考えるとコストパフォーマンスの点で
かなり魅力的です。


Cycles自体もまだ開発の初期なので、これから効率が改善されていく可能性も十分にあります。
また現状インテグレータはパストレーサーのみですが、それ以外のアルゴリズムを実装する
予定もあるそうなのでそれによってもレンダリングの高速化が期待できるかと思います。

ただ、Cyclesのプロジェクトの予定としては今後1〜2年の間に既存のblender内蔵レンダラを
置き換えられるものにするのが目標とのことなので、しばらく気長に追いかけてくのがよさそうです。



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