D-Creationへいらっしゃいませ。
ここではLightWave3D用プラグインやら変態絵やら変態妄言やら死ぬまでの暇つぶし的人生の進捗状況やらを垂れ流してます。

ファイルの扱い、リンクについて
プラグイン等のファイル自体の無断転載はご遠慮願います。
このサイトへのリンクは自由ですが、プラグインはバージョンアップなどでファイル名が変わるため、それらファイルへの直接リンクをする場合は注意してください。

管理人 : DHM
メール : dhm◎d-creation.sakura.ne.jp
(@を文字に直してください)
バナー

2010年10月31日

beta1 質問と回答と既知の問題

beta1についていくつか質問を頂きましたのでまとめて回答です。

1.新ToonTracerクソ重い。高速になる設定は?
この原因は以前のバージョンがLWのレンダリングに便乗してバッファを作成していたのに対し、新カメラ使用時はそれができずToonTracer側で再度レンダリングを行っています。
つまり2回レンダリングを行っているのと同等なのでどうしても遅くなってしまいます。
現在のToonTracerレンダリングは1スレッドで動いているため、マルチスレッド対応は行う予定ですが、それでも以前の速度よりは格段に落ちてしまうと思われます。

で、サポート打ち切ったクラシックカメラですが、再度サポートしてみます。
まだ仮組み段階ですが旧バージョンと同等の速度で動作してますので、平行カメラなど特殊なカメラを使いたいときだけ新カメラにするみたいな使い分けになりそうです。
ただ、対応はLWレンダリングのみでFPrime等外部レンダラーには対応できません。

2.サンプルデータでSurfacePiercingの眉毛のラインが出てない
バグっぽいです。調査中です。

3.FPrimeでレンダリングしたラインを保存したい
マニュアルに記載が抜けてました。
FPrimeに限らずToonTracerで作成したラインはVisorのように画像編集のリストに"unReal2_LineImage"というRGBA画像として残ります。
これをダブルクリックしてイメージビュワーで開いて保存してください。
ただ、LW側のバグなのかイメージビュワーで画像が真っ黒のときがあります。
その場合は画像編集パネルで"unReal2_LineImage"を選択、素材パラメータの"最大ミップマップ品質"をオフにするとかで値をいじると更新されて画像が表示されるようになりますので試してください。

4.問題のある機能、未実装の機能
・ToonTracerの"(All)"と出てるポップアップ
未実装です。オブジェクトを指定して該当するオブジェクトリンクされているレイヤーのみ表示するフィルタになる予定。

・法線の折り目
計算に問題があって指定した角度通りに線が出ない場合があります。

・ノードエッジ検出
未実装です。


とりあえずクラシックカメラ対応を優先して急ぎ更新したいと思いますのでもう少々お待ちください。
posted by DHM at 16:22| Comment(1) | TrackBack(0) | Plugin

2010年10月29日

unReal Xtreme2 1.50 beta1

unReal Xtreme2 1.50 beta1

ToonTracerも作り直してほぼ動くようになったのでベータ版になりました。
大きな変更点は今までクラシックカメラでしか動かなかったToonTracerがクラシックカメラでは動かなくなったと間逆の仕様になりましたので旧バージョンを使用してきた方は注意してください。
一応レンダリング時に警告メッセージとかもでます。
また、FPrimeによるラインレンダリングもできるようにしてみました。

101029_001.jpg

マニュアルもほぼできました。
document japanese
document english

また、ノードが増えたりで詳細な説明を文章だけで行うのは難しくなってきたため、サンプルデータを増やしていきたいと思います。
まずは基本的なところを2つ。
ぼちぼちと追加していきたいです。

sample japanese
sample english

が、FableIIIとFallout:NVで当分帰ってこれなさそうです。
posted by DHM at 17:27| Comment(0) | TrackBack(0) | Plugin

unReal Xtreme2 1.50 サンプル2 解説



シーンファイルダウンロード

使用している外部プラグイン
・unReal Xtreme2 1.50 beta

チェックポイント
・CelPainterのキー位置のコントロール

サンプル2はサンプル1をベースとして塗りとラインに不規則性を与えています。
サンプル1とはサーフェイスノード、ToonTracerの設定のみ変わっています。
ToonTracerはブラシサイズにプロシージャルテクスチャを貼ってコントロールしているだけなので説明は省略します。


・CelPainterのキー位置のコントロール
旧バージョンではCelPainterシェーダーを使用し、キー位置にテクスチャを貼ることで同様のコントロールができていましたが、今回はノードで同様の処理を行います。
以下が各サーフェイスのノード設定です。


右端の列の4つのノードはsample1同様のCelPainter、EdgeTracer設定です。
変化があるのは"unReal2::CelPainterNode2"の入力"Key 2 Position"と"Key 3 Position"で、この二つは色の明るい部分と暗い部分の境目となっているキーです。
このキー位置をテクスチャを使用してKey2は30%から70%、Key3は60%から90%の範囲で動かすことで不規則さを出しています。

まず、"Turbulence"ノードで黒から白のプロシージャルテクスチャを生成します。
それを"Color Scalar"ノードで1要素だけ取り出します。
これはsample1のハイライトでも使っていた方法です。
それを"Gradient"ノードの入力とし、"Alpha"を使用してキー位置に変換しています。
posted by DHM at 17:24| Comment(0) | TrackBack(0) | Tips

unReal Xtreme2 1.50 サンプル1 解説



シーンファイルダウンロード

使用している外部プラグイン
・unReal Xtreme2 1.50 beta

チェックポイント
・ノードを使用したunRealの基本設定
・確実にラインを表示させる部分のセットアップ
・SearchGroupIDを使用した髪の毛のハイライト表現


サンプル1はunReal Xtreme 1.50の基本的な設定を行っています。
CelPainter、EdgeTracerはシェーダーとノードの2種類のプラグインが用意されていますが、サンプルではノードをメインに使用していきます。


・ノードを使用したunRealの基本設定
以下がノードでCelPainter、EdgeTracerを使用する最低限の設定となります。


EdgeTracerの出力"SP Material"はSurfacePiercingの処理結果を出力するものですが、SurfacePiercingを使用しなければ入力"Base Material"がそのままスルーして出力されるので全てのサーフェイスにこの設定が使用できます。
CelPainter2ノードを使用する場合、出力が色なので標準ノードの"Make Material"を使用してマテリアルに変換してからEdgeTracerに接続してください。
サンプル1ではすべてCelPainter2ノードを使用しています。

これらの設定はプラグインのZIPファイル内、"NodePreset"フォルダ内にプリセットファイルが同梱されていますのでそれを読み込み、コピーして使用もできます。
ノードのコピーを行う場合はCtrl+左クリックで複数のノードをまとめて選択、コピーできます。


・確実にラインを表示させる部分のセットアップ
ToonTracerで安定したラインを描画させるには、服と肌の境目や、閉じた手の指と指の間といった確実にラインが発生する部分の設定を丁寧に行う必要があります。
肌と服の境目であれば、通常は異なるサーフェイスを割り当てるので、サーフェイス境界を使用すれば問題ありません。
しかし、人間の指は多くの場合、同一のオブジェクト、同一のサーフェイスで作成するため、そのままでは以下のように指の間には線が発生しません。


こういった場所に線を発生させるために、旧バージョンでは"法線の折り目"を使用していましたが、これは確実な方法ではなく、特にアニメーションをさせた場合にラインのちらつきの原因となっていました。
今回のサンプルでは、確実なラインを発生させるために"クラスタ境界"を使用しています。
クラスタ境界は、任意のポリゴンに名前をつけ、その名前が異なる部分に線を発生させます。
クラスタの作成にはモデラープラグインの"unReal::MakeCluster"を使用しますが、新バージョンでは新たにポリゴンのスケッチ色をクラスタとして使用できるようになりました。
実際にサンプルデータをモデラーで読み込み、ビューポートをスケッチ表示に切り替えるとクラスタを視覚的に確認することができます。
以下が指のクラスタ設定です。


指以外のグレーの部分はスケッチ色を"なし"に設定しています。
こうすることで指と指の境界線は描かれますが、指の付け根と手のひらの境目に余計なラインの発生を防ぐことができます。


同様にして髪の毛の房や、上唇と下唇、鎖骨の線もセットアップしています。



また、布の縫い目のような部分も、アニメ調のシンプルな表現であればクラスタ設定でモデリングを作りこまなくても表現できます。



・SearchGroupIDを使用した髪の毛のハイライト表現
髪の毛のハイライト、いわゆる"天使の輪"を表現するための方法として、専用のシェーダーやテクスチャの使用など様々な方法がありますが、今回はunRealの新ノード"SearchGroupID"を使用しました。
SearchGroupIDノードは、レイトレースを行って任意のグループIDを持つサーフェイスにヒットしたかを取得するものです。
事前の準備として、ハイライトの形状をモデルとして作成しておきます。


ウェイトマップはサーフェイス色に白から黒へのグラデーションをつけるための物です。
このサーフェイスにはEdgeTracerNodeで他のサーフェイスでは使用していないグループIDを割り当てます。
詳しいサーフェイス設定はサンプルモデルのサーフェイス"HairHilight"を参照してください。

このオブジェクトを髪の毛のすぐ外側を囲むように配置します。


また、見えてしまってはいけないのでオブジェクトプロパティでカメラから見えなくし、影もすべて無効にしておきます。


次に髪の毛側のサーフェイス設定です。


右端の列の4つのノードは他のサーフェイス同様のCelPainter、EdgeTracer設定です。
MakeMaterialノードの入力"Specular"に接続されている部分がハイライト用の設定です。
左から順に見ていきます。
まず、"Spot Info"はこの髪の毛ポリゴンのシェーディングを行っている現在の場所です。
"Item Info"は設定でカメラを指定しています。
この2つのノードからレイトレースの始点と方向を計算します。

"Subtract"ノードではカメラの座標からスポットの座標を引き算しています。
これでスポットからカメラに向かうベクトルが求められました。
"Normalize"ノードはベクトルの長さを1.0にするノードですが、とりあえずお約束として入れてください。
法線ベクトルなど、この長さ1.0のベクトル(単位ベクトル)は3Dの世界では頻繁に登場します。

レイトレースの開始位置はスポットの位置をそのまま使用します。

こうして完成した始点と方向を"unReal2::SearchGroupID"に入力します。
SearchGroupIDの設定パネルではサーチ対象のグループIDにサーフェイス"HairHilight"で設定したIDを指定しています。
また、"Base Color"には黒を指定します。
ここまでの設定を図にすると以下になります。


ポリゴンの法線ベクトルを使用せずにこのような計算を行ったのは、髪の毛がねじれている部分などに余計なハイライトが出ないようにレイの向きをある程度揃える必要があったためで、髪型によっては法線ベクトルをそのまま使用したり、ノーマルマップを使用したりと様々なアプローチがあります。

この計算とレイトレース処理が髪の毛の全てのポリゴン内で行われ、レイがハイライト用ポリゴンにヒットした場合はその色が、ヒットしなかった場合は"Base Color"に指定した黒が取得できます。
"Color Scaler"ノードではRGBと3つの要素をもつ色から1つの要素を取り出しています。
サーフェイス"HairHilight"は色がグレースケールになるように設定しているので適当にRの要素だけを取り出しています。
それを"Gradient"ノードの"Input"に入力、グラディエントの設定でハイライトの濃さや幅を調整して完成です。

ノードの接続で色が小数値に繋がったり、座標がベクトルに繋がったりしていますが、LWの内部ではそれぞれの単位が以下のように扱われています。
1.0 = 1m = 100%
また、色もUI設定ではRGBそれぞれ0から255で指定しますが内部では0.0から1.0となっています。
posted by DHM at 17:22| Comment(0) | TrackBack(0) | Tips