OpenSubdivキットをバージョンアップし、UVマップ以外のRGBマップなどの不連続頂点マップとモーフポジションの補間を行うようにしました。またメッシュモディファイアは、再分割したメッシュエレメントをエレメントグループに設定するように変更し、Select By Previous Operationから選択できるようにいたしました。
Modoでは、このOpenSubdivキットとは別にOpenSubdivをサポートしていたり、ネイティブのサブディビジョンサーフェイスもオリジナルのサブディビジョンサーフェイスとCatmull-Clarkサブディビジョンサーフェイスの2つがあるので、今回はModoサブディビジョンサーフェイスの取り扱いについて解説したいと思います。
ポリゴンタイプとしてのサブディビジョンサーフェイス
このOpenSubdivキットのメッシュモディファイアのように、多くのDCCアプリケーションではサブディジョンサーフェイスをモディファイアとして実装されていることが多いです。ModoのサブディビジョンサーフェイスはFACEポリゴンなどと同列のポリゴンタイプとして実装されています。これにより同一メッシュ内で異なるタイプのポリゴンタイプをミックスして扱うことができる自由度があります。選択したFACEポリゴンをTABキーを押すことによって同一メッシュの部分的なポリゴンをサブディビジョンサーフェイスとして扱うことができます。ポリゴンタイプはModoのコアレベルで実装されています。
オリジナルのサブディビジョンサーフェイスとCatmull-Clarkサブディビジョンサーフェイス
Modoのオリジナルのサブディビジョンサーフェスポリゴンタイプ(以下SUBD)は、Stuart Fergusonによって実装されたもので、Catmull-Clarkのアルゴリズムとパラメトリック曲面を組み合わせたハイブリッドなオリジナルのアルゴリズムを使用しています。特徴はとにかく軽量でメモリー消費も少ない優れた曲面です。負のエッジウェイトを扱える点もユニークです。欠点はウェイトを使用した場合、UVに歪みが生じてしまうのと、ほかのDCCアプリケーションでも標準となっていたピクサーのCatmull-Clarkサブディビジョンサーフェイスとの互換性が取れなかったことにあります。その後、もう一つのサブディビジョンサーフェイスのポリゴンタイプとして、ピクサーのCatmull-Clarkサブディビジョンサーフェイス(以下PSUB)を実装しました。実装当時はOpenSubdivはまだリリースされていなかったので、Subdivision Surface in Animation に基づいて一から実装いたしました。打ち合わせのためピクサーアニメーションスタジオに訪問したことを覚えています。
OpenSubdivアイテムプラグイン
その後、OpenSubdivがリリースされましたので、ModoもOpenSubdivに対応してほしいとの要望があったのですが、PSUBはマルチレゾリューションスカルプティングなどにも対応していたため、PSUBの実装をOpenSubdivと置き換えることはできませんでした。また、Modoのコアモジュールに直接サードパーティのライブラリをリンクすることができないという制約も足かせになりました。そこで考えたのがサブディジョンサーフェイスの頂点位置データを外部プラグイン経由でOpenSubdivに計算させる方法です。OpenSubdivアイテムプラグインはModoのFACEポリゴンを読み込んで補間計算を行い、計算結果をPSUBの頂点位置情報に戻しています。ちょっとトリッキーですが、OpenSubdivを補間計算を行う計算エンジンとして使用しています。ただ、あくまでもPSUBポリゴンタイプの拡張機能として作られたプラグインですので、OpenSubdivがサポートしている様々なオプションはほとんど利用されていません。
OpenSubdivキット
今回のOpenSubdivキットは、ポリゴンタイプとは異なるアプローチでOpenSubdivの機能をModoで使用することを目的で開発しました。PSUBポリゴンタイプとは関係なくメッシュモディファイアとして実装しているのでCatmull-Clark以外のスキームやOpenSubdivが提供するUV補間方法のオプションなどもそのまま使うことができます。他のDCCアプリケーションと同様の方法ですね。Modoでは複数の方法でサブディビジョンサーフェイスが利用できるようになっていますのでワークフローに応じて使い分けていただけると良いかと思います。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。