« 俺の Frame。 | トップページ | カーブデフォームはX。 »

2013年10月 9日 (水)

サブDハードエッヂ。

先日皆さんに教えて頂いたことをメモります。



+ キーを押してサブDしたオブジェクトを、サブD後の状態で固めてしまいたくなることはよくあります。 「固める」 というのは俺が勝手にそう言っているだけですが、サブDで分割された結果の状態をナマのポリゴンとしてベイクする、つまり分割後の状態へコンバートしてしまうことです。


で、それをやるためには Edit > Duplicate/Instantiate > Duplicate using Geo App. でもいいですし( + キーによるサブD後の状態で複製)、 Create > Poly Mesh > Subdivision でもいいですし(サブDされた新しいオブジェクトを作る)、ポリゴンを全部選択して Modify > Poly Mesh > Local Subdivision Refinement(選択中のポリゴンをサブDのアルゴリズムで分割)でもいいですよね。 結果は同じです。たぶん。


しかし、もともとのオブジェクトにハードエッジが設定されていた場合、上記の方法で複製した時に、複製後のオブジェクトからはそのハードエッジが消失してしまっているんですね。 

Subd_he1

一番左がもともとのメッシュです。青い線のハードエッジがあるのがわかります。そしてサブDされています。

これを、Duplicate using Geo App で複製したのが真ん中です。 ハードエッジ消えてます。 ちなみに Create > PolyMesh > Subdivision で複製しても同じ結果です。

Local Subdivision Refinement したのが右側です。ハードエッジ消えてます。


どの方法でもハードエッジは消えるのですね。
なんでやねん。
これが問題なわけですよ。 

どーしてハードエッジ消してしまうんですか XSI さま。 消した方がいい理由があるんですか。 ないですよね。 アフォですかあなた。 そんなことしてるから嘔吐デスク様から見放されるんですよ。 レンタルとか当然できねえし。


余談ながら、Local SubD 使った方法とそれ以外の方法で、結果が完全に同じにならないのは俺だけ? ちょっとだけ頂点の位置がズレる部分があるんだよね。  サブDのアルゴリズムは同じ Catnull-Clark 使ってるのに・・・。 これはいずれ検証しないといかんか。。。




と困っていたところ、複数のお方が救いの手を差し伸べてくれまして、サブDを固めた後にハードエッジを復活させる技を教えて頂きました。


そのやり方ですが、まず、一番右、Local SubD Refinement を使います。 真ん中のはダメです。 Local SubD じゃないとダメです。


次に E キーなどを押してエッジ選択モードに入ります。

次に、インターフェース右上のセレクションフィルタの三角アイコンをクリックして、 Crease Edge を選びます。

Subd_he2

この状態で、Local SubD したオブジェクト全体を囲むようにエッジを選択します。

すると、

Subd_he3

画像にあるように、Local SubD したオブジェクトには Crease Edge としてハードエッジの情報が残っているらしく、選択ができちゃいました。 真ん中のオブジェクトはダメですね。


選択さえ出来てしまえばもうこっちのもんです。 そのエッジが選択されたまま、Mark Hard Edge してやれば、元のオブジェクトと全く同じエッジをハードエッジにすることができます。 以上。 ううむ、スヴァらしい。



Crease Edge は、Hard Edge とは本来、違うものです。 目的は基本的には同じようなものだけど、Crease Edge は Hard Edge と違い、ハードにする度合いがパラメータで調整できますね。 でも、Local SubD した時には、Crease Edge も Hard Edge もいっしょくたに、Crease Edge というフラグが立てられて残るように見えます。 試しに、Hard も Crease も両方混じったメッシュで同じ実験をやってみましたが、結果は同じでした。 つまり、Local SubD した時のみ、Hard も Crease も両方、Crease Edge フィルタに引っかかってくれました。





ってことで、基本、このやり方でいいんではないかしら。
他にも良い方法がありましたら、どうか教えて下さい。




もし、Crease Edge も Hard Edge も両方含めた Crease Edge フィルタを使うのではなく、Hard Edge のみを選択したいという場合があったら、それは ymt3d さん のスクリプトを使うとよいようです。

http://3dnchu.com/archives/select_hard_edge_softimage/

おお、ICE のアトリビュートに EdgeIsHard なんてやつがあるんですね? そのフラグを見てハードエッジかどうかを判断しているようです。


Special Thanks to 秋雨様 / マーティンくん / ymt3d 様

いつもお世話になります
(゜∀゜)






あ、そうだ、念のため空調屋さんにも聞いてみたんですよ。 そしたら、嘔吐デスク様にも問い合わせてくれて、結局は良い方法は無いとのこと。 リクエストとして受け付けてもらったようです。 ↓

BSPR-11153
Duplicate using Geo Approx ignores hard edge if changed OGL Level


通常の複製ではハードエッジは引き継がれるわけですから、サブDしたもので出来ない理由はないですよね。 Gator とかでも転送できないし。 最初からそれができれば問題ないのに、謎仕様ですよ嘔吐デスク様。 

でも、一応リクエスト受け付けてくれたのですね。 リクエストなんて実現するかどうか全く分からないし、むしろ実現しないやつの方が多いと思うんだけど、門前払いをしないでちゃんとリクエストとして受け付けてくれるだけ有り難いですね。 某様の方は、今のところ、門前払いが少なくないという印象なんですよねー。 「多くの人がそれを望んでいるわけではないからリクエスト受け付けません」 「MEL で出来ることはそっちでやればいいからリクエスト受け付けません」 みたいな。 いやほんと。 代理店通してもそうなんだから。


あ、俺が XSI 村の村民だからですか。

納得。




.

|

« 俺の Frame。 | トップページ | カーブデフォームはX。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: サブDハードエッヂ。:

« 俺の Frame。 | トップページ | カーブデフォームはX。 »