2010年02月26日

Blener2.51 r27100に更新

Grapicall.orgのBlender Vectexビルドのファイルを更新しました。
pic100225_01.jpg

Blender2.51 r7100

Linux 64bit

Linux 32bit

Windows 32bit

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


Blender2.5の開発は非常に活発に行われているのでGraphicall.orgには毎日最新のバージョンが次々とアップロードされています。
私はこれまであまり頻繁に更新を行ってきませんでした。しかし、VectexビルドもBlender2.5をベースとするようになったので、なるべく最新の状態を維持するのが望ましいと思います。
もしVectex自体のコードに変更がない場合でも、週に1回...は無理かもしれませんが、10日に一回くらいの頻度で更新していきたいと思います。

今回のアップデートでの具体的な変更内容は、
○Blender2.5のトランクの変更を反映しました。(r26884 : 27100)
Vectexのコードの変更は、わずか1行のみです。

○QtSVGのバージョンを更新しました。(4.6.1から4.6.2)
これはWindowsの場合だけです。

これまでLinux版ではシステムにインストールされたQtを使用するようにしていましたが、今回からプラグインファイル(appdir/plugins/libqtsvg_vectex.so)のコンパイル時に静的リンクを行うように変更しました。
このためLinux版を使用する場合でもQtをインストールしなくても使用できるようになりました。


ということで、今回の記事は上記の更新内容について、もう少し詳しい説明を行いたいと思います。

○Blender2.5のトランクの変更
今回の更新までの間に、Blender2.5 Alpha1のリリースが行われました。このためVectexビルドでもスプラッシュスクリーンが新しいものに変更されています。
昨年の11月にリリースされたBlender2.5 Alpha0のときと比べると、たくさんのバグが修正されたことに加えて、かなりの機能追加が行われています。

今回のリビジョン27100と前回のリビジョン26884との違いのうち、Vectexビルドに直接影響している内容は以下のようになります。

これまでBlenderのソースツリーに含まれていたFFMpegのソースコードが外され、OSが管理するシステムのライブラリを使用するようになりました。
Blender.orgで配布されているBlender2.5 Alpha1のバイナリファイルについては特にシステムを変更しなくても使えるようですが、今回のVectexビルドではLinux版についてはシステム側でFFMpeg関連のライブラリをインストールする必要があります。
Ubuntuを使用している場合はとくに問題ないと思いますが、Fedoraなどではシステム標準のリポジトリにFFMpegが含まれないためサードパーティーのリポジトリから取得する、ソースコードから自分でインストールするなどの対応をする必要があるようです。

ちなみに前回の記事では全く触れませんでしたが、Blender2.5で必要なPython3.1も、同じようにFedoraではシステム標準のリポジトリからは取得できないようです。
Python3.1については、このVectexビルドでは静的リンクを行うことで、システム側でインストールしなくても済むようにしています。

FFMpeg、Python3.1ともWindows版についてはDllファイルが同梱されるので、ライブラリのリンクの仕方はあまり関係ありません。


そして、前回の時点では対応できなかったVectexのテクスチャノードでの使用が可能になりました。
pic100225_02.jpg

前回の更新時点では、Vectex用にテクスチャノードのソースコードをかなり書き換える必要があると思っていました。
そのときのテクスチャノードは、画像データから色情報を読み出すための処理でアンチエイリアス(OSA)が含まれないようにして、すべてのノードの処理が終了した時点で最後にアンチエイリアス処理を行うようになっていました。
しかし、Vectexでタイルキャッシュを作成する機能はアンチエイリアスをするためのdxt, dytという情報が必要なため、そのままではまったくテクスチャノードに対応できません。

Blender2.49のときはどうしていたかというと、テクスチャノードの処理にはまだアンチエイリアスが行われるようになっていませんでした。
そのためVectexのために必要なコードを追加して、その部分を変更してもとくに問題ありませんでした。

今回の更新には次のようなものが含まれていました。(Subversionのログを引用)
r26958 | blendix | 2010-02-17 00:45:19 +0900 (水, 17  2月 2010) | 14 lines

Texture Nodes:

* Remove the manual OSA method but rather pass on derivatives to the
  textures. This means that at the moment e.g. the bricks node is not
  antialiased, but that image textures are now using mipmaps. Doing
  oversampling on the whole nodetree is convenient but it is really
  the individual textures that can do filtering best and quickest.
* Image textures in a texture node tree were not color corrected and
  did not support 2d mapping, now it's passing along shadeinput to
  make this possible. Would like to avoid this but not sure how.
* Fix preview not filling in all pixels when scaling or rotating in
  the texture nodes.

この変更で、テクスチャノードエディタでヘッダメニューから、Add->Input->Texuteを実行し、ノードで使用するテクスチャとしてSVGイメージを使用しているテクスチャを指定すると、Vectexのタイルキャッシュ機能がテクスチャノードでも使用できるようになりました。
pic100225_03.jpg

Blender2.49のVectexビルドで行っているノードへの対応は、これとほとんど同じです。

ただし、ヘッダメニューから Add->Input->Imageを実行して、ノードエディタにイメージとしてSVGファイルを使用することはできません。
pic100225_04.jpg

Blender2.49のVectexでもこの機能については対応を見送っていました。
しかし、あらためてソースコードを見てみると、この処理を行っている関数内でVectexのタイルキャッシュ計算に必要な情報は十分に揃っていることに気が付きました。
Sequence Editorへの対応を始める前に、このImageインプットへの対応を行いたいと思っています。

今回私自身が行ったソースコードの修正はたったの1行ですが、これはSVGファイルを開く処理でカラーマネージメントへの対応が正しく行われなかったことを修正しています。
以前のバージョンでは、テクスチャノードにSVGファイルを使用した場合、PNGやJpegなどの画像を使用したときよりも色が明るく表示されていました。(以前のバージョンではタイルキャッシュの機能は使えませんでしたが、テクスチャノードで使用すること自体はできました)
pic100225_06.jpg

調べてみるとImBufを使用してPNG、Jpegなどの画像を開くためのソースコードすべてに対して、カラーマネージメントに対応するためのフラグを設定するための1行が追加されていました。
SVGファイルを開くソースコードに同じ処理を追加してあります。

blender/source/blender/imbuf/intern/svg.c
struct ImBuf *imb_loadsvg(unsigned char *mem ,int size, int flags, int width, int height)
{
...
    if (ibuf) {
        ibuf->ftype = SVG;
        ibuf->profile = IB_PROFILE_SRGB;
    } else {
        printf("Couldn't allocate memory for PNG image\n");
    }
...
}

○QtSVGのバージョンを更新
VectexビルドのSVG描画を行うバックエンドレンダラには、現在QtSVGを使用しています。
Qtのライブラリは年に数回程度安定版の更新を行っているようですが、たまたま前回の更新の後でバージョン4.6.1から4.6.2へと更新が行われました。
このためWindows版に同梱しているDllファイルを最新版に入れ替えてあります。

一方、Linux版ではWindows版とは違ってDllファイルを添付するというようなことはできず、システムにインストールされたシェアードライブラリのファイルを使っていました。
今回、このプラグインファイルの作成時にQtライブラリを静的リンクすることで、Linux版でも最新版のバージョン4.6.2を使用できるようにしました。
このためGnome環境のように標準ではQtライブラリがインストールされない環境の場合、システム側でQtをインストールする必要がなくなりました。

このようにしたことには別の理由もあります。
VectexビルドのBlenderでSVGファイルを開く際、ファイルブラウザの参照していフォルダ内にQtSVGが表示できないSVGファイルがあるとBlenderがクラッシュする可能性があります。
これは、サムネイル画像の作成にQtSVGが使用されるためです。
このようにQtSVGをクラッシュさせるようなSVGファイルをLinux上で見つけた場合、それを使ってWindows上でテストすると問題なく開ける場合があるようです。
詳しいことは分かりませんが、テキスト(フォント)を使用しているSVGファイルで、このようなことが起こる可能性が高いようです。
(テキストを使用していても問題なく開けるSVGファイルもあるので、はっきりとは断定できません)

このため、Qtライブラリについては今後も可能な限り新しいものに更新していきたいと思っています。
posted by mato at 00:34| Comment(0) | Blender Vectex | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

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