VectorField - stingray.VectorField オブジェクト リファレンス - Stingray Lua API リファレンス
ベクトル フィールドを表します。
ベクトル フィールドは、スペース内の各ポイントに対して Vector3 を返す機能です(実際には Vector4 を返しますが、通常、考慮対象とするのは最初の 3 つのコンポーネントのみです)。通常、これは風などを表すために使用されますが、磁力などのフィールド エフェクトに基づく他のコンセプトにも使用できます。
ゲーム ワールドは、名前で識別されるベクトル フィールドをいくつでも保持できます。たとえば、風のベクトル フィールドは、通常は「wind」と名付けられます。
ベクトル フィールドにアクセスするには、stingray.World.vector_field () を使用します。 ベクトル フィールドが物理オブジェクトに作用するように、stingray.PhysicsWorld.apply_wind() 関数を使用できます。同様に、ベクトル フィールドがパーティクルに作用するように、Wind: From Vector Field パーティクル コントローラを使用できます。
効果をベクトル フィールドに追加するには、stingray.VectorField.add() を呼び出します。エフェクトは、拡張子 .vector_field のリソース ファイルで定義します。これらのリソースは、HLSL のような言語を使用して、ベクトル フィールド エフェクトを定義します。たとえば、次のようになります。
const float4 center = float4(0,0,0,0);
const float4 up = float4(0,0,1,0);
const float4 speed = float4(1,1,1,1);
const float4 radius = float4(5,5,5,5);
struct vf_in
{
float4 position : CHANNEL0;
float4 wind : CHANNEL1;
};
struct vf_out
{
float4 wind : CHANNEL1;
};
void whirl(in vf_in in, out vf_out out)
{
float4 r = in.position - center;
out.wind = in.wind + speed * cross(up, r) / dot(r,r) * radius;
}
さらに、vector_fields コンソール コマンドをゲームで使用して、デバッグ目的でベクトル フィールドを作成することもできます。
|
add ( self, effect, parameters, settings ) : integer
新しいエフェクトをベクトル フィールドに追加します。
|
パラメータ self : | stingray.VectorField | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する 必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、 この Stingray ヘルプ トピック、または Lua ドキュメントの このページを参照してください。 |
effect : | string | エフェクトを定義する .vector_field リソースの名前です。 |
parameters : | table | エフェクトのデータ ファイル内で定義されているグローバル定数の値を指定するテーブルです。このテーブルのキーは、有効なグローバル パラメータの名前と対応している必要があります。このテーブルの各値は、数値、Vector3、クォータニオンにできます。 たとえば、VectorField オブジェクトの説明に示されている渦巻き効果の例をコントロールするには、次のようにパラメータ テーブルを指定できます。 {center = Vector3(4,4,0), radius = 5, speed = 10} |
settings : | table | エフェクト用の設定を提供するテーブルです。 |
戻り値
|
change ( self, id, effect, parameters, settings ) 
指定のパラメータを使用するように、指定された ID を持つエフェクトを変更します。
|
パラメータ self : | stingray.VectorField | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する 必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、 この Stingray ヘルプ トピック、または Lua ドキュメントの このページを参照してください。 |
id : | integer | add() の呼び出しによって以前に設定されたベクトル フィールド エフェクトの ID です。 |
effect : | string | エフェクトを定義する .vector_field リソースの名前です。 |
parameters : | table | エフェクトのデータ ファイル内で定義されているグローバル定数の値を指定するテーブルです。このテーブルのキーは、有効なグローバル パラメータの名前と対応している必要があります。このテーブルの各値は、数値、Vector3、クォータニオンにできます。 たとえば、VectorField オブジェクトの説明に示されている渦巻き効果の例をコントロールするには、次のようにパラメータ テーブルを指定できます。 {center = Vector3(4,4,0), radius = 5, speed = 10} |
settings : | table | エフェクト用の設定を提供するテーブル |
戻り値
この ID を持つエフェクトが存在しないか、使用済みである場合、この関数には効果はありません。
|
evaluate ( self, point ) : stingray.Vector3
指定された入力位置にベクトル フィールドが適用され、変換された位置を返します。
|
|
evaluate ( self, points ) : stingray.Vector3[]
指定された入力位置にベクトル フィールドを適用し、変換された位置のリストを返します。
|
パラメータ 戻り値 stingray.Vector3[] |
ベクトル フィールドが各入力位置に適用された後の、出力位置のテーブルです。
[]表記は、この型が配列(メンバーのキーは連番、各要素の値は示されている型のインスタンス)であることを示します。 |
|
指定された ID を持つエフェクトを削除します。
|
パラメータ self : | stingray.VectorField | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する 必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、 この Stingray ヘルプ トピック、または Lua ドキュメントの このページを参照してください。 |
id : | integer | 削除するベクトル フィールド エフェクトの ID です。 |
戻り値
エフェクトが存在しない場合、この関数には効果はありません。