2015年04月23日

Appleseedレンダリングエンジンのテスト その8

変形モーションブラーのテストです。一応アニメーションまでやりましたので一通り試しましたかね。



実行結果

tda_roku_blur01000.png

MMDBridge[1]はバージョンアップしてフレーム抜けもなくなって素晴らしいですね。モーションは[2]を使用させていただいております。約30秒の動画に差替えました(2015.4.25)。


静止画だとちょっとブレ過ぎかなと思ったのですが、アニメーションにすると結構自然に見えますね。

[1] http://mmdbridge.render.jp/
[2] 【MikuMikuDance】 好き!雪!本気マジック 【MMDモーショントレース】

web拍手 by FC2
posted by シンドラー at 23:19 | Comment(0) | TrackBack(0) | Rendering | このブログの読者になる | 更新情報をチェックする

2015年04月18日

Appleseedレンダリングエンジンのテスト その7

続きです。どうも肌が白っぽくなっているので表面下散乱ができるといいのですが、現状Disney MaterialのSubsurfaceパラメータだけでは難しいようでしたので、EDFを使ってなんとかならないかのテストです。肌の内側から赤っぽい光が発生していれば、表面下散乱のような効果になるのではないかということです。

まずは表面を肌色、EDFをRGB(0.9, 0.2, 0.1)にした球で試してみました。

edf_test_001.png

後はGUIを変更してその辺も選べるようにしました。

実行結果

前回の結果
tda_roku_blend_001.png

今回の結果
tda_roku_edf_002.png

前のよりは肌色っぽくなりました。

web拍手 by FC2
posted by シンドラー at 22:38 | Comment(0) | TrackBack(0) | Rendering | このブログの読者になる | 更新情報をチェックする

2015年04月08日

Appleseedレンダリングエンジンのテスト その6

続きです。複数BRDFを設定してBlendできるようにしてみました。現状Oren-NayarとAshikhminモデルの2つを対象としています。他にもたくさんありますが、今のところこれぐらいでいいかなといった感じです。

また、360度パノラマ画像でレンダリングできるかなと試してみたところ一応できた気がします。



GUIの画面
anttweakbar_gui_002.png

Oren-NayarモデルのパラメータとBlendのWeight設定、後はSpherical Cameraでの.appleseed出力などに対応してみました。

BSDF BlendでOren-NayarとAshikhminモデルを混合したレンダリング結果
tda_roku_blend_001.png

パノラマ画像
wo_spherical.png

web拍手 by FC2
posted by シンドラー at 22:10 | Comment(0) | TrackBack(0) | Rendering | このブログの読者になる | 更新情報をチェックする

2015年04月07日

Appleseedレンダリングエンジンのテスト その5

続きです。Appleseedでは色々なBSDFモデルが提供されているのですが、これまで出力していたのはOren-Nayer BRDFで出力していたので、DiffuseだけでSpecularがありませんでした。ここここなど、以前Specularで異方性も反映されるものとしてAshikhminモデルのテストをしていて、AppleseedにもAshikhmin-Shirley BRDFがありましたので、GUIでこの辺のパラメータを設定して.appleseedで出力するようにしてみました。

ashikhmin_gui_001.png

一応シェーダは昔書いてたやつを使いまわしていますので、大まかな確認はできますがAppleseedでの結果とは異なるので参考程度です。

また、マテリアル毎にパラメータを設定する必要があるので目安として赤いアウトラインを表示するようにしてみたのですが、CPU側で画像処理でやっているので重いです。

実行結果

anttweakbar_wo_normal1.jpg
前回の結果

ashikhmin_gui_002.png
今回の結果

ashikhmin_gui_003.png
ステージも変換して設置した結果

ちょっとアルミっぽい感じになりすぎていますので、Ashikhminモデルのみではなく、複数BSDFのBlendなどしないと調整不足な感じがします。ステージは[1]のオバケの木ステージを使用させていただきました。ステージはAshikhminにしない方が良かった気がします。GUIの方で選択もできるようにしますかね。

[1] http://emipon.net/

web拍手 by FC2
posted by シンドラー at 04:32 | Comment(0) | TrackBack(0) | Rendering | このブログの読者になる | 更新情報をチェックする

2015年04月02日

Appleseedレンダリングエンジンのテスト その4

Appleseedにはノーマルマッピングの機能がついていますので、試してみることにしました。3Dモデルにはノーマルマップを付けてくださっている場合とない場合があります。ある場合にはハイポリモデルで計算してノーマルマップだけ出力している場合があるので、そちらを用いた方がより正確なデータとなります。ない場合は仕方がないのでカラーマップから生成する場合が多いと思います。

カラーマップからノーマルマップを生成する方法として、GIMP[1]のノーマルマッププラグインやWeb上でノーマルマップを作成できるもの[2]や、Knald[3]というソフトウェアがありました。Knaldはモデルの読込などもできて良さそうでしたが、Freelancer Licenseで100ドルとのことです。ちゃんとしたノーマルマップが欲しい場合はこちらがいいのではないでしょうか。

というわけで、今回はAntTweakBar[4]の使い方に関するメモです。

1. std::stringを使って文字列の読書きを行う場合
コールバック関数を設定する必要があります。やり方は[5]に書いています。これをやっていなくてReadOnly状態になってて困りました。

2. 動的にメニューの追加/削除を行う方法
TwAddVarRWで、読書き可能な変数を初期化後なら割といつでも追加できます。削除したい場合はTwRemoveVarでできます。同じ名前のGUI変数は定義できないので、例えばデータの格納先だけを変えたい場合などは、TwRemoveVarで取り除いてからもう一度TwAddVarRWとやればできます。このやり方が正しいのかどうかはわかりませんが。

3. 数値が変わった場合などに何か処理を行う方法
数値を変更した際に特定の処理を行いたい場合には、コールバック関数を指定するためにTwAddVarCBを使います。変更されたときに呼び出される関数と、値を取得するときに呼び出される関数の2つを指定するとReadWrite状態にできます。引数の一つ目が設定/取得する変数の値で、二つ目がユーザが設定できるクライアントデータとなります[6]。

モデルを読み込んで各テクスチャ毎にノーマルマップを作成して出力するようにGUIを変更してみました。

手順
1. カラー画像をグレースケールに変換。α値があればそれを掛ける。
2. グレースケール画像をコントラスト伸長して0〜1の範囲に広げてこれを高さマップとする。
3. 差分フィルタを用いて高さの勾配を計算して法線ベクトルを計算する。
4. 画像として出力

至って普通のやり方ですね。

フィルタのサイズや法線ベクトルの勾配に掛けるスケール値、高さマップを反転するかどうかなどのパラメータをGUIで調整できるようにしました。

anttweakbar_001.png

高さマップの表示/非表示、バンプマッピングの有効/無効などもGUI上で設定できるようにしています。

anttweakbar_002.png

後ノーマルマップの設定をした.appleseedを出力するようにしました。

実行結果

tda_roku.jpg
以前の結果
Tda_roku_normal.jpg
今回の結果

その他モンテコア様のヲ級[7]で試してみました。こちらのモデルはノーマルマップ付属でしたが、自前の方でテストしています。マントの凹凸などはやはり色情報からでは辛いので元のノーマルマップの方が良いと思います。

anttweakbar_wo_no_normal.jpg
ノーマルマップなし
anttweakbar_wo_normal1.jpg
付属ノーマルマップ
anttweakbar_wo_normal2.jpg
今回の結果

テストということで勾配のスケール値を結構大きくしたのでところどころ黒くなってしまっています。そろそろステージとか床を配置したりしないと浮いてて駄目ですね。

[1] GIMP normalmap plugin
[2] NormalMap-Online
[3] Knald
[4] AntTweakBar
[5] TwCopyStdStringToClientFunc (function)
[6] TwAddVarCB (function)
[7] 深海棲艦 空母ヲ級
web拍手 by FC2
posted by シンドラー at 21:51 | Comment(0) | TrackBack(0) | Rendering | このブログの読者になる | 更新情報をチェックする