プロシージャルモデリングを用いた円グラフの作成方法(後編)
https://www.youtube.com/watch?v=kuPHyns8zyQ
前回に引き続き、今回は半径を指定した穴が空いていない円グラフをプロシージャルモデリングを用いて作成してみます。
前回は立方体、トランスフォームデフォーマ、ベンドデフォーマを使用して、円グラフを作成しました。この作成した円グラフの円周は、作成した長方形のX軸に対するサイズそのままとなっています。
つまり「半径×2×PI(円周率)=長方形のX軸に対するサイズ」ということです。であれば、逆に半径をあらかじめ決めておくことで、長方形のサイズを確定すれば、望み通りの大きさの円グラフを作れるようになります。
まずは半径の大きさをユーザーチャンネルで指定します。この円グラフのメッシュのユーザーチャンネルのタブからユーザーチャンネル追加で、以下のようなチャンネルを作成します:
ユーザー名称:graph_rad
チャンネル名称:graph_rad
タイプ:距離
初期値:1.0
これが半径を表すユーザーチャンネルとなりますので、まずはこのチャンネルをスケマティックビューへと持ってきます。ではこの半径からCubeのサイズを割り出したいので、CubeのサイズXのチャンネルを追加します。まずはいったんgraph_radとサイズXを接続します。実際は値そのままではなく、半径×2×PI(円周率)という計算が必要になりますので、この接続の間に乗算ノードをはさみます。接続を選択し、右クリックからチャンネルモディファイヤを追加 > 演算 > Basic Math:乗算を追加します。掛け合わせる値は2×PIですので、追加 > 演算 > Math:Constantで定数を出力するノードを追加します。定数のプルダウンから2 Piを選択し、乗算ノードに接続します。
これで長方形のXのサイズは正しくなりましたが、動かしてみると正しい円になりません。これはもともと長方形の位置XはサイズXの半分の値だったにもかかわらず、その値が正しく渡っていないためです。ですので、さらにCubeのX軸の位置をノードに追加し、サイズXの半分の値が渡るように、除算ノードを追加して接続します。
さらにベンドエフェクタの長さの値も、長方形のX軸に対する長さと連動していますので、こちらも同じ値を入力するようにします。
ただしこれだと中心に穴が空いてしまっています。長方形のY軸に対するサイズは円の半径と等しくなり、またそれに合わせて位置も合わせる必要があります。このため、長方形のサイズYと位置Yをノードに追加したら、まずは半径の値をそのままサイズYへと入力し、位置Yへはその半分のマイナス位置へと持ってくるようにノードを接続します。
そうするとちょうど円形になった時に、指定した半径で穴がきれいに埋まった円グラフを作ることができるようになります。