벡터 필드를 나타냅니다.
벡터 필드는 공간 내 각 지점에 대한 Vector3(실제로는 Vector4지만 대개 처음의 세 가지 구성요소만 고려)를 반환하는 함수입니다. 이는 주로 바람 같은 요소를 표현하는 데 사용하지만 자성 같은 필드 효과를 기반으로 하는 다른 개념을 표현하는 데 사용할 수도 있습니다.
게임 표준은 이름으로 식별되는 임의 개수의 벡터 필드를 보유할 수 있습니다. 예를 들어, 바람에 대한 벡터 필드는 보통 "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 또는 Quaternion일 수 있습니다. 예를 들어, 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 또는 Quaternion일 수 있습니다. 예를 들어, VectorField 오브젝트 설명에 나와 있는 회오리바람 효과의 예를 제어하려면 아래와 같이 매개변수 테이블을 지정하면 됩니다. {center = Vector3(4,4,0), radius = 5, speed = 10} |
settings : | table | 효과에 대한 설정을 제공하는 테이블입니다. |
반환하는 항목
이 ID의 효과가 존재하지 않거나 재생이 완료된 경우에는 이 함수가 작동하지 않습니다.
|
evaluate ( self, point ) : stingray.Vector3
벡터 필드를 지정된 입력 위치에 적용하고, 변환된 위치를 반환합니다.
|
|
evaluate ( self, points ) : stingray.Vector3[]
벡터 필드를 지정된 입력 위치에 적용하고, 변환된 위치 목록을 반환합니다.
|
매개변수 self : | stingray.VectorField | 이 함수가 작동하는 오브젝트 인스턴스를 지정합니다. 이 함수를 호출할 때에는 항상 이 self 매개변수를 제공해야 합니다. 도트( .) 호출 구문을 사용해야 하며, 객체 지향 콜론( :) 호출 구문을 사용하면 안 됩니다. 자세한 내용은 이 Stingray 도움말 항목, 또는 Lua 설명서의 이 페이지를 참조하십시오. |
points : | stingray.Vector3[] | 입력 위치의 테이블입니다. [] 표기는 이 유형이 어레이임을 나타냅니다. 어레이는 구성원의 키가 순차적인 정수이며, 각 요소의 값이 표시된 유형의 인스턴스인 테이블입니다. |
반환하는 항목 stingray.Vector3[] |
벡터 필드를 각 입력 위치에 적용하고 난 후의 출력 위치 테이블입니다.
[] 표기는 이 유형이 어레이임을 나타냅니다. 어레이는 구성원의 키가 순차적인 정수이며, 각 요소의 값이 표시된 유형의 인스턴스인 테이블입니다. |
|
지정된 ID의 효과를 제거합니다.
|
매개변수 self : | stingray.VectorField | 이 함수가 작동하는 오브젝트 인스턴스를 지정합니다. 이 함수를 호출할 때에는 항상 이 self 매개변수를 제공해야 합니다. 도트( .) 호출 구문을 사용해야 하며, 객체 지향 콜론( :) 호출 구문을 사용하면 안 됩니다. 자세한 내용은 이 Stingray 도움말 항목, 또는 Lua 설명서의 이 페이지를 참조하십시오. |
id : | integer | 제거하려는 벡터 필드 효과의 ID입니다. |
반환하는 항목
효과가 존재하지 않으면 이 함수가 작동하지 않습니다.