VectorField - stingray.VectorField オブジェクト リファレンス - Stingray Lua API リファレンス

stingray.VectorField オブジェクト リファレンス

説明

ベクトル フィールドを表します。

ベクトル フィールドは、スペース内の各ポイントに対して 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 コンソール コマンドをゲームで使用して、デバッグ目的でベクトル フィールドを作成することもできます。

関数

パラメータ

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

エフェクト用の設定を提供するテーブルです。

戻り値

integer

stingray.VectorField.change() および stingray.VectorField.remove() の呼び出し時に、このエフェクトを識別するために使用できる 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 を持つエフェクトが存在しないか、使用済みである場合、この関数には効果はありません。

パラメータ

self :

stingray.VectorField

この関数を機能させるオブジェクト インスタンスを指定します。

この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。

point :

stingray.Vector3

入力位置です。

戻り値

stingray.Vector3

ベクトル フィールドが入力位置に適用された後の、出力位置です。

パラメータ

self :

stingray.VectorField

この関数を機能させるオブジェクト インスタンスを指定します。

この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。

points :

stingray.Vector3[]

入力位置のテーブルです。

[]表記は、この型が配列(メンバーのキーは連番、各要素の値は示されている型のインスタンス)であることを示します。
戻り値

stingray.Vector3[]

ベクトル フィールドが各入力位置に適用された後の、出力位置のテーブルです。

[]表記は、この型が配列(メンバーのキーは連番、各要素の値は示されている型のインスタンス)であることを示します。
パラメータ

self :

stingray.VectorField

この関数を機能させるオブジェクト インスタンスを指定します。

この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。

id :

integer

削除するベクトル フィールド エフェクトの ID です。

戻り値
この関数は値を返しません。

エフェクトが存在しない場合、この関数には効果はありません。