2011年02月

2011年02月28日

Maximaを使ってみた その30

さて、前回はベクトル

fig01

の要素をこのように並べた行列

fig02

を指数関数

fig04

とすると、

fig10

かつ

fig15

である事からこの行列は回転行列であるって所までやった。

ところで、[r]xを3乗してみると、面白い事に再び対角の要素が0の行列になる(クリックすると大きくなるよ)。

fig01

しかもこれはベクトルrのノルムの2乗

th2:||r||2=r12+r22+r32

で整理する(ratsubst(a,b,c)関数を使うと、cの式からbを見つけてaに置き換えてくれる)と以下の様になって、

fig02

ここから−||r||2をくくり出すと再び、[r]xが出てきて、結局 

[r]x3 = -||r||2 [r]x

だと言う事がわかる。

fig03

よって [r]xのn乗は同じパターンを繰り返す事がわかって、

||r||=θ

とすると、

 [r]x3=-θ2[r]x

 [r]x4=-θ2[r]x2

 [r]x5=(-θ2)(-θ2)[r]x4[r]x

 [r]x64[r]x2

      :

となって、結局奇数偶数で次のような式になることがわかる。

 [r]x2n+1=(-1)nθ2n[r]x (ただし n≧0)

 [r]x2n=(-1)n-1θ2n-2[r]x2 (ただし n≧1)

これらの結果と前回出てきた行列の指数関数のマクローリン展開の式

fig04

から、奇数番目の項と偶数番目の項を分けてまとめると

fig05

となり、

 [r]x2n+1=(-1)nθ2n[r]x (ただし n≧0)

 [r]x2n=(-1)n-1θ2n-2[r]x2 (ただし n≧1)

より

fig06

となる。

ここで、三角関数をマクローリン展開すると以下のようになる。

fig07

これを上の式の2項と3項について当てはめてみると、第2項は、

fig09

となり、第3項は

fig08

となるので、結果として次のロドリゲスの公式が得られる。

fig10

ただし ||r||=θ

この式から得られる行列はrベクトルを軸とする回転角度 ||r|| の回転変換をする行列になる。

それではまた次回。



take_z_ultima at 11:30|この記事のURLComments(0)TrackBack(0)Maxima 

2011年02月25日

clothやってみた その23 3dsmax 2011

前回はテクスチャマップを使ってポイントをグループ登録するのをやって、その前はソフト選択もやってみたけど、この効果については若干謎の部分がある。それはコンストレイントパラメータの「ソフト」オプションだ。マニュアルを読むと、

ソフトにするコンストレイントのタイプを設定します。ソフト コンストレイントは、頂点間のスプリングを使用します。チェックマークが付いていない場合、コンストレイントがハードに(硬く)なります。ノード、サーフェス、保存、ドラッグ、およびシミュレーション ノードのコンストレイント タイプは、ハードにもソフトにもできます。布地、グループ、およびフォースフィールド コンストレイントは、常にソフトです。

と書いてあって、なんだかコンストレイントしている相手との間でスプリングを使うか、それとも距離をがっちり保ったまま追従するのかの設定のように読めるんだけど、実はこの「ソフト」がグループ登録のソフトも指し示しているようで、このオプションのON/OFFによってソフト選択やテクスチャマップ選択の挙動も変わるようだ。

マニュアルの記述にあるように、布地、グループ、フォースフィールドは常に「ソフト」しか選べないので、これら3つのコンストレイントは常にソフト選択やテクスチャーマップ選択、頂点カラー選択のグラデーションが有効に働き、コンストレイントの強さがグラデーションの明るさに比例するようにかかる。

その他のコンストレイントは「ソフト」のON/OFFによって挙動が変わり、その変わり方がなんかおかしな感じになる。

例えばノイズのテクスチャマップでグループ選択した場合、通常はノイズの明るさとして100%の部分はほぼ無いので、グループ選択も弱めにかかるだけになる。

fig01

その時にノードコンストレイントをすると、コンストレイントがかからないで布は単純に落下する。しかしノイズのスレッショルドをノイズのコントラストを高めて行くと、

fig02

この布の落下が無限に続かないで、ある位置で下の画像のように停止する。

fig03

この停止する位置はノイズのスレッショルド(高)を下げて行くほど元の位置に近くなる(ノードコンストレイントで実験した限りは強度の設定でこの距離は変わらなかった)。だからあながちソフト選択が効いてないようでもない感じだ。

ところが、ポイントを選択してグループ登録し、ソフト設定でグループ境界をぼかした場合、

fig08

ソフト設定自体コンストレイントした状態ではONに出来ないみたいなので一度デタッチしてから設定したんだけど、下のように中心部分が選択したポイントで、その周囲がソフト選択された部分だ。

fig04

これをシミュレートしてみると、100%選択されている部分以外はまるでコンストレイントの影響が無いように落ちてしまった。おそらくこれが本来の姿なのかな?

fig05

そして「ソフト」をONにしてみると、

fig07

このようにグラデーションどおりのコンストレイントの影響が現れた。

fig06

以上のことから、「ソフト」オプションはおそらくコンストレイントにバネとダンピングを持ち込むだけじゃなくて、ソフト選択も導入するもののようだ。

それではまた来週。

maxまとめページ



take_z_ultima at 11:30|この記事のURLComments(0)TrackBack(0)3ds Max | CG

2011年02月24日

modo501がキタ! その17 modo501

modo501ではファーの機能もいろいろな面で磨きがかかった。例えばRayGLによってビューポートにファーがそのまま表示出来るようになった。下のGIFアニメはその様子。ヘアツールでガイドを編集した直後にRayGLがレンダリングしてファーが表示されるのがわかる。自分のPCはCPUがcore2Quad Q6600にグラボがGeforce8600GTS(早く買い換えたいなぁ)というだいぶ前のものだけど、このくらいのレスポンスが得られている。

fig01

もちろん従来通りプレビューの方でも表示可能だ。さらにプレビューにはファーレンダリングのレスポンスを高めるために「ドラフト品質ファー」という設定が追加されていて、プレビューパネルの「設定」メニューからアクセスできる。

fig04

例えば下の状態のプレビューを

fig02

「ドラフト品質ファー」ONにすると、これだけ間引きされて表示される。

fig03

これでも充分に毛の流れとかは把握できるからレスポンスが重くなってきたらONにしてみるといいね。

ところでプレビューで出来るならRayGLの方もドラフト表示出来るんじゃないかと思って調べてみたら、初期設定にその設定が見つかった。

fig05

それから、ファー自体をレンダリング表示しなくてもビューポートにはラインでファーの状態が表示されるのでこっちの方でも充分様子は把握できる。

fig06

このラインの表示もドラフト表示同様にレンダリング時の密度から間引いて表示できる。しかもこっちは表示密度をパーセントで設定できる。

fig07

ここまでは401と同様なんだけど、501にはこのファーのライン表示の色を設定する機能が付いた。401でもファーを設定したポリゴンに設定されているマテリアルの色が反映していたんだけど、色によっては視認性が悪くなることもあるので、これはありがたい。設定はGL表示の「GLカラー設定」をONにして、GLカラーを設定するだけだ。

fig08

下の画像はGLカラーを設定してみたところ。もちろんこの色はレンダリングしたファーに影響を与える事はない。

fig09

この色付けの機能はヘアーガイドの方にも追加されたので、ガイドとヘアーの区別もつけやすくなった。設定はスカルプトパネルのヘアーツールタブの中の「ガイドカラーの設定」から行う。

fig10

このボタンを押すとこのようなダイアログが表示されて、「ガイドカラー」を設定して「ヘアガイドカラーの無効」をONにするとガイドカラーが設定される。

fig11

下の画像はヘアガイドカラーを黄色、ファーのライン表示の色を水色にしてみたもの。

fig12

読んでいて「おや?」ってなったと思うけど、この「ヘアガイドカラーの無効」はなんか馴染めない感じがする。英語の方のラベルをマニュアルで確認すると、「Override hair guides color」になっている。「ヘアガイドカラーの上書き」って感じかな。上書きするんだから従来の設定は無効ってことなんだろうけど、ちょっと混乱しそう。

この「ヘアガイド」はmodoにとってみると単なるカーブであって、生成後にはカーブツールで作成したカーブと区別がつかなくなる。カーブは当然マテリアルを設定できるから、ディフューズカラーを変えれば色を変える事が出来る。「ヘアガイドカラーの無効」はそのカーブに設定されたマテリアルのディフューズカラーを無効にしてガイドカラーで表示する機能のようで、シーン内のカーブやベジェ曲線はことごとく設定色に変わる。もちろんカーブは通常レンダリングされないし、「カーブをレンダリング」をONにした場合でもガイドカラーの色が影響を与える事はないからうっかり設定をOFFにし忘れても心配は無いけどね。

それではまた次回。

カテゴリー別ページ




take_z_ultima at 11:32|この記事のURLComments(0)TrackBack(0)modo | CG

2011年02月23日

clothやってみた その22 3dsmax 2011

グループサブオブジェクトへのポイントの割り当てはテクスチャを使うことも出来る。グループサブオブジェクトの「グループパラメータ」ロールアウトにある「テクスチャマップを使用」の部分がそれで、前回やったソフト選択の設定がこれより優先されるので、「ソフト選択を使用」がOFFで「テクスチャマップを使用」がONの時に有効になる。

fig01

ただし、この設定もソフト選択同様にグループのポイントへの割り当てを修正するためのオプションなので、先にグループを作成しないと使う事が出来ない。そしてこの設定が有効になると、グループを作成する時に登録したポイントは無視される。

だからこれを使うときは先に作るグループのポイント選択はデタラメで構わない。例えば下の画像のように右下部分を選択して「グループを作成」でグループを作って登録し、

fig02

次に「テクスチャマップを使用」をONにして、Noneのボタンを押してマップを割り当てるか、またはこのボタンにマップをドラッグ&ドロップすれば、マップが割り当てられる。

fig03

今回はボタンを押して「グラデーションランプ」を選んでみた。

fig04

するとグループはこのように変化した。青い部分がグループの効果が一番弱く、赤い部分が一番強いので、下の画像は左から右に向けてグループの影響が強くなっている事がわかる。ただしよく見ると左右の両端が黄色くなっていて、影響が50%になっている。

fig05

これは何かといえば、グラデーションのマップがデフォルトでタイリングする設定になっているために、境界部分でちょうど白と黒の境目が来てしまい、結果として白と黒を足して平均した灰色としてマッピングされてしまったようだ。

fig06

そこでタイルをOFFにすると、

fig07

タイリングしない場合はどうやら境界の外側は全て0になってしまうようで、それぞれの縁が期待される値に0を足して2で割って平均した(要するに期待した値の半分の)値になっている。

fig08

上下方向はタイリングしても変化しない(上の縁と下の縁でグラデーションが同じだから)ので、Vの方のタイリングをONにすれば上下の境界については解決できるけど、

fig09

左右の境界については左側の値が0%の部分は半分にしても0%だからいいけど、右側の値が100%の部分は半分の50%ではまずい。

fig10

そこでUのオフセットを少しいじって、マップをわずかに右にずらしてやると、

fig11

このように50%に平均されていた右端の黄色い点がなくなる。

fig12

これで一見解決のように見えるけど、実はこれらのポイントの中には100%の効果になっている点が存在しない。100%が必要なら、グラデーションバーの下をクリックして1つキーを加え、それをダブルクリックしてカラーピッカーで100%の白に設定し、右端に100%白の範囲を作ってやる必要がある。

fig13

そうすればその範囲に入ったポイントが100%効果のグループになる。

fig14

これらの事は実験で使った平面を生成する時に同時に生成させたUVWマップのせいでもあるので、UVWアンラップモディファイヤとかを使って

fig16

UVマップを編集してマップの左右を縮めて1X1のマップの境界より内側にエッジを入れてしまえば、

fig15

境界の影響を受けなくなる。タイルをONにしても無関係だ。ただし内側に入ったぶんだけグラデーションの開始と終了の位置を内側に入れてやる必要がある。

fig18

これがその結果。これをさらに2回3回とタイリングするとまたややこしい事になるわけだけど、最終的にはイメージマップでなんとかしてくれって事だねw。

fig17

いずれにせよUVマップ境界で値が平均化されてしまうようなので、マップを作る時は境界のちょっと外側まで均質になるように気をつける必要がありそうだ。

ところでテクスチャマップを使ってグループ設定をすると何がいいのかと言えば、もちろん複雑なパターンのグループ設定も絵で出来るというのもあるけど、テクスチャーはアニメーションさせることもできるので、時間でグループを変化させたいなんて時にはなかなか効果的だ。

例えば下のGIFアニメはチェッカーで縞模様のテクスチャを生成して、それをU方向のオフセットにアニメーションをつけたものだ。

fig19

これをグループ設定のマップとして使い、フォースフィールドコンストレイントを設定して、風に関連付けて布に吹き付けてみたのが下のGIFアニメだ。マップの動きによってグループが変化し、風に反応する部分が変化しているのがわかる。

fig20

うまく使えばいろいろ面白い事が出来そうだ。

それではまた次回。

maxまとめページ



take_z_ultima at 11:41|この記事のURLComments(0)TrackBack(0)3ds Max | CG

2011年02月22日

modo501がキタ! その16 modo501

ファーマテリアルをいろいろ試していたんだけど、こんなことがあった。

まず1mX1mの平面にベクターディスプレースメントマップで起伏を付けたサブディビジョンサーフェスを用意して、

fig01

これにファーマテリアルを適用した。ファーマテリアルはデフォルト設定のままね。

fig03

すると一面にこのようにファーが発生する。

fig02

この状態でカメラをこのオブジェクトの端に接近させて、焦点長を30mmにした。

fig04

すると、このように広角レンズで接近して撮影した感じになる。

fig05

ここでファーのタイプをストリップにする。

fig06

するとファーがパイプ形状から三角形の板の形状に変化する。

fig07

ここで間隔を50mmにしてみると、

fig08

なぜか手前の部分のファーがトリミングされて発生しなくなってしまった。

fig09

ファーのタイプを円柱に戻すと

fig10

このように手前のエリアにもファーが発生するし、

fig11

ベクターディスプレイスメントマップをOFFにしてレンダリングすると、

fig12

今度はトリミングされずに現れた。

fig13

ちなみにこの現象は501から導入されたビルボードのツリーや葉を設定した時も同様に起きる。

fig16

これはビルボードをツリーに設定したもの。

fig14

こっちはビルボードを葉に設定したもの。

fig15

ところで501からシェーダーの適用範囲をフィルタリングする方法として新たに「スコープ」というのが追加された。これによってグループ内のシェーダーアイテムがサーフェスに作用するのか、ファーに作用するのか、その両方なのかを選択できるようになった。これによって例えばファーやビルボードにステンシルマップなどを施した時にファーを生やしているポリゴン自体をステンシルで消してしまう事を防ぐ事が出来るようになった。

fig17

例えばイメージマップをプロジェクションタイプ「インプリシットUV」で貼り付けると、

fig18

ファーに画像を貼り付ける事ができる。下の画像はビルボード「ツリー」に貼り付けたもの。

fig19

この画像はαマップを持っているので、501で新たに追加されたRGBAエフェクトに切り替えると、αマップでビルボードが切り抜かれて葉が残るけど、葉が生えていた地面も消えてしまう。

fig20

そこで新たにグループを作成し、その中にイメージマップを入れて、グループのスコープを「ファー」にすると、

fig21

RGBAの効果がファーに限定されるので、地面が現れる。

fig22

それではまた次回。

カテゴリー別ページ



take_z_ultima at 12:14|この記事のURLComments(0)TrackBack(0)modo | CG
Archives