Attribute を追加して VOP で使用する
チャンネルとアトリビュート¶
まず最初に、Houdini の場合「チャンネル」と「アトリビュート」というのは
別の用語として扱われます。
アトリビュート¶
アトリビュートとは、各ジオメトリのエレメント(point,vtx,prim,detail)の
固有値をさしています。
GeometrySpreadSheet で各エレメントごとに表示されるもの
Wrangle や Expression で「@HOGEHOGE」のように表されている物が「アトリビュート」です。
チャンネル¶
対して、チャンネルとは各ノードのパラメータービューに表示されているものをさします。
このように、スライダや数値入力が作成されている物がチャンネルになります。
VEX や Expression で ch('channel_name') でアクセスします。
VOP で使用する¶
アトリビュートの作成¶
VOP 内でチャンネルを追加する場合は、
ノードの入力口で中ボタン →Promote Parameter することで、
チャンネルを追加することができました。
VEX を VOP に置き換える 01 ノイズ では
この方法を使用してチャンネルを追加しました。
それに対して、アトリビュートを使用した場合はどうやったらいいのかが
わからなかったので調べてみました。
プロパティがアトリビュートのことを指しているのでしたらBind Exportがありますよ
— UnlimitedEffectWorks (@ijiVFX) 2019年3月24日
Twitter で教えて頂きました。
毎度の事ながらありがとうございます。
まず、VOP ノードの前に Attribute Create を追加します。
AttributeCreate ノード内で、アトリビュートの追加を記載します。
注意が必要なのが「Class」
アトリビュートは、ジオメトリのエレメントに対して追加します。
エレメントは、point,vtx,prim,detail と 4 つ種類があるので「どれに追加するか」を
指定する必要があります。
例のように Detail にしている場合は、GeometrySpreadSheet 内の「Detail」タブに
param アトリビュートが追加されています。
Point に対して追加すると、全ポイントに対して param が追加されます。
VOP 内で使用する¶
VOP 内で追加したパラメーターを使用するには、Bind ノードを使用します。
Bind の設定で、どのアトリビュートと紐付けするかを指定します。
今回は param アトリビュートを VOP 内で使用できるようにするので
Name に「param」を指定します。
さきほどの「Class」指定が、この VOP 内での値の持ってきかたが変わります。
Point に対してアトリビュートを追加した場合、
この Bind の param は Point ごとに別の値をもつようになります。
たとえば、GeometrySpreadSheet で Point4.y に 1 をセットすると
頂点単位で数値を入れることができますが、
Detail に入れると、Geometry 単位での入力になるので
オブジェクト全体をオフセットする形になります。
この Bind は、入力以外にも値を出力したい場合にも使用できるので、
1 |
|
のようになにかしらの数値をセットしたい場合は
Bind ではなく BindExport ノードを作成し、input に値を入力すれば OK です。