애니메이션 커브 채널 생성 함수 설명
animcurve_channel_new 함수는 새로운 애니메이션 커브 채널 구조체를 생성합니다. 이 구조체는 다양한 변수를 포함하고 있으며, 애니메이션 커브에 필요한 데이터를 저장하는 데 사용됩니다.
애니메이션 커브 채널 구조체
| 변수 이름 | 데이터 타입 | 설명 |
|---|---|---|
| name | string | 채널의 이름 |
| type | Animation Curve Interpolation Type Constant | 아래 표에 있는 상수 중 하나 |
| iterations | integer | 커브의 각 구간에 생성된 포인트 수 (Catmull-Rom "smooth" 보간 사용 시) |
| points | array | 애니메이션 커브 포인트 구조체의 배열 |
곡선 보간 타입 상수
| 상수 | 설명 |
|---|---|
| animcurvetype_linear | 포인트 간 선형 보간에 사용됩니다. |
| animcurvetype_catmullrom | 포인트 간 부드러운 보간에 사용됩니다. (Catmull-Rom 보간) |
| animcurvetype_bezier | 포인트 간 베지어 보간에 사용됩니다. |
기본적으로 새로운 채널 구조체를 생성할 때, name 변수는 빈 문자열로 설정되며, type은 animcurvetype_linear, 그리고 iterations는 16으로 설정됩니다. 이러한 변수들은 필요에 따라 조정할 수 있으며, 선형 커브 타입에서는 iterations 값이 영향을 미치지 않음을 유의해야 합니다.
예제 코드
다음은 새로운 애니메이션 커브를 생성하고 점들을 추가하는 예제입니다.
my_curve = animcurve_create();
my_curve.name = "My_Curve";
var _channels = array_create(1);
_channels[0] = animcurve_channel_new();
_channels[0].name = "alpha";
_channels[0].type = animcurvetype_catmullrom;
_channels[0].iterations = 8;
var _points = array_create(3);
_points[0] = animcurve_point_new();
_points[0].posx = 0;
_points[0].value = 0;
_points[1] = animcurve_point_new();
_points[1].posx = 0.5;
_points[1].value = 1;
_points[2] = animcurve_point_new();
_points[2].posx = 1;
_points[2].value = 0;
_channels[0].points = _points;
my_curve.channels = _channels;
위 코드는 새로운 애니메이션 커브 구조체를 생성하고, "my_curve" 변수에 저장합니다. 이 구조체는 이름과 채널 배열로 채워지며, 채널 배열은 세 개의 포인트를 가진 단일 채널을 포함합니다.
활용 및 응용 예제
- 단순 애니메이션 커브: 단순한 포인트 간 연결을 사용해 개체의 위치를 변형해 보세요.
var move_curve = animcurve_channel_new();
move_curve.name = "Movement Curve";
move_curve.type = animcurvetype_linear;
var move_points = array_create(2);
move_points[0] = animcurve_point_new();
move_points[0].posx = 0;
move_points[0].value = 0;
move_points[1] = animcurve_point_new();
move_points[1].posx = 1;
move_points[1].value = 100;
move_curve.points = move_points;
- 부드러운 변환 사용: Catmull-Rom 보간 타입을 사용해 부드러운 애니메이션 효과를 적용할 수 있습니다.
var smooth_curve = animcurve_channel_new();
smooth_curve.name = "Smooth Curve";
smooth_curve.type = animcurvetype_catmullrom;
var smooth_points = array_create(4);
smooth_points[0] = animcurve_point_new();
smooth_points[0].posx = 0;
smooth_points[0].value = 0;
smooth_points[1] = animcurve_point_new();
smooth_points[1].posx = 0.3;
smooth_points[1].value = 50;
smooth_points[2] = animcurve_point_new();
smooth_points[2].posx = 0.7;
smooth_points[2].value = 75;
smooth_points[3] = animcurve_point_new();
smooth_points[3].posx = 1;
smooth_points[3].value = 100;
smooth_curve.points = smooth_points;
- 베지어 애니메이션: 베지어 보간을 사용하여 복잡한 애니메이션을 생성해 보세요.
var bezier_curve = animcurve_channel_new();
bezier_curve.name = "Bezier Curve";
bezier_curve.type = animcurvetype_bezier;
var bezier_points = array_create(3);
bezier_points[0] = animcurve_point_new();
bezier_points[0].posx = 0;
bezier_points[0].value = 0;
bezier_points[1] = animcurve_point_new();
bezier_points[1].posx = 0.5;
bezier_points[1].value = 100; // Control point
bezier_points[2] = animcurve_point_new();
bezier_points[2].posx = 1;
bezier_points[2].value = 0;
bezier_curve.points = bezier_points;
이 예제를 통해 애니메이션 커브 채널을 사용하여 다양한 애니메이션 효과를 적용할 수 있음을 알 수 있습니다.