2006年06月10日

グループマスクはちょっと危険 modo201

modo201のShaderTreeにはいろんなマスクが用意されている。今回はグループマスクを使って変なことになったので書いておく。結論から言うと、グループマスクを指定する時はItemとPolygonTagの両方で同時に絞り込むのはやめた方がいいようだ。以下はおかしな現象が起きた例。

球と円柱のアイテムを作って並べるまずSHIFTを押しながら球と円柱の作成ボタンをクリックして2つアイテムを作成して並べる。

マテリアルの設定次にこれら2つのアイテムの上半分をポリゴン選択してmキーを押し、マテリアルを設定する。

マテリアル設定パネルマテリアルの設定パネルが出たら名前をm1にして適当な色を付けて置く。

マテリアル設定後残りのポリゴンもm2という名前で適当な色をつけてマテリアルを設定しておく。
modoのメッシュデータはポリゴンに対してTagというものが付加出来るようになっている。マテリアルはそのタグの1つだ。他にもSelection SetやPartというタグが使える。マテリアルは光沢や色などいろいろなパラメータを含んでいるが、SelectionSetやPartは付加情報が無い。2つの違いはSelectionSetが同じポリゴンに対して重ねて設定できるのに対してPartは1種類しか設定できないところだ。

アイテムマスクの作成さて次に球体の方のアイテムにアイテムマスクを設定する。アイテムリストのSphereは右クリックしてCreate Item Maskを選択するだけだ。

黄色に設定こうして設定した結果がこのShaderTreeだ。Item:sphereという名前のアイテムマスクが出来ているのが確認できる。開くと図のように中にはマテリアルが1つ入っている。その下に並んでいるm2、m1は先に作ったマテリアルだ。これも実際のマテリアルはm1、m2の階層の下に配置されている。この、Item:sphere、m1、m2などのマテリアルが入っている入れ物が、それぞれのマテリアルが適用される範囲を限定する役割を果たしている。この入れ物がグループで、これでマスクするからグループマスクと言うらしい(effectにも同じ名前のものがあるからややこしい)。ShaderTree内のリストは上にあるほど優先順位が高く、一番上のマテリアルが全てをカバーしてしまえば、その下のマテリアルは全部無視される。グループマスクによって適用される範囲が限定されると、そのグループ内のマテリアルに影響されないポリゴンが出てくる。それが下のマテリアルでカバーされていく。全ての設定から洩れたポリゴンはBaseMaterialの設定になる寸法だ(もちろんそうならないようにも出来る)。

グループマスク先に作成したアイテムマスクがどのような設定のグループなのか見てみると、Itemで対象を絞り込むようになっていて、PolygonTagTypeをMaterial、PolygonTagはallになっている。「マテリアル全て」という事は何も絞り込んでいないという事で、アイテムマスクがItem項目のみで絞込みをしている事がわかる。ちなみにマテリアル作成で出来たグループはItemがallでPolygonTagTypeがMaterial、PolygonTagにマテリアル名が来る。これで「全てのアイテムの中で特定のマテリアルが設定されているものポリゴン全部」ということになる。

タグを変更しても変わらないさて、ここからが問題である。アイテムマスクのPolygonTagをallからm1に変えてみる。こうすれば、この階層の下にあるMaterial(3)が影響する範囲がSphereアイテムのm1マテリアルに絞り込まれる筈である。予想を裏切って、Sphereの絵柄は変化しない。これはm1をm2にしても同じである。

アイテムをallに変更次にItemをallにしてみると両方のアイテム共に全体にマテリアルの影響が出てしまった。

m2の部分が置き換わったところがここでPolygonTagをm1からm2に切り替えると両アイテムのm2マテリアルが割り当てられたポリゴンのみにMaterial(3)の色が現れた。

m1の部分が置き換わったさらに再びm1に切り替えると、今度はm1マテリアルが割り当てられたポリゴン全てにMaterial(3)の色が出た。

sphere:m1が置き換わったこの状態でItemをallからSphereに戻すと、当初期待していた結果(Sphere内のm1マテリアルが設定されたポリゴンのみにMaterial(3)の色が出る)になる。

m2にしてみるとさらにm1をm2に切り替えると、またおかしな状態に戻った。

同じ手順で設定できるItemをallに切り替えてから同様の方法でm2に持っていくと、ちゃんと設定が反映された。

以上、どうもItemとPolygonTagは同時に絞り込まないほうが良いようである。Itemが指定されていたらPolygonTagはallに、PolygonTagが指定されていたらItemをallにしておいた方がいらないトラブルは避けられるだろう。これは仕様なんだろうか・・・。

take_z_ultima at 12:00 │Comments(0)TrackBack(0)modo  | CG

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
Google 広告