2010年03月31日

Vectexビルド更新 r27840

Graphicall.orgのBlender2.5 Vectexビルドを更新しました。

Linux 64bit

Linux 32bit


Windows 32bit


ソースファイルのパッチ(Blender2.5_Vectex_patch.zip)

今回の更新内容は、

   1. トランクの変更(27332 : 27840)を取り込みました。
   3. SVGファイルを連番ファイルのアニメーションとして使用した場合の不具合の修正。

となっています。

注)3月25日にr27736のビルドをアップロードしましたが、そちらにバグを混入していたことに気付いて、バグフィックス版としてr27840のビルドをアップロードし直しました。前回の更新でも同様のことをしてしまったばかりなのに、同じような失敗を繰り替えしてしまってすみません。


○SVG 連番ファイルについて

SVGフォーマットはアニメーションを表現するための仕様も含んでいて、本来ならばAVI、MPEGなどの動画ファイルのように一つのファイルに複数フレーム分のデータを保持することができます。
そのためSVGファイルを連番ファイルとして使用することは通常はほとんどないと思います。
ほとんどないとは思いますが、Blenderのイメージテクスチャの仕様上このような形でのSVGファイルの使い方もできてしまうので、実際に使ってみるとどうなるのか試してみました。
pic100330_01.jpg pic100330_02.jpg

連番のSVGファイルを出力するようなソフトウェアは恐らく存在しないのではないかと思いますが、Freestyleとsvgwriterモジュールを使うことでBlenderで作成可能です。

BlenderのFreestyleブランチについては、こちらの開発ブログかBlenderartist.orgのフォーラムのスレッドに詳しい情報があります。
Freestyleの機能を試すにはGraphicall.orgにアップロードされるカスタムビルドを使うのが簡単です。

svgwriteモジュールはFreestyleブランチ開発チームのT.K.さんが作成したものです。こちらのT.K.さんのサイトから入手可能です。

もともとのアニメーション用svgwriterはXMLファイルとして各フレームのデータを一時的に保存して、それを一つのファイルにまとめるような仕組みになっています。
このXMLへの書き出し部分のpythonコードを静止画のSVGファイルのヘッダ作成を行う部分と置き換えると、SVGファイルを連番ファイルとして出力できます。

こちらにSVG連番ファイル出力用に改造したsvgwriterモジュールを置いておきます。

本来なら一つのファイルにまとめられたSVGアニメーションをVectexで使用できるようにしたいところですが、現在のところQtSVGでフレーム位置をコントロールする機能が見当たらないため、当面の間はアニメーションに対応するのは難しいと思います。


Blender2.49をベースとしていたときのVectexでも、一応SVG連番ファイルを使用することができました。
しかし、SVGファイルを連番のアニメーションとして使用すると各フレーム毎に大量のタイルキャッシュ画像が作成されるため、簡単に数ギガバイト単位のメモリを消費してしまいます。
前回の更新で、Blender2.5の現在のバージョンのVectexでは、連番のアニメーションとしてタイルキャッシュを使用した場合は、各フレームのレンダリング終了後に作成されたタイルキャッシュを削除してメモリを開放するようにしています。
これにより比較的メモリ搭載量の少ないコンピュータ上でも、Vectexでタイルキャッシュを使ったSVGの連番アニメーションが可能になっています。

SVGファイルを連番ファイルとしてBlenderに読み込んでいる場合、UI操作でタイムライン上のフレーム位置を変更するのに合わせてプレビューの更新が行われます。
通常のビットマップ画像ではフレーム位置に対応した画像をディスクから読み込む処理が行われるだけですが、VectexではSVGドキュメントの読み込みとそのレンダリングという通常より面倒な処理が行われます。
前回の更新の時点ではSVGファイルを連番アニメーションとして読み込んでいる状態でVectexパネルの設定(Base Colorなど)を変更すると、マテリアルのプレビューが表示されている場合などにBlenderがクラッシュする可能性がありました。
今回の更新でこのようなクラッシュが起こりにくくなっていると思います。


○SVG 連番ファイルの使い方
念のためVectexでSVGファイルを連番アニメーションとして使用する手順を書いておきます。

SVG連番ファイルの作成はFreestyle BranchのBlenderで行います。
あらかじめ上記の改造版svgwiterモジュールを適当な名前でハードディスク上に保存しておきます。
適当にアニメーションが設定された状態であると想定して、SVGファイルの出力に必要な手順だけを説明します。
プロパティエディタの「Render」コンテキストで「Post Processing」パネルを開き、「Freestyle」チェックボックスをオンにします。
pic100330_03.jpg

「Layers」パネルを開き、一番下の「Add Style Modue」ボタンを押します。
pic100330_04.jpg

「Add Style Module」ボタンのすぐ下にデフォルトのスタイルモジュールが追加されるので、ファイル名の横のフォルダボタンを押して他のスタイルモジュールを選択するためのファイルブラウザを開きます。
ファイルブラウザが開いたら、上記の改造版svgwriterモジュールを選択します。
pic100330_05.jpg pic100330_06.jpg

「Output」パネルで出力先を指定します。
pic100330_07.jpg

「Render」パネルで「Animation」ボタンを押して、アニメーションのレンダリングを実行します。
pic100330_08.jpg

これで、JpegやPNGなどのビットマップ画像のレンダリングイメージの他に、SVGファイルが出力先のディレクトリに作成されます。
pic100330_09.jpg


VectexでSVG連番ファイルを使う手順です。
プロパティエディタのTextureコンテキストでテクスチャのタイプを「Image or Movie」にします。
pic100330_10.jpg

表示されるImageパネルで「Open」ボタンを押し、ファイルブラウザでSVG連番ファイルの一番最初の番号のファイルを開きます。
pic100330_11.jpg pic100330_12.jpg

上記のFreestyle + svgwriterモジュールを使ってSVGファイルを作成すると透明な背景に黒の線で描画されることになるので、テクスチャプレビューは真っ黒のままでわかりにくいかもしれません。
その場合、Vector ImageパネルのBase Colorを適当に変更します。
pic100330_13.jpg

Imageパネルの上から2段目に「File」「Sequence」「Movie」「Generated」という4つのトグルボタンがあり、SVGファイルを開いた時点では「File」が選択されています。(r27757以降は、トグルボタンからプルダウンメニューに変更されているようです。)
この中の「Sequence」を選択します。
pic100330_14.jpg

するとテクスチャプレビューが真っ黒になるかもしれません。
これは、トグルボタンのすぐ下を見ると理由が分かります。
連番ファイルの最初のファイルとしてframe0000.svgという名前が設定されていますが、実際に保存されている連番ファイルはframe0001.svgが最初のファイルになっているため、存在しないファイルを開こうとして失敗しているという状態です。
連番ファイルを使用する場合、全体でいくつのファイルを使用するのかを指定する必要があります。
「(0)Frames:0」となっている数値ボタンに連番アニメーションの最終番号を入力します。
pic100330_15.jpg

「Start:1」の値を変更すると、使用される連番ファイルの最初の番号を変更できます。
「Offset:0」の値を変更すると、Blenderのタイムラインと連番ファイルの対応の仕方をずらすことができます。
「Auto Refresh」をオンにすると、Timelineエディタなどでカレントフレームを移動するのに合わせて、対応する位置の連番ファイルが自動で読み込まれテクスチャプレビューが更新されます。
pic100330_16.jpg

「Cycric」をオンにすると、連番ファイルのアニメーションの長さを超えるフレーム数に対して、連番アニメーションを繰り返すように対応させることができます。

この他、コンポジットノードのイメージインプット(ヘッダメニューのAdd->Input->Image)でもほぼ同じような操作でSVG連番ファイルを使用できます。
pic100330_17.jpg

上記の手順を手っ取り早く試せるようにテストデータを用意しました。(改造版のsvgwriterも一緒に入れてあります)
test_data100330.zip

Freestyle用の.blendファイルでは、改造版のsvgwriterのファイルパスを指定しなおす必要があります。
posted by mato at 00:27| Comment(22) | Blender Vectex | このブログの読者になる | 更新情報をチェックする

2010年03月11日

Vectexビルド更新 r27332

Graphicall.orgのBlender2.5 Vectexビルドを更新しました。

Linux 64bit

Linux 32bit


Windows 32bit


ソースファイルのパッチ(Blender2.5_Vectex_patch.zip)

今回の更新内容は、
  1. トランクの変更(r27100 : 27332)を取り込みました。
  2. テクスチャノードでのイメージインプットでタイルキャッシュ機能を使用できるようにしました。
  3. SVGファイルを連番ファイルのアニメーションとして使用した場合の不具合の修正(途中)。
というような感じです。

あまり目立った変更はありませんが、とりあえず今回も変更内容についての補足を記事にしたいと思います。

(※このビルドをアッップロードする前に、Vectexパネルで画像サイズを変更したときにSVGレンダリングの再描画が行われないバグのあるビルドをアップロードしてしまいました。もし、スプラッシュスクリーンにr27332ではなく、r27322というリビジョン番号が表示される場合は、新しい方をダウンロードしなおしてください。お手数をおかけしてすみません。)


○テクスチャノードでのイメージインプットでのタイルキャッシュ機能
前回の更新でトランクの修正によって自動的にVectexの機能がテクスチャノードで使用できるようになりましたが、そちらはテクスチャインプットを使用する方法です。(テクスチャノードでヘッダメニューからAdd->Input->Textureを実行)

今回の更新で、イメージインプット(テクスチャノードでヘッダメニューからAdd->Input->Imageを実行)でもタイルキャッシュ機能を使えるようになりました。
pic100310_01.jpg

テクスチャインプットでSVGファイルを使用するためには、あらかじめSVGファイルを使用したテクスチャのデータを作成しておいて、それをノードパネルのメニューから選択する必要があります。

一方、イメージインプットでSVGファイルを使用する場合は、ノードパネルの「Open」ボタンを押すことで直接SVGファイルを開くことができるので、少し手間が省けます。
(すでにUV/Image Editorなどで開いた画像があれば、イメージ選択ボタン(Browse ID data)のメニューから選択できます。)
pic100310_02.jpg

今回の更新で、こちらのイメージインプットでもタイルキャッシュ機能が使えるようになりました...が、実際にはテクスチャインプットでイメージファイルを使用する場合と、イメージインプットでイメージファイルを使用する場合とではレンダリング結果がかなり違ってきます。

とりあえず、イメージインプットでタイルキャッシュを使うまでの手順です。
イメージインプットでSVGファイルを開くだけならノードパネルの「Open」ボタンを押すだけで済みますが、そのイメージの設定を変更するためにはテクスチャの場合のようにノードエディタの外でイメージを開いてプロパティエディタからアクセスできるようにする必要があります。

そのためには実際にオブジェクトに割り当てているテクスチャとは別のテクスチャを作成してテクスチャタイプをImage or Movieに設定、Imageパネルのイメージ選択ボタン(Browse ID data)で既にオープン済みの画像ファイルを選択するというような操作が必要になります。

この状態でVectexパネルでSVGイメージのタイルキャッシュを有効にするかどうか、背景色の変更などを操作できます。

設定を変更したらオブジェクトに本来割り当てるべきテクスチャノードのデータをテクスチャ選択ボタン(Browse ID data)で選択しなおします。

これで、F12ボタンでレンダリング結果を確認できます。

テクスチャインプットを使った場合でも、VectexパネルでSVGファイルの設定を変更するためには同じような操作が必要になります。

それでは、テクスチャインプットを使用した場合と、イメージインプットを使用した場合とでは、レンダリングの結果がどう違うのでしょうか。
テクスチャインプットを使用している場合、Image Samplingパネルでの設定がテクスチャノードに反映されますが、イメージインプットではこれらの設定内容は無視されます。
つまりイメージインプットを使用してVectexのタイルキャッシュを使用しても、ミップマップやテクスチャフィルタリングなどが使えないので画像が粗くなります。
pic100310_03.jpg

また、Mappingパネルの設定についても、Imageインプットを使用した場合は一部の設定が反映されないようです。
以上のことはVectexの機能とは関係なく、JpegやPNGを使っている場合でも同じです。

コードを書いている時点で予想はできたのですが、せっかく使えるようにしたもののテクスチャインプットを使わずに、イメージインプットを使う必要性というのはほとんど無いような気がします。
イメージインプットがなぜこのような仕様になっているのか理由はちょっと分からないのですが、テクスチャノードのシステムは比較的最近(Blender2.49)追加されたばかりなので、まだ細部まで作り込まれていないのかなという感じがします。

SVGファイルをシークエンスとして使用するための修正については、現時点でまだ完了していません。(SVGの連番ファイルを使用しているとき若干動作が不安定になるようです)
次回の更新までになんとか問題を修正できるようにしたいと思っています。
詳細については、次回の更新のときに説明したいと思います。
(前回の記事で10日に一回くらいは更新したいとか書いてましたが、多分2週間に1回とかになるような気がします。)
posted by mato at 01:01| Comment(0) | Blender Vectex | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。