作成時のエクスプレッション内で定義した変数をランタイム エクスプレッション内で参照できるのは、その変数がグローバル変数として定義されている場合に限られます。ただし、カスタム アトリビュートを作成し、作成時のエクスプレッション内でそのアトリビュートに値を代入した後、ランタイム エクスプレッション内でそのアトリビュートの値を参照または設定することができます。
たとえば、作成時のエクスプレッション内でパーティクル オブジェクトの位置アトリビュートを $oldposition という変数に代入する場合を考えます。
vector $oldposition = particleShape1.position;
同じパーティクル シェイプ(particle shape) ノードのランタイム エクスプレッション内では、$oldposition 変数の値を参照できません。この問題を解決するには、このパーティクル オブジェクト用のカスタム アトリビュートを作成し、作成時のエクスプレッション内でそのアトリビュートに値を代入した後、ランタイム エクスプレッション内でそのアトリビュートの値を使用します。
たとえば、oldpos というアトリビュートを作成し、作成時のエクスプレッション内でそのアトリビュートに位置(position)値を代入する場合を考えます。
particleShape1.oldpos = particleShape1.position;
こうすると、ランタイム エクスプレッション内で particleShape1.oldpos の値を参照することができます。
オブジェクトの初期位置を保存するアトリビュートを作成する必要はありません。初期位置はすでに、初期状態アトリビュート position0 に存在します。このアトリビュートはエクスプレッション エディタ(Expression Editor)のアトリビュート リストには表示されません。