❏ この記事の内容
Maya の Bifrost を使用した『頂点アルファの設定方法』をご紹介します。
エフェクトメッシュでは「頂点選択 → 頂点アルファ設定」という流れでメッシュの端を消し込むことが多いです。
この操作の後にメッシュの頂点数を変更すると壊れてしまいますが Bifrost はこの問題を解消できます。
対象読者
・エフェクトデザイナー
・テクニカルアーティスト
・Bifrost の活用事例が知りたいデザイナー
❐ 目次
- Bifrost で頂点カラーの設定を行うメリット
- 処理の全体像
- 正規化した UV配列 を取得
- インプットの値もとに頂点アルファ (float) を作成
- 頂点カラー (vector 4) に変換し、メッシュの頂点カラーを更新
- まとめ
❐ Bifrost で頂点カラーの設定を行うメリット
1. 頂点数を変更しても崩れない
Bifrost はプロシージャルに処理を行っているため、頂点アルファを設定した後に
頂点数を変更しても処理が壊れません。
2. カーブを用いて簡単に設定できる
通常は「頂点を選択 → 頂点カラー設定」という手順を踏む必要がありますが、
Bifrost の場合は、頂点アルファのかけ方を変更したい際はグラフを変更するだけです。
❐ 処理の全体像
- 正規化した UV配列 を取得。
- インプットの値もとに頂点アルファ (float) を作成。
- 頂点カラー (vector 4) に変換し、メッシュの頂点カラーに適応。
頂点カラーは UV座標 をもとに設定します。
多くの場合、エフェクトメッシュの UV は正方形に展開されているため、UV座標できれいに処理できます。
❐ 正規化した UV配列 を取得
【normalize_UV の中身】
- 『get_mesh_UVs』でメッシュの UV配列 を取得。
- 『array_bounds』で UV配列 の最大値と最小値を取得。
- 『change_range』で UV配列 を正規化。
1. 『get_mesh_UVs』でメッシュの UV配列 を取得
『get_mesh_UVs』でメッシュの UV を取得します。
2. 『array_bounds』で UV配列 の最大値と最小値を取得
『array_bounds』は配列の最大値と最小値を取得できます。
3. 『change_range』で UV配列 を正規化
『Change range』は valueに入力された値を from と to の比率の値を返します。
value | from_start | from_end | to_start | to_end | 結果 |
0.25 | 0 | 1 | 100 | 200 | 125 |
よって、 from に『array_bounds』の返り値を入力することで value に入力された配列を
to の範囲に収めることができます。
今回の場合は “to_start = 0, to_end = 1” を入力し、UV配列を正規化しています。
❏ インプットの値もとに頂点アルファ (float) を作成
【make_vertex_alpha の中身】
- 『evaluate_fcurve』で UV の X, Y 座標ごとにリマップし、乗算。
- 『power』で値にバイアスを掛ける。
- 『clamp』で下限を設定し、Maya の描画バグ対策。
『input』 に接続することにより、ノードに外部からパラメーターを変更できます。
1.『evaluate_fcurve』で UV の X, Y 座標ごとにリマップし、乗算
『evaluate_fcurve』はカーブを用いて入力された値をリマップします。
これにより、Viewport で頂点を選択するよりも簡単に頂点カラーを設定できます。
2.『power』
次に『evaluate_fcurve』でリマップした値に『power』でバイアスをかけます。
カーブは左右対象にするような機能がありません。
上記動画のようにメッシュの両辺をアルファ抜きする場合、カーブの傾きを調整するよりもカーブはリニアで『power』の値を変更したほうが効率的です。
3.『clamp』
頂点アルファの下限を設定せずにバイアスを強めると、上記のような描画になります。
これは Bifrost に限らず Maya で発生するバグです。
環境設定などの解決方法がなかったため、バグらない範囲で限りなく “0” に近い下限を設定しています。
❏ 頂点カラー (vector 4) に変換し、メッシュの頂点カラーを更新
【update_mesh_vertex_color の中身】
- インプットされた頂点アルファ (float) をもとに頂点カラー (vector 4) を作成。
- メッシュに頂点カラーがあれば乗算。
- メッシュの頂点カラーを更新。
頂点カラーの取得/設定
以下のノードのインプット “property = point_color” とすることで頂点カラーを取得/設定できます。
・頂点カラーの取得 = 『get_geo_property』
・頂点カラーの設定 = 『set_geo_property』
1. インプットされた頂点アルファ (float) をもとに頂点カラー (vector 4) を作成
『vector3_to_vector4』で vector 3 と w から vector 4 を作成できます。
・vector 3 = 1
・ W = インプットされた頂点アルファ (float)
2. メッシュに頂点カラーがあれば乗算
まず、『one』ノードについて簡単に解説します。このノードはインプットされた型で “1” を返します。
「false_case」 に『one』ではなく 単純に “1” を入力すると、空の配列が返されてしまい正しい計算が行えません。
『has_property』の “key = point_color” とすることでメッシュに頂点カラーが存在するか確認できます。
・true_case = 『get_geo_property』
・false_case = 『one』で作成した vector 4
3. メッシュの頂点カラーを更新
頂点カラー (vector 4) を 『set_geo_property(property = point_color)』に入力。
❏ まとめ
・Bifrost では頂点カラーを「プロシージャル」かつ「グラフィカル」に処理できる
・簡単な処理でも業務効率化できる!
Bifrost に不慣れな方は処理が完成するまで時間がかかるかもしれませんが、まずは簡単な処理を作成し
『自分でも業務改善ができる!』というのを実感していただけますと幸いです。