modoユーザーグループTOKYO勉強会に参加してまいりました。今回は大阪から柳村さんと日比さんが講師としてお見えになっていて非常に有益なお話を聞くことができました。今回は残念ながら懇親会には参加できませんでしたが幾つかのポイントをメモとしてブログに書き残しておきます。
まず、柳村さんの「建築モデリングTips」ですが、JWCADから出力したDXFデータをQuantize(量子化)ツールを使用して、誤差を含む頂点座標値を丸めてから作業されている工程が興味深かったです。外部ファイルから取り込んだデータの座標値はmodoとは座標系が異なったり、1.4999999 mなどのように誤差を含んでいる場合があります。Quantizeツールを使うことによってこれらの誤差を含む値を1.5 mのように丸めることが可能になります。
また、素晴らしいと思ったチップスはグリッドスナップを必要に応じて上手に変更して、スライドなどのツールの相対移動量に対するスナップとして使用する手法です。modoにはグリッドスナップツールというツールはありますが、これはあくまで空間上の絶対位置にマウスカーソルを吸着させるためのもので、移動量そのものを0.5 m, 0.75 mのように丸めた値として入力させる目的には向きません。Coordinate RoundingをFixedにすることによって、指定した増分値にツールの入力量を吸着させることが可能です。柳村さんは、この機能を頻繁に切り替えて使用するため画面の右上にグリッドスナップの設定値入力のフィールドを表示していました(通常は初期設定パネルのInput/Unitsにあります)。これはフォーム編集で下記のコマンドを追加してあげることで任意の場所に設定値の入力フィールドを持ってくることができます。追加するフォームの場所は、フォーム編集のFind Formを使ってあげると簡単に見つけることができます。
pref.value opengl.gridSnap ?
pref.value opengl.gridFixed ?
このCoordinate RoundingおよびFixed Incrementの変更は、このワークフローでは重要なのでmodo 701ではスナップパレットで変更できるように工夫してみようかと思います。
次の日比さんの「スムージングについて」の講義は、非常にベーシックかつ重要な内容でポリゴンでCGを表現する場合に避けては通れない問題について解説していただきました。modoを含むポリゴンをベースとしたCGツールでは、面法線ベクトルを何かしらのルールに基づいて補完し、なめらかな曲面のようなレンダリングを行っています。このスムージング処理は、通常はあまり意識することは少ないかもしれませんが、丸めを表現する形状と平坦な平面が隣接するような部分では、平坦な平面のサンプリング法線ベクトルが丸め部分の法線ベクトルとスムージングによって影響を受け、歪んで表示されてしまう場合があります。ボックスのエッジをエッジベベルで丸め処理を行い、丸めていないボックスとリフレクションを付けて比較してみると、本来平坦になっている部分が歪んでレンダリングされているのがわかります。上が普通のボックスで下がエッジベベルでエッジに丸めを付けたものです。
大きな隣接する平面に隣接するエッジベベルによって作られた平面が角度を持っているため、平坦な平面上のレンダリングサンプル点の法線ベクトルはスムージングによってこれらの隣接面の法線ベクトルとで補完された値になっています。これを解決するにはこの中央の平坦な平面に隣接するポリゴンはこの平坦なポリゴンと同じ方向の面法線を持つようにしてあげる方法があります。これによりスムージングしてもサンプリング法線は面法線と一致しますので歪みがなくなります。具体的にはループスライスを使用して平坦な面にエッジを追加してあげることで解決できます。また、hisakoさんから601のRound Edgeレンダリングでも同じ問題があるのかという質問がありました。Round Edgeは、形状レベルで面ポリゴンを生成せず、シャープエッジに対してシェーディングレベルで丸め処理を行うため、スムージングによる問題は発生しません。
法線ベクトルマップを使って、接続部の頂点に別々の法線ベクトルを設定するという方法もありますが、現在modoの法線ベクトルは外部から入力したモデルの法線ベクトルを保持するために使われていますので、自由に編集して使えるほど汎用性がありません。従ってループスライスでループを追加する方法が現実的だと私も思います。この処理はエッジベベルのオプションとして用意されていると便利なのでエッジベベルの機能拡張を検討してみたいと思います(大昔にEnhanced Requestのリストにあった気もするのですが長い間忘れていました)。
また、SDSのサイズに関してのチップスの説明がありました。SDS(サブディビジョンサーフェイス)は、面ポリゴンを繰り返し分割しながらその頂点の座標値をあるアルゴリズムに基づいて移動していきます。ボックスを作った後にDキーを数回押して分割する方法と同じです。このSDSは、面ポリゴンと同じように曲面を扱えるため非常にフレキシブルにモデルを表現する事が可能な便利な表現なのですが、曲面のケージ(元になる面ポリゴン)が、限界曲面(Limited Surface)を包含するように作製されるため、ケージのサイズよりも限界曲面のサイズの方が小さくなってしまいます。これはサブディジョンサーフェイス固有の特徴であり、NURBS曲面などのようにコントロールポイントを通過する曲面表現ではこの問題はありません。
日比さんはこの問題を解決するために多角形ポリゴンの限界曲面の収縮率を実験的に算出しておき、必要に応じて作製したSDSの円に対してスケールを行ってからモデリングをされています。限界曲面上のポイントの位置は、オリジナルのケージポリゴンメッシュの位相とケージ上の頂点情報によって計算されるため、厳密にはリニアにスケールの値は求まりませんが、形状を単純な多角形に限定すれば実用的には十分な結果が得られると思います。この場合のスケール値は、ケージの頂点座標値から求めたバウンディングボックスのサイズを境界曲面上の頂点座標値から求めたバウンディングボックスのサイズで除算してあげれば簡単に求めることができます。この境界曲面上の座標値を求めるAPIはmeshserviceのCornerメソッドを使用して求めることができます。layerserviceには存在しないので機会があればプラグインとして作って見ようと思います。また、境界曲面のサイズをベースとしてプリミティブを作成する機能は、Sphereツールなどにあると便利なので、こちらも機能拡張を検討してみたいと思います。
今回の勉強会はとても勉強になりました。柳村さん、日比さん、ありがとうございました。
2012年8月5日日曜日
2012年4月14日土曜日
modo 601: モーフの更新
modo 601では、モーフマップをメンテナンスするオプションがトランスフォームツールについています。これは、以前ディスカッショングループで質問があった問題を解決するためのソリューションとしてmodo 601で追加したものです。モーフマップは、メッシュの頂点からの相対位置を差分ベクトルとして頂点マップに保存する機能で、modo 601からはモーフデフォーマなどでも使用されています。
モーフマップは通常ベースとなるメッシュを作成してから、そのベースメッシュのバリエーションとして後から作成する頂点マップです。ベースメッシュに対して少しずつことなる形状をマップごとに作成することができます。
問題点としてモーフマップを作成したベースのメッシュを後から編集した場合、モーフ適用後の形が想定外の形状になってしまう点がありました。モーフマップはベースメッシュの各頂点からの相対ベクトルとして情報を保存していますので、ベースメッシュを変形すると新しいベースの頂点にマップに保存されている相対ベクトルがそのまま加算されるためベースメッシュを大きくスケールや回転するとモーフ適用後の形状が崩れてしまいます。
この問題を解決するためにトランスフォームツールにMorphオプションを用意いたしました。Transformモードを有効にした状態でベースメッシュの頂点を変形するとトランスフォームツールはベースメッシュを変形するのと同時に全てのマップに対してそのマップを適用した形状を変形し、その形状と新しいベースメッシュから新たに作成した相対ベクトルをモーフマップに書き出します。これによりモーフ適用後の形状を崩すことなくベースメッシュを編集することが可能になります。
Keep Positionsは、ベースメッシュを変更しても元のベースメッシュにモーフマップを適用した形状を変更したくない場合に使用します。トランスフォームツールは変形前のベースメッシュ+モーフマップから変形後のベースメッシュを差分して作成した相対ベクトルを新しいモーフマップとして書き戻します。
モーフマップは通常ベースとなるメッシュを作成してから、そのベースメッシュのバリエーションとして後から作成する頂点マップです。ベースメッシュに対して少しずつことなる形状をマップごとに作成することができます。
問題点としてモーフマップを作成したベースのメッシュを後から編集した場合、モーフ適用後の形が想定外の形状になってしまう点がありました。モーフマップはベースメッシュの各頂点からの相対ベクトルとして情報を保存していますので、ベースメッシュを変形すると新しいベースの頂点にマップに保存されている相対ベクトルがそのまま加算されるためベースメッシュを大きくスケールや回転するとモーフ適用後の形状が崩れてしまいます。
この問題を解決するためにトランスフォームツールにMorphオプションを用意いたしました。Transformモードを有効にした状態でベースメッシュの頂点を変形するとトランスフォームツールはベースメッシュを変形するのと同時に全てのマップに対してそのマップを適用した形状を変形し、その形状と新しいベースメッシュから新たに作成した相対ベクトルをモーフマップに書き出します。これによりモーフ適用後の形状を崩すことなくベースメッシュを編集することが可能になります。
Keep Positionsは、ベースメッシュを変更しても元のベースメッシュにモーフマップを適用した形状を変更したくない場合に使用します。トランスフォームツールは変形前のベースメッシュ+モーフマップから変形後のベースメッシュを差分して作成した相対ベクトルを新しいモーフマップとして書き戻します。
2012年4月10日火曜日
選択の解除
先週末に大阪のユーザーグループミーティングに参加した際、柳村さんに選択状態にある頂点やポリゴンをフレームのブランクエリアをクリックして解除できないかという質問をいただきました(大阪ではお世話になりました)。汎用的な用途で使えるチップスになりそうなのでこのブログで紹介いたします。
modoでは3Dビュー上の空白部分をクリックすると選択解除できるのですが、画面いっぱいに選択されたポリゴンが表示されている場合、ブランク部分が3Dビュー上に存在しないため選択が解除ができなくなってしまいます。LightWave 3Dでは、UIの空白の部分をクリックすると選択を解除することができます。
エレメントの解除は、select.dropというコマンドで行うことができます。例えばポリゴンの選択を解除したい場合、select.drop polygonというコマンドを実行します。頂点の場合は、select.drop vertexになります。現在の選択モードに応じてエレメントを解除するには、select.typeFromコマンドで選択モードをテストしてから対応したモードでselect.dropを実行すれば良いので下記のようなスクリプトを実行すればOKです。スクリプトは、ユーザーのスクリプトフォルダにコピーして置くと絶対パスの指定無しで、@SelectDrop.plのようなシンタックスで実行できるようになります。私のOSXでのユーザースクリプトフォルダは
になります。スクリプトはこちらからダウンロードできます。下記をテキストエディタにコピペして使用してもOKです。
#! perl
if (lxq( "select.typeFrom {vertex;edge;polygon;item;ptag;center;pivot} ?" ) ) {
lx ("select.drop vertex");
}
if (lxq( "select.typeFrom {edge;vertex;polygon;item;ptag;center;pivot} ?" ) ) {
lx ("select.drop edge");
}
if (lxq( "select.typeFrom {polygon;edge;vertex;item;ptag;center;pivot} ?" ) ) {
lx ("select.drop polygon");
}
if (lxq( "select.typeFrom {item;edge;vertex;polygon;ptag;center;pivot} ?" ) ) {
lx ("select.drop item");
}
if (lxq( "select.typeFrom {ptag;item;edge;vertex;polygon;center;pivot} ?" ) ) {
lx ("select.drop ptag");
}
if (lxq( "select.typeFrom {center;item;edge;vertex;polygon;ptag;pivot} ?" ) ) {
lx ("select.drop center");
}
if (lxq( "select.typeFrom {pivot;item;edge;vertex;polygon;ptag;center} ?" ) ) {
lx ("select.drop pivot");
}
次にこのスクリプトがフレームのブランクエリアをクリックしたときに実行されるようにInput Editorで設定すれば良いのですが、この場合FramesのRegionsのLeft Clickに割り付けます。Input Editorでは、イベントが実行される条件をビューポートやツールなどさまざまなカテゴリで指定することができます。
modoでは3Dビュー上の空白部分をクリックすると選択解除できるのですが、画面いっぱいに選択されたポリゴンが表示されている場合、ブランク部分が3Dビュー上に存在しないため選択が解除ができなくなってしまいます。LightWave 3Dでは、UIの空白の部分をクリックすると選択を解除することができます。
エレメントの解除は、select.dropというコマンドで行うことができます。例えばポリゴンの選択を解除したい場合、select.drop polygonというコマンドを実行します。頂点の場合は、select.drop vertexになります。現在の選択モードに応じてエレメントを解除するには、select.typeFromコマンドで選択モードをテストしてから対応したモードでselect.dropを実行すれば良いので下記のようなスクリプトを実行すればOKです。スクリプトは、ユーザーのスクリプトフォルダにコピーして置くと絶対パスの指定無しで、@SelectDrop.plのようなシンタックスで実行できるようになります。私のOSXでのユーザースクリプトフォルダは
/Users/taz/Library/Application Support/Luxology/Scripts
になります。スクリプトはこちらからダウンロードできます。下記をテキストエディタにコピペして使用してもOKです。
#! perl
if (lxq( "select.typeFrom {vertex;edge;polygon;item;ptag;center;pivot} ?" ) ) {
lx ("select.drop vertex");
}
if (lxq( "select.typeFrom {edge;vertex;polygon;item;ptag;center;pivot} ?" ) ) {
lx ("select.drop edge");
}
if (lxq( "select.typeFrom {polygon;edge;vertex;item;ptag;center;pivot} ?" ) ) {
lx ("select.drop polygon");
}
if (lxq( "select.typeFrom {item;edge;vertex;polygon;ptag;center;pivot} ?" ) ) {
lx ("select.drop item");
}
if (lxq( "select.typeFrom {ptag;item;edge;vertex;polygon;center;pivot} ?" ) ) {
lx ("select.drop ptag");
}
if (lxq( "select.typeFrom {center;item;edge;vertex;polygon;ptag;pivot} ?" ) ) {
lx ("select.drop center");
}
if (lxq( "select.typeFrom {pivot;item;edge;vertex;polygon;ptag;center} ?" ) ) {
lx ("select.drop pivot");
}
次にこのスクリプトがフレームのブランクエリアをクリックしたときに実行されるようにInput Editorで設定すれば良いのですが、この場合FramesのRegionsのLeft Clickに割り付けます。Input Editorでは、イベントが実行される条件をビューポートやツールなどさまざまなカテゴリで指定することができます。
この方法はmodo 601から実装したレイジー選択を常にオンにしたいときにも便利です。レイジー選択は常にマウスカーソル位置に一番近いエレメントが選択されてしまうので、3Dビューのブランクエリアをクリックしても選択が解除できません。
よろしかったらお試しください。modo 501でも使用可能です。
2012年4月9日月曜日
Audio Ape
modo 601では、アニメーションの機能が大幅に追加されましたが、残念ながらオーディオをmodo上で再生する機能は搭載されませんでした。ところが先日、Celfさんというユーザーの方がAudion Apeというmodo上でオーディオファイルを再生するプラグインを開発し、先週末にバージョン1.0が公開されました。詳しい経緯はオープンフォーラムをご覧ください。
Audio Apeが読み込めるオーディオファイルはWindows版ではWAV形式、MacOS版ではWAVE、AIFF、CAF、m4a、mp3などが扱えるようです。Audio Apeは、modoのキットの形式で配布されており、ユーザーコンフィグフォルダにダウンロードしたaudioapeフォルダをユーザーコンフィグフォルダにコピーすると使用可能になります。SetupタブやAnimetionタブにAudio Apeのタブが表示されますので、ここからAudio Apeの機能にアクセスル事が可能です。
Load Audio Fileボタンを押して、オーディオファイルを読み込むとAudioAPEという名称のロケータアイテムがシーン上に設定されます。このロケータアイテムにはAudioAPE専用のチャンネルがユーザーチャンネルとして登録されています。このアイテムはシーンに対して一つだけ登録されます。後はアニメーションタブで再生ボタンやタイムラインをスクラブすると読み込んだオーディオを再生することができるようになります。逆再生もサポートしています。取り扱えるオーディオファイルは一つのシーンで一つだけです。
Audio Apeは、ユーザーが自分で決めた金額を支払う方法で購入するプラグインです。ユニークなのは支払う金額を開発者に対する報酬と寄付金として寄付する金額とをパーセンテージで指定することが可能になっています。クレジットカードとPayPalが利用できます。
先週末から、Luxology modo SDKのWiKiサイトがオープンになりました。このサイトではmodoのプラグインやスクリプトを開発するために必要な情報がまとめられています。今後、ユーザーやサードパーティのプラグインツールがどんどん増えていくと嬉しいですね。
Audio Apeが読み込めるオーディオファイルはWindows版ではWAV形式、MacOS版ではWAVE、AIFF、CAF、m4a、mp3などが扱えるようです。Audio Apeは、modoのキットの形式で配布されており、ユーザーコンフィグフォルダにダウンロードしたaudioapeフォルダをユーザーコンフィグフォルダにコピーすると使用可能になります。SetupタブやAnimetionタブにAudio Apeのタブが表示されますので、ここからAudio Apeの機能にアクセスル事が可能です。
Load Audio Fileボタンを押して、オーディオファイルを読み込むとAudioAPEという名称のロケータアイテムがシーン上に設定されます。このロケータアイテムにはAudioAPE専用のチャンネルがユーザーチャンネルとして登録されています。このアイテムはシーンに対して一つだけ登録されます。後はアニメーションタブで再生ボタンやタイムラインをスクラブすると読み込んだオーディオを再生することができるようになります。逆再生もサポートしています。取り扱えるオーディオファイルは一つのシーンで一つだけです。
Audio Apeは、ユーザーが自分で決めた金額を支払う方法で購入するプラグインです。ユニークなのは支払う金額を開発者に対する報酬と寄付金として寄付する金額とをパーセンテージで指定することが可能になっています。クレジットカードとPayPalが利用できます。
先週末から、Luxology modo SDKのWiKiサイトがオープンになりました。このサイトではmodoのプラグインやスクリプトを開発するために必要な情報がまとめられています。今後、ユーザーやサードパーティのプラグインツールがどんどん増えていくと嬉しいですね。
2012年3月31日土曜日
modo 601: ボリュームアイテム
ボリュームアイテムは、modo 601から搭載された新しいアイテムです。modo 501でもスポットライトのオプションとしてボリュームレンダリングを行う機能が搭載されていましたが、modo 601では独立したアイテムとしてボリュームレンダリングを行うことができるようになりました。ボリュームアイテムの実装を行ったのは、フランス在住のGregory Duquesneです。Gregoryは、LightWave 3DのHyperVoxelsの作者でもありますので、約15年ぶりに新しいボリュームレンダリングの実装をmodoで行ったということになるのでしょうか。HyperVoxelsがリリースされた当時は、ボリュームレンダリングは膨大なCPUパワーとメモリーリソースを消費するレンダリングでしたが、modo 601ではプレビューレンダーで設定の変更を即時に確認することができるようにまでなりました。
ボリュームアイテムには、通常のボリュームアイテム以外にボリューム関連アイテムとして幾つかのアイテムが追加されています。ボリュームは雲、煙、爆発などの表現に使用するアイテムです。ブロブはメタボールや濃度球とも呼ばれ、水などの表現に使用されます。スプライトは画像をパーティクルソースで指定した位置に画像を配置するアイテムです。
ボリュームの密度やスキャッタリング度のアトリビュートにシェーダを使用することが可能です。シェーダツリーで登録したシェーダのエフェクトをボリュームレンダリングに関連するエフェクトに設定することによってボリューム密度などをノイズやベインなどのプロシージャルテクスチャで変調させることができます。ボリュームとして設定可能な項目は下記のエフェクトです。
また、ボリュームレンダリングのレンダー出力にも、幾つか専用のエフェクトが用意されています。深度に関しては、通常の深度ではなくボリューム深度に出力されますので注意が必要です。
ボリュームアイテムには、通常のボリュームアイテム以外にボリューム関連アイテムとして幾つかのアイテムが追加されています。ボリュームは雲、煙、爆発などの表現に使用するアイテムです。ブロブはメタボールや濃度球とも呼ばれ、水などの表現に使用されます。スプライトは画像をパーティクルソースで指定した位置に画像を配置するアイテムです。
- ボリューム
- ブロブ
- スプライト
- レンダーブーリアン
- グランドプレーン
ボリュームアイテムは、単体でもレンダリングすることができますが、通常はパーティクルソースで指定したポイントの位置情報を利用してレンダリングを行います。ポイントソースは、いろいろな方法で提供することが可能です。メッシュアイテムの頂点を始めとして、RealFlowのBINファイル、パーティクルジェネレータなどのパーティクル生成アイテムをパーティクルソースとして使用することができます。
ボリュームの密度やスキャッタリング度のアトリビュートにシェーダを使用することが可能です。シェーダツリーで登録したシェーダのエフェクトをボリュームレンダリングに関連するエフェクトに設定することによってボリューム密度などをノイズやベインなどのプロシージャルテクスチャで変調させることができます。ボリュームとして設定可能な項目は下記のエフェクトです。
- ボリュームサンプル密度
- ボリューメトリックスキャッタリングの色
- ボリューメトリックスキャッタリングの量
- ボリューメトリックレベル
- ボリューメトリック吸収の色
- ボリューメトリック吸収量
- ボリューメトリック密度
また、ボリュームレンダリングのレンダー出力にも、幾つか専用のエフェクトが用意されています。深度に関しては、通常の深度ではなくボリューム深度に出力されますので注意が必要です。
- ボリュームスキャッタリング
- ボリューム深度
- ボリューム不透明度
2012年3月25日日曜日
modo 601: デフォーメーションシステム
modo 601には、新しく堅牢なデフォーメーションのシステムが実装されました。デフォーメーションは、メッシュの頂点座標値をさまざまな方法で変形させるアニメーションの手法です。このデフォーメーションのシステムは、キャラクターアニメーションのためのスキンデフォーメーションで使用されていますが、更に汎用的な目的で使用することが可能です。
modoのデフォーメーションは、デフォーマと呼ぶアイテムを追加して行います。デフォーマは、デフォーマーリストで管理されており、追加されている順番で評価されます。よって登録されているデフォーマの順番を入れ替えると異なる変形を得ることができます。
デフォーマアイテムには、目的によって幾つかの種類があります。
エフェクタ(Effector)
エフェクタデフォーマは、移動、回転、スケール、ベンドなど与えられた座標値を座標変換するデフォーマです。言い換えると「どのようにデフォームさせるか」を担当するアイテムです。ベンド、マグネットなどおなじみの座標変換ツールと同名のアイテムがあります。
インフルーエンス(Influence)
インフルーエンスデフォーマには、頂点座標、モーフ座標値、アイテム座標値など影響範囲を与える対象が異なるデフォーマアイテムが用意されています。このデフォーマは「何に対してデフォームを行うか」を担当するアイテムです。エフェクタと組み合わせて使用します。
フォールオフ(Falloff)
フォールオフアイテムは、インフルーエンスデフォーマなしでも動作するハイブリッドなデフォーマです。直接、メッシュアイテムとリンクして座標値を変形させることもできますし、インフルーエンスデフォーマをオーバーライドして、エフェクタによって変形される値をフォールオフウェイトによって上書きすることもできます。また、フォースアイテムと結びつけて使用することも可能です。
グループ(Grouping)
グループは特殊なデフォーマアイテムで、複数のデフォーマをまとめて管理するときに使用します。デフォームフォルダは、デフォーマをフォルダーの中にいれてまとめてオンオフするときに使用するフォルダです。正規化フォルダは、スキンデフォーメーションでバインドを使用してデフォーマを追加すると自動的に追加されます。ジョイントを使用したデフォーメーションは、親のジョイントと子供のジョイントに割り付けられた別々のデフォーマの値を正規化する必要があるため、この正規化フォルダにデフォーマが入れられます。このフォルダを利用しないと子供のジョイントの変形と親の変形がそのまま加算されてしまいます。
このエフェクタとインフルーエンスの概念は、ツールパイプラインのジェネレータとエフェクターの設計思想と同じで、計算部分と作用部分を分離することによって、目的によってこれらを自由に組み合わせることが可能になります。非常にmodoらしいデフォーメーションシステムが実装されました。
デフォーメーションの詳しい解説は、サンフランシスコで行われたmodo 601のスペシャルイベントに置いて、Rich Hurrey氏が解説しています。
上記の説明を元にしてデフォーマの簡単な使い方を解説したデモもアップしました。
modoのデフォーメーションは、デフォーマと呼ぶアイテムを追加して行います。デフォーマは、デフォーマーリストで管理されており、追加されている順番で評価されます。よって登録されているデフォーマの順番を入れ替えると異なる変形を得ることができます。
デフォーマアイテムには、目的によって幾つかの種類があります。
エフェクタ(Effector)
エフェクタデフォーマは、移動、回転、スケール、ベンドなど与えられた座標値を座標変換するデフォーマです。言い換えると「どのようにデフォームさせるか」を担当するアイテムです。ベンド、マグネットなどおなじみの座標変換ツールと同名のアイテムがあります。
インフルーエンス(Influence)
インフルーエンスデフォーマには、頂点座標、モーフ座標値、アイテム座標値など影響範囲を与える対象が異なるデフォーマアイテムが用意されています。このデフォーマは「何に対してデフォームを行うか」を担当するアイテムです。エフェクタと組み合わせて使用します。
フォールオフ(Falloff)
フォールオフアイテムは、インフルーエンスデフォーマなしでも動作するハイブリッドなデフォーマです。直接、メッシュアイテムとリンクして座標値を変形させることもできますし、インフルーエンスデフォーマをオーバーライドして、エフェクタによって変形される値をフォールオフウェイトによって上書きすることもできます。また、フォースアイテムと結びつけて使用することも可能です。
グループ(Grouping)
グループは特殊なデフォーマアイテムで、複数のデフォーマをまとめて管理するときに使用します。デフォームフォルダは、デフォーマをフォルダーの中にいれてまとめてオンオフするときに使用するフォルダです。正規化フォルダは、スキンデフォーメーションでバインドを使用してデフォーマを追加すると自動的に追加されます。ジョイントを使用したデフォーメーションは、親のジョイントと子供のジョイントに割り付けられた別々のデフォーマの値を正規化する必要があるため、この正規化フォルダにデフォーマが入れられます。このフォルダを利用しないと子供のジョイントの変形と親の変形がそのまま加算されてしまいます。
このエフェクタとインフルーエンスの概念は、ツールパイプラインのジェネレータとエフェクターの設計思想と同じで、計算部分と作用部分を分離することによって、目的によってこれらを自由に組み合わせることが可能になります。非常にmodoらしいデフォーメーションシステムが実装されました。
デフォーメーションの詳しい解説は、サンフランシスコで行われたmodo 601のスペシャルイベントに置いて、Rich Hurrey氏が解説しています。
上記の説明を元にしてデフォーマの簡単な使い方を解説したデモもアップしました。
2012年3月18日日曜日
modo 601: ポーズスペーススカルプティング
modo 601のキャラクターアニメーションでは、各キーフレームでのキャラクターのポーズに対して修正を行い、ジョイントの変形に合わせて各ポーズを補間するワークフローを提供しています。このワークフローは、modo 601のトレーニングビデオで既に説明されていますが、このブログでも解説しておきます。基本的な手順は以下の通りです。
- スケルトンジョイントを作成、ウェイトを設定した後、General Influenceデフォーマを追加したモデルを作成する。
- スケルトンジョイントをポーズツールやトランスフォームツールで変形し、ポーズを作成する。
- 修正を行う関節部分に対応するモーフマップを作成し、そのモーフマップに対してMorph Influenceデフォーマを追加する。
- 追加したMorph Influenceデフォーマと関連づけるルートのジョイントをペアレント設定する。
- メッシュベースのスカルプトツールで形状を調整する。
- ジョイントの角度のチャンネルとMorph Influenceデフォーマの長さチャンネルをチャンネルリンクでリンクする。
スカルプトツールは、modo 401から搭載されたツールでディスプレースメントマップに対してスカルプトを行うモードとは別にメッシュの頂点に対してもスカルプトを行うことができます。modo 601ではこのメッシュベースのスカルプティングが、メッシュをGeneral Influenceデフォーマで変形させた状態で行うことができるように拡張されています。モーフマップを作成することによって、スカルプトした頂点の座標値とデフォームさせたベースメッシュの座標値の差分情報をモーフマップに追加します。
Morph Influenceデフォーマは、モーフマップの適用の度合いをパーセンテージでアニメーションさせるためのデフォーマです。このデフォーマには「ローカルトランスフォーム使用」というオプションがあり、これを有効にするとモーフアイテムのローカル座標で動作するようになります。このデフォーマを変形に使用するジョイントのルートジョイントとペアレントさせることによって、この変形をMorph Influenceデフォーマを適用する部位を限定させることができます。
チャンネルリンクは、modo 401から実装されているアニメーション機能です。あるチャンネルの値の変化を使って、別のチャンネルの値を変更します。このSLIKなどのキットに含まれている器具は、このチャンネルリンク機能を使用してリグが組まれています。キャラクターアニメーションでは、このチャンネルリンクなどmodo 401から実装されたアニメーション機能を多く使用しますので、601からアニメーションを始められる方は、Luxolog TVにあるアニメーション関連のトレーニングビデオやロータリーエンジンなどのチュートリアルビデオをお勧めいたします。また、ピクサー社のRich Hurrey氏によるRigging Master Courseにはmodoでリグを組むためのノウハウが盛り込まれています。Rich Hurrey氏は、modoのβテスターでもあり、modo 601のアニメーション機能にはRich Hurrey氏のアイディアが多く反映されています。
登録:
投稿 (Atom)








