ランタイム エクスプレッション内で作成時のエクスプレッションの値を使用する

作成時のエクスプレッション内で定義した変数をランタイム エクスプレッション内で参照できるのは、その変数がグローバル変数として定義されている場合に限られます。ただし、カスタム アトリビュートを作成し、作成時のエクスプレッション内でそのアトリビュートに値を代入した後、ランタイム エクスプレッション内でそのアトリビュートの値を参照または設定することができます。

たとえば、作成時のエクスプレッション内でパーティクル オブジェクトの位置アトリビュートを $oldposition という変数に代入する場合を考えます。

vector $oldposition = particleShape1.position;

同じパーティクル シェイプ(particle shape) ノードのランタイム エクスプレッション内では、$oldposition 変数の値を参照できません。この問題を解決するには、このパーティクル オブジェクト用のカスタム アトリビュートを作成し、作成時のエクスプレッション内でそのアトリビュートに値を代入した後、ランタイム エクスプレッション内でそのアトリビュートの値を使用します。

たとえば、oldpos というアトリビュートを作成し、作成時のエクスプレッション内でそのアトリビュートに位置(position)値を代入する場合を考えます。

particleShape1.oldpos = particleShape1.position;

こうすると、ランタイム エクスプレッション内で particleShape1.oldpos の値を参照することができます。

オブジェクトの初期位置を保存するアトリビュートを作成する必要はありません。初期位置はすでに、初期状態アトリビュート position0 に存在します。このアトリビュートはエクスプレッション エディタ(Expression Editor)アトリビュート リストには表示されません。