Houdini 20.0 コピーとインスタンス

コピーとインスタンスのPointアトリビュート

On this page

ポイント上にコピーやインスタンスを作成するとき、Houdiniは各コピー/インスタンス毎にそのポイントから特定のアトリビュートを探します。

Attributes

名前

タイプ

説明

orient

float4 (quaternion)

コピーの方向。

pscale

float

均等なスケール。

scale

float3

不均等なスケール。

N

vector

法線(orientがない時、コピーの+Z軸)。

up

vector

コピーのUpベクトル(orientがない時、コピーの+Y軸)。

v

vector

コピーのVelocity(モーションブラー。orientNがない時に、コピーの+Z軸として使われます)。

rot

float4 (quaternion)

回転の追加(上記のorientアトリビュートの後に適用されます)。

P

vector

コピーの移動。

trans

vector

さらにPに加えるコピーの移動。

pivot

vector

コピーのローカルピボットポイント。

transform

3×3 または 4×4 matrix

すべて(P, pivot, transの移動を除く)を上書きするトランスフォームマトリックス。

shop_materialpath

string

マテリアルのパス。Materialサーフェスノードを使ってポイントに、このアトリビュートを追加します。オブジェクトをポイントにインスタンス化すると、インスタンス化されたオブジェクトは、そのマテリアルを使います。

ビューポートには対応していません。

material_override

string

パラメータ名と値をマッピングしたシリアライズ化したPython辞書。Materialサーフェスノードの“override”コントロールを使って、ポイントに、このアトリビュートを追加します。このアトリビュートが追加されたポイントにオブジェクトをインスタンス化すると、インスタンス化されたオブジェクトは、その“override”をマテリアルに適用します。

ビューポートには対応していません。

優先順位

  • pivotが存在すれば、それをコピー/インスタンスのローカルトランスフォーメーションとして使用します。

  • transformアトリビュートが存在する:

    • これを3×3または4×4 matrixとして使用して、コピー/インスタンスをトランスフォームします。

  • transformアトリビュートが存在しない:

    • orientアトリビュートが存在する:

      • これ使ってコピー/インスタンスの向きを変えます。

    • orientアトリビュートが存在しない:

      • +Z軸にNアトリビュート、+Y軸にupアトリビュートを使ってコピー/インスタンスの向きを変えます。

      • Nアトリビュートが存在しない時、v(Velocity)を使います。

    • rotアトリビュートが存在すると、上記の向きを変えた後に、さらに回転を適用します。

    • pscaleアトリビュートが存在すると、それを使ってコピー/インスタンスのスケールを変更します(scaleアトリビュートがあると、さらにその値で乗算されます)。

    • scaleアトリビュートが存在すると、それを使ってコピー/インスタンスのスケールを変更します(pscaleアトリビュートがあると、さらにその値で乗算されます)。

  • transアトリビュートが存在すると、それとPを使ってコピー/インスタンスを移動します。

または、他の方法を以下に載せます:

Key:
X = pivot matrix (translate by -pivot)
O = orient matrix 
S = scale matrix (scale * pscale) 
L = alignment matrix (*) 
R = rot matrix 
T = trans matrix (trans + P) 
M = transform matrix

(*) alignment matrix (L)はN または vとupで定義します。

IF N exists AND up exists and isn't {0,0,0}: 
   L = mlookatup(N,0,up) 
ELSE IF N exists: 
   L = dihedral({0,0,1},N) 
ELSE IF v exists AND up exists and isn't {0,0,0}: 
   L = mlookatup(v,0,up) 
ELSE IF v exists: 
   L = dihedral({0,0,1},v) 

IF transform exists:
   Transform = X*M*T
ELSE IF orient exists:
   Transform = X*S*(O*R)*T
ELSE: 
   Transform = X*S*L*R*T

インスタンス化とモーションブラー

Velocity Blur

シャッターオープン変換は上記の軸合わせと位置に基づいています。シャッタークローズ変換は、シャッターオープン変換とベクトルv/$FPS * shutter_speedを使います。Nvアトリビュートがあれば、Nは合わせに使われ、vはブラーに使われます。

Note

vは軸合わせと位置用に構築される変換とは無関係です。必要なものを回転、スケール、歪ませることができますが、v=(0,0,1)では、オブジェクトはZ方向にブラーします。

Transform Blur

Velocity Blurと同じですが、オブジェクトレベルのトランスフォームも考慮されます。

Deformation Blur

軸合わせと位置変換は、シャッターオープンとクローズ両方で構築されます。オブジェクトレベルのトランスフォームも考慮されます。このメソッドが一番的確です。

サンプル

(各フレームの右下の画像は何のアトリビュートもつけていないインスタンスのジオメトリです)

コピーとインスタンス

はじめよう

次のステップ

導師レベル

古いワークフロー