« 2006年10月 | メイン | 2006年12月 »

2006年11月29日

ルービックキューブ [ CG・いろいろ ]

 ほしさんの掲示板で話題になってたのを見て興味があったのでやってみた。CINEMA 4Dだと普通に作れる。

1)個々のキューブオブジェクトの座標系の原点(回転の中心になる)をルービックキューブ全体の中心に置く
2)回転ツールの回転角度を15度毎に制限

 こんだけ。

 統合3Dアプリならできないほうがおかしいような気もする。あなたの主戦ツールではどうですか?

投稿者 ヒロツ : 01:52 | コメント (2) | トラックバック (0)

2006年11月27日

Hairまめちしき [ CINEMA 4D R10 ]

 Hairをいじってて気付いたことなど(主に自分用メモ)。

061126_hair_1.jpg

◆Hairレンダラの毛は「2D絵」

 Hairレンダラがレンダリングしている毛、照明効果等が加えられているものの、毛そのものは2D的に描画されたもののようだ。上の画像のように毛を太くすると、毛の根元−毛先方向はシェーディングされているが、断面方向はフラットなのがわかる。
 もっとも、通常は毛はごくごく細く描画されるので、断面方向の立体感はあまり必要ない。2D絵としてそれらしく描いてしまうことで得られるシェーディングの自由度やレンダリング速度の向上のほうがはるかにメリットが大きい。

 毛の描画のクオリティは、カメラから直接見えている部分とレイトレース越しに見える部分とでは異なる。レイトレースされている毛のクオリティが低いのでポリゴン生成してるのかと思ったが、描画そのものはHairレンダラの2D絵のようだ。専用のフレームバッファに描画してレイトレースに割り込ませているんだろうか?

 レイトレース越しの毛(下の画像の右半分)は、アンチエイリアス設定を「ジオメトリ」にしているとアンチエイリアスがかからない。

061126_hair_10.jpg

 つまりレイトレース越しの毛のアンチエイリアス品質は「ベスト」でのサンプル精度に依存するということになる。微細な毛がレイトレースされると、常識的なアンチエイリアス設定ではHairレンダラのようなモフモフ感は得られないようだ。

 アンチエイリアスがベスト/静止画/10%/最小1x1最大4x4の場合。明らかにジャギーが出ている。

061126_hair_11.jpg

 ベスト/Catmull/1%/最小16x16最大16x16という常軌を逸した高精度の場合(閾値の1%は無意味か)。ジャギーは減ったがクオリティにはまだ差がある。なんとなく毛が細いような感じも。

061126_hair_12.jpg

 古典的だが、レイトレースされた毛のクオリティ向上には、大きめにレンダリングした画像を縮小するほうが効果的かもしれない。


◆ダイナミクスの限界

 ダイナミクスでは、デフォルトでは毛同士の衝突判定をしないが、それだと折り重なって流れている毛が不自然に交差する。

 QuickTime Movie

 一応、ダイナミクスで毛同士の衝突判定を行うこともできるが、計算がものすごく重くなるので現実的ではない。つまりダイナミクスでは長毛の表現は難しいので、人間の髪の毛のようなものはダイナミクスによらず手作業でガイドを配置したほうがよさそうだ。


◆ポリゴン毛の配置

 ポリゴン毛には生成タイプがいくつかあるが、生成されるポリゴン数が少ないものは断面が平面や三角のタイプだ。それがどういう向きで配置されるかが「生成/調整/整列」の設定だが、これがデフォルトは「フリー」になっている。「フリー」の場合は生成される毛のカーブに合わせて向きが決まるらしい。

061126_hair_6.gif

 これはポリゴン毛を「三角・フリー」で生成したもの。断面は三角のはずだが一見するときれいに丸くなっているように見える。

061126_hair_4.jpg

 これをアニメーションさせると問題発生。フレーム単位で断面の向きが変化してしまうので、チラツキが生じる。

 QuickTime Movie

 この場合、整列を「オブジェクト」にし、整列の基準となるオブジェクトにはHairのベースのポリゴンオブジェクトを指定する。

061126_hair_7.gif

 静止画で見ると何の変化もないが、毛の断面がベースに固定されるのでアニメーションでのチラツキが解消される。

061126_hair_5.jpg

 QuickTime Movie

 それにしてもキモいなこれ。


◆板ポリゴンの毛

 タイプを「平らに」にすると、厚みのない板ポリゴンとして生成される。板ポリゴンの場合、カメラとの角度によっては見た目がペラペラになってしまう。これは静止画でも問題だ。

061126_hair_2.jpg

 板ポリゴンの場合、カメラから見てペラペラにならないことが大事なので、整列を「カメラを見る」にする。

061126_hair_8.gif

 これで常に板ポリゴンの平面がカメラを向くようになるので、ペラペラにならない。一見するとHairレンダラの2D描画に近い。Fast&Furもこれと同じことをやってるらしい。

061126_hair_3.jpg

 アニメーションさせても大丈夫。これはSketch and Toonを使うと面白そうだ。

 QuickTime Movie

 ただし反射像が見えるような場合は問題になる。横から見れば常にペラペラだからだ。

061126_hair_9.jpg

 また、GIを使うと間接照明を受け取る方向が正面のみに偏ってしまうし、fRでは通常は裏面がレンダリングされない。板ポリゴンの毛の使い方はそのへん要注意だ。


◆ポリゴン化で失われるコントロール

 外部レンダラの併用などが目的でポリゴン化した場合、Hairマテリアルの表現力や、いくつかの重要なコントロールが失われる。

 下の画像では、テクスチャによる毛の長さのコントロールと、ベースポリゴンのサーフェスカラーを毛の色に反映する設定をしている。

061126_hair_13.jpg

 ポリゴン毛ではそれらが失われる。毛の長さは変わらないし、マテリアルは通常のマテリアルを設定してやらないといけない。

061126_hair_14.jpg

 通常のマテリアルでは毛を円筒に見立てたUVテクスチャの設定は可能だが、有効に使えるのは根元−毛先方向の一次元的な変化だけになる。

061126_hair_15.jpg

 ポリゴン化した毛にHairマテリアルのような質感を与える「ポリゴンヘア」というシェーダもある(発光チャンネルに入れる)。Hairマテリアルの基本的な要素は持っており、Hairマテリアルの設定をそのまま受け継ぐスイッチもある。

061126_hair_17.gif

 質感はなかなか良いが、毛の長さや模様がテクスチャでコントロールできないことには変わりはない(質感を見やすくするために毛を全体に長くしております)。

061126_hair_16.jpg

 そして、困ったことには特殊効果シェーダの常として外部レンダラでは無効なので(fRでは真っ黒になる)、毛をポリゴン化する場合の主たる目的である外部レンダラとの併用においては、ポリゴンヘアシェーダは全く意味が無い。

 スペキュラなどの質感表現は、外部レンダラなら特殊なシェーダを作る等すればなんとかならないでもない(ポリゴンヘアシェーダ自体、それほど難しいことをやっているわけではないようだ)。しかし、毛の長さや模様のコントロールが困難になってしまうのは非常に痛い(一応、不可能ではなく、ガイドを手作業でカットして長さを調整する、複数のヘアオブジェクトを混在させて色分けする等、非効率な手段であれば選択肢は残されている)。動物等、連続的に毛が生えているものの制作では、かなり厳しい制約を受けることになる。


◆ファーオブジェクト

 前はなかったような気がするのだが、いつのまにか「ファー」というオブジェクトがメニューに入っている。ヘアオブジェクトの機能を大幅に減らして短毛表現に特化したもののようだ。

061126_hair_18.gif

 毛の長さのコントロールはヘアオブジェクト同様ちゃんと機能してるが、ベースポリゴンのサーフェスカラーを毛に反映する機能のほうが妙な具合になっている。はて?

061126_hair_19.jpg

投稿者 ヒロツ : 23:32 | コメント (0) | トラックバック (0)

2006年11月25日

Hairをポリゴン化してfRでレンダリング [ CINEMA 4D R10 ]

 Hairもポリゴンを生成させればfR等の外部レンダラに渡せるということが判明した(というかコロっと忘れてた)のでやってみた。できることはできたのだが、やや心許ない結果になった。

061124_hair_poly_11.jpg

◆Advanced Render

 まずはAdvanced Renderで試してみる。ヘアは5万本、「三角ポリゴン」タイプでポリゴン生成。予想どおりプレパスがサンプルポイントびっしり。しかしCINEMA 4Dの使用メモリは600MB程度で意外に食っていない。

061124_hair_poly_1.jpg

 レンダリング時間はかなり長くなった。G5 Quadで1時間超。Hairはポリゴンで生成されてるので、レンダリングは普通のGIとレイトレーシングだ。つまり常時4コアをフルに使ってこの所要時間。

061124_hair_poly_2.jpg

 絵的には、Hair固有のシェーダ効果がないので針金にペンキを塗ったようなソリッドな質感になっている。マテリアルに透明度を入れたりすればまた変わってくるんだろうが、レンダリング時間のことを考えるとやりたくないし、Advanced Renderでそれをやる意味はない。

◆finarRenderその1

 次は本命のfRで。事情によりまだSP1を使用中。
 ARと同じ条件、「三角ポリゴン」で5万本にしたところ、メモリ不足でレンダリングできなかった。タスクマネージャを見るとシステム全体のメモリにはまだ余裕があったのだが、コンソールではfRが駄目だと言っている。360万ポリゴンでギブアップか……。

061124_hair_poly_5.gif

 タイプを「平らに」にするとポリゴン数が減るのでレンダリングできるのだが、Fast&Furと違って板ポリゴンがカメラに向くとは限らないようで、横を向いてる毛はペラペラ、そしてfRでは通常は裏はレンダリングされないので、ボリュームがごっそり減って全然だめだった(※追記:後でよく見たらカメラに向かせるオプションもありました)。で、「三角」のまま、本数を4万本に減らしたらレンダリングできた。このときのポリゴン数は290万ポリゴンで、CINEMA 4Dの使用メモリは800MBぐらい。プレパスはAR同様サンプルびっしりだ。fRのプレパスは屈折や反射の先のサンプルも表示するので、見かけ上ARより多く見えるが、実質的には同じぐらいではないだろうか。

061124_hair_poly_3.jpg

 レンダリング時間はAthlon64 X2 4200(2.2GHz*2コア)で、なんと6分。ゼロ時間と6分だ。290万ポリゴンのシーンをフルGIで6分。またしてもドイツの科学力は世界一ィィィと言わざるを得ない(※fR作ってるCebasもドイツです)。

061124_hair_poly_4.jpg

 CINEBENCHのレンダリングスコアでいうと、G5機は1200、Athlon機は600で、2倍の差がある。これを考慮すると、このシーンのレンダリングではfRがARの24倍も速いことになる。それでいて出力されてる画像はARとほとんど同じというか、fRのほうがきれいだ(床とか)。
 ポリゴン化しているにもかかわらず、fRの超高速GIに救われてネイティブのHairレンダラ+ARのときと同等のスピードになった。とりあえず速度面ではOKのようだ。

◆finalRenderその2

 メモリ問題、「そういや床オブジェクト(無限平面)は良くなかった」と思い出し、平面オブジェクトに差し替えると、Hairが三角ポリゴンで5万本でもレンダリングできた。無限平面を使うとMSPツリーのスケールに影響してポリゴン数の割にメモリを食ったりするのかもしれない。あるいは単なる偶然かもしれない←オイ
 このときでCINEMA 4Dの使用メモリは1GBに達している。

 スピードはOK、メモリはギリギリ、あとは質感が大問題なので、以下のようにチューニングした。

・マテリアルで透明度とカラーを設定。毛先が明るく、根元が暗くなるようにグラデーションで(ポリゴン毛はUVのVが根元→毛先の方向になるようだ)。

・fR Objectタグで「Visible to GI」をオフ。これで毛がGIレイを遮らなくなる。光が毛の中に入り込むようになり、マテリアルの透明度がGIに与える影響が小さくなる。しかしGI影も無くなるので一長一短。

061124_hair_poly_8.gif

 で、結果がこれ。

061124_hair_poly_6.jpg

 レンダリング時間は20分でまだ許容範囲だが、ネイティブのHairレンダラ+ARと比べるとだいぶ遅くなってしまった。質感はまあそれなりに毛に見えなくはない。

◆finalRenderその3

 もうひと押し。その2ではGI影が消えたせいで毛に立体感が無くなってしまった。Hairマテリアルであれば半透明や影の設定をいろいろ調整できるのだが、実ポリゴンだと簡単にはいかない。
 で、少しだけGI影を出すためにダミーの毛ポリゴンを置くことにする。まずHairオブジェクトを複製して、少なめ(3000本)・短め・太めに変更。これがそのダミー。

061124_hair_poly_10.gif

 fR Objectタグは「Visible to GI」以外をオフにして、ダミーはGIレイを遮るだけのオブジェクトにする。

061124_hair_poly_9.gif

 ダミーのぶん毛の数が増えたらまたレンダリングできなくなったので、見えてるほうの毛をまた4万本に減らした。

 こんな感じでレンダリングすると、ダミーが控えめにGI影を作るので、毛にそこそこ立体感が出る。

061124_hair_poly_7.jpg

 この絵だけ見るとそれなりなのだが、ネイティブのHairレンダラによる画像と比べるとエッジがシャープすぎてモフモフ感が足りない。まだマテリアルで工夫する余地があるかもしれないが、最初から半透明にぼかして描画してるHairにはどうやっても敵わないような予感がする。
 実はHairレンダラでも、屈折や反射を通じて見える部分はモフモフ感がなく、ポリゴン化した毛と同じようなシャープな質感になっている。2次レイ以降は単純な2D絵でなく、レイトレースのサンプルに依存するようになってるのだろうか。

 使うCPUを1個に制限すれば使用メモリが減ってレンダリングできるようになるかと思ったんだが、これの場合はレイトレーシングの前のMSPツリー構築の段階で止まってるので効果がなかった。fRのRaytracing Accelerator/SceneMSP/Max Depthを小さくすると使用メモリが少し減るが、その代わりスピードがガツンと落ちる。そもそもそんなディープな設定をいじらなければいけないようではだめな気もする。なんにせよメモリ問題は小細工で解決できるようなものではなさそうだ。64bit OSに移行してメモリを16GB積むとか、抜本的な改革が必要だ。

◆まとめ

 Hairはポリゴン化すればfRと併用できるが、ポリゴン化してしまったら、メモリ効率・スピード・表現力といったHairレンダラの驚異的なパフォーマンスは全て失われてしまう。きれいな毛皮や頭髪をふんだんに表現できるわけではないので、Hair+ARと同じ次元では評価できない。ヘア/ファーというよりは、「ダイナミクスつきの細長いオブジェクトのジェネレータとして利用可」、というのが妥当な評価だと思う。
 このへんの事情は、Fast&Furのポリゴン毛、あるいは別な外部レンダラとの併用の場合でも基本的に変わらないはず。ヘア/ファー機能はレンダラと統合されてこそ本領を発揮するということで、「毛メイン」の絵は素直にHairレンダラが使えるARでやったほうが賢いといえそうだ。

投稿者 ヒロツ : 22:33 | コメント (6) | トラックバック (0)

2006年11月23日

文芸部室の謎 [ CG・制作進行中 ]

「ハルヒ」の文芸部室。絵的なきれいさという点では非常に安定しているのだが、「構造」のほうはよく見ると結構あやしい。カットによってかなりばらつきがあって、幅と奥行きは最小と最大で2倍ぐらい違うし、細部を見るとツッコミどころが多い。特に気になるのは、カドのハシラの出だ。部室の外から見ると廊下側と外壁側ともにハシラは間口の両側にあるので、室内側でも四隅にあるはずなのだが、絵を見るとカドごとに出てたり出てなかったり、いつも出てないところがたまに出てたりする。

061123_bungeibu.gif

 せめて対称位置で出てる/出てないの組み合わせになってれば「壁がオフセットしてる」という解釈もできるんだが、組み合わせが対角になってる。ハシラが描かれないことが多いカドは背の高いロッカーなんかの陰になってるので、ハシラの有無があいまいなまま作画されてしまったのだろうか。
 あるいは、設定上これで合ってるのだとすると、こういう推理もできる。実は文芸部室の内部は常に長門有希の情報制御下にあるので、内部構造は校舎の構造に制約されないのだ。部屋の大きさが変わるのもそれで説明がつく。パソコンのLANケーブルがドアから入ってるはずなのに配線は壁までで終わってるのもそのせいだ。
 ということで、構造的に色々と腑に落ちないことがありつつも、見た目合わせで制作中。しかしモノが多いのでなかなか進まず。

投稿者 ヒロツ : 20:15 | コメント (4) | トラックバック (0)

HairとGI [ CINEMA 4D R10 ]

 従来の常識では、ヘアシェーダの類はポストイフェクトだから反射や屈折等のレイトレースには反映されない、レイトレースするには実ポリゴンに変換が必要=莫大にメモリ食う、ということになってたような記憶がある。ところがCINEMA 4DのHairはレイトレースオプションをオンにするだけでOK、しかもGIも使える。

061123_hair_gi_2.jpg

 光源は右に置いた発光体と空オブジェクトだけの純粋GI照明。HairはGIで照明されており、手前のレンズ越しの屈折、床面の映り込み、奥のミラーボールの映り込み、どれも正確にレンダリングされている(ちなみにライトを置けばレイトレースシャドウも出せる)。これでレンダリング時間は3分(G5 Quadで)、使用メモリは200MB足らず(CINEMA 4Dは起動しただけで80MBぐらいは使う)。いったいどうやったらこんなことができるのか、ドイツの科学力は世界一ィィィと言わざるを得ない。

 GIのプレパスはこんな具合になっている。さすがに毛の一本一本にサンプルを打ったりはせず、ボリュームに対していい案配にサンプルを置いている。だからGIのプレパスはすごく速い。

061123_hair_gi_1.jpg

 唯一残念なのは、HairがfinalRenderと併用できないところだ。(※追記:ポリゴンを生成させるオプション使えば併用できました。コメント参照)
 kurosawaさん情報によるとサードパーティ製のFast&Furのほうは実ポリゴンを生成するそうなので、外部レンダラとの併用もできるんだろうか? 開発者のRenato Tarabella氏はVray for C4Dのブリッジプラグインの開発もやってるので、そのへんは考慮されてるかもしれない。

投稿者 ヒロツ : 19:09 | コメント (6) | トラックバック (0)

Hairのレンダリングスピード [ CINEMA 4D R10 ]

 ひさびさにHairを触ってみたらレンダリングの速さに改めてびっくりしたので、キャプチャムービーでご紹介します。毛の本数は約4万本です。

 CPUはAthlon64 X2 4200(2.2GHz)ですが、安定してビデオキャプチャするためにシングルスレッドでレンダリングさせてます。つっても大概はHairのレンダリングではシングルスレッド計算の時間帯(絵が出てこない「ヘアをレンダリング中...」までの時間帯)が大部分を占めるので、実はAthlonの2スレッドでもG5 Quadの4スレッドでも大差ないです。

 Hairのレンダリングのほか、Sketch and Toonの線の生成段階とか、コースティクスフォトンの計算とか、特殊効果の計算の絵が出てこない時間帯はみんなシングルスレッドのようです(特殊効果の制約なのか、原理的にマルチスレッド化できない計算なのかは不明)。通常のレンダリングでもマルチコア化が進むほどオーバーヘッドが大きくなるので、アニメーション用のレンダリングサーバは4コアや8コアの高いやつを少数使うより、2コアの安いやつをたくさん使ってタスクをいっぱい走らせたほうがコストパフォーマンスは良い、ということになりますね。以上余談。

 あと、どうでもいい感じのアニメーションとQTVR。レンダリングが速いので、こういうどうでもいいものも気楽に作れます。
 QuickTime Movie 300KB
 QuickTime Movie 440KB
 QuiciTime VR Object Movie 5MB

投稿者 ヒロツ : 03:23 | コメント (2) | トラックバック (0)

2006年11月20日

edge shader problem [ finalRender Stage-2 ]

 ちょっと前にCebasのfR for C4Dフォーラムに出てた件。
 Cebas forum | edge shader problem(閲覧には要ユーザ登録)
 期待の新機能のedge shader、まちがって違うのをインストーラに入れてしまったそうです。アップデートはいつ出るんだろう。michaelは「soon」って言ってるけど、マネージャのedwinの公式見解はまだ出ていません。

 確かにうちでもトラブっております。面取りシェーディングが適用されないエッジ付近でシェーディングが乱れます。にょろーん

061120_edgeshader.gif

投稿者 ヒロツ : 19:40 | コメント (0) | トラックバック (0)

2006年11月18日

Chamfer Maker [ CINEMA 4D Plugins ]

061118_chamfermaker_0.gif

 CGTalkで面取りプラグインが紹介されてました。
 CGTalk | ChamferMaker. Hi there))
 ダウンロードにはCGTalkのユーザ登録が必要。
 こちらはロシア語のCINEMA 4Dフォーラムのオリジナル記事。ロシア語だけどスクリーンキャプチャあり。
 Cinema4D.ru | Chamfer Maker

 「面取り(ベベル)なんてジェネレータオブジェクトにすりゃいいじゃん」と常々思っていたのですが、これがまさにそうです。ジェネレータオブジェクトということは、つまりオリジナルのメッシュは保持されるので、面取り作業を非破壊で行うことができます。手作業の面取りに比べると融通が利かないけど、とりあえず一様に面取りできればいいやっていうことも多いので便利なのではないかと。

061118_chamfermaker_6.gif

 こんなメッシュのエッジを選択してー

061118_chamfermaker_1.gif

 Chamfer Makerを適用するとこんなふうに面取りされる。面取りにはいろいろオプションがあるけどよくわからんです。とりあえずいちばん単純にかけてみた。

061118_chamfermaker_2.gif

 で、HyperNURBSを適用するとこんな感じに。穴の四隅がひきつってるのは、そこにいらん三角ポリゴンができちゃってるから。手作業だったらベベルかけた後に削除するとこですが。

061118_chamfermaker_3.gif

 おっと! いらんポリゴン作りたくないとこのエッジをメルトしてN-Gonにしておくときれいにベベルかかる場合もあり。

061118_chamfermaker_7.gif

 あと、これは手動ベベルでも同じことになるんだけど、UVは一部壊れちゃう。ベベルで新規に生成されたポリゴン(周囲に生じるN-Gonも含む)はUVが未定義なので、UVが0から1までの範囲に各ポリゴンが引き延ばされた状態になるようだ。

061118_chamfermaker_4.gif

061118_chamfermaker_5.gif

投稿者 ヒロツ : 20:18 | コメント (4) | トラックバック (0)

2006年11月10日

fR2 SP2 [ finalRender Stage-2 ]

 実は僕はいろいろあってまだ移行しておりません。製品版のインストーラが厳格すぎてインストールが不調だったり、仕事的にまだSP1が必要だったりで。ちょっと試してみた程度ですが、シーンによって使用メモリが激減したり、レンダリングのキャンセルが早くなってたり、目玉の新機能以外にも全体的に良くなってたような記憶があったりなかったり(どっちだ)。

 CebasにSP2のデモビデオが上がってます。英語ですがこれは聞き取りやすいですね。画面だけ見ててもだいたいわかります。
 finalRender Stage-2 for CINEMA 4D Demo Video!
 SP2の新機能で紹介されてるのは「IES lighting」(IES配光データ使用)と「G Buffer」(fRのオブジェクトバッファ)ですね。

 そういやMaya版のデモビデオもあります。Mayaだと元々シェーダツリーがあるからそのへんがちょっと違いますね。
 Stage-2 for Maya:See it LIVE!

投稿者 ヒロツ : 19:16 | コメント (6) | トラックバック (0)

2006年11月09日

にゃがとさん(5) [ CG・制作進行中 ]

061109_nyagato.jpg

 続・顔アニメ。見た目あんまし変わってませんが、口パクとかめがねのグレアとかのテクスチャのアニメーションを研究したり。
 QuickTime Movie 1.3MB

投稿者 ヒロツ : 03:05 | コメント (4) | トラックバック (0)

2006年11月07日

にゃがとさん(4) [ CG・制作進行中 ]

061107_nyagato.jpg

 顔アニメ
 QuiciTime Movie 1.1MB

投稿者 ヒロツ : 03:23 | コメント (5) | トラックバック (0)

2006年11月01日

にゃがとさん(3) [ CG・制作進行中 ]

061101_nyagato.gif

 読むのはやっ
 QuickTime Movie 300KB

 そうそう、コレR10で作ってるんですけど、新しいタイムラインめちゃめちゃ使いやすいです。前のタイムライン作った奴は何考えてたんだと思うぐらいに。

投稿者 ヒロツ : 22:12 | コメント (8) | トラックバック (0)