에프터이펙트(Adobe After Effects)에서 toWorld() 함수는 3D 공간에서 객체의 위치를 변환하는 데 사용되는 매우 유용한 함수입니다. 이 함수는 3D 레이어의 로컬 좌표를 전역 좌표로 변환해 줍니다. 다음은 toWorld() 함수에 대한 자세한 설명입니다
함수 정의
toWorld(point)
파라미터
- point: [x, y, z] 형식의 배열로, 레이어의 로컬 좌표를 나타냅니다. 2D 레이어의 경우 [x, y] 형식의 배열을 사용할 수 있습니다.
반환 값
- 전역 좌표계에서의 위치를 [x, y, z] 배열 형식으로 반환합니다.
기본 사용 예제
var globalPosition = thisLayer.toWorld(thisLayer.anchorPoint);
2D 레이어에서 사용
var globalPosition2D = thisLayer.toWorld([100, 100]);
3D 레이어에서 사용
var globalPosition3D = thisLayer.toWorld([100, 100, 100]);
Shape Layer를 하나 생성하겠습니다.
Shape Layer을 생성 후 적용할 때 조심할 부분이 있습니다. 생성된 Shape도 레이어 좌표이기때문에 현재 레이어의 중앙으로 맞추어 주기 위해 레이어의 위치가 아닌 생성된 Shape Layer의 Shape 위치를 0, 0으로 설정해줍니다.
Null 오브젝트를 생성해서 Wiggle() Expression을 위치값에 넣어주었습니다. 그리고 Opticla Flare를 생성된 Shape Layer의 Position에 연결해 둡니다. 랜덩함게 움직이고 있는 Null의 위치값을 3D World 좌표로 변환해서 생성된 Shape Layer의 Position에 toWorld()를 작성해서 넘겨줍니다.
새롭게 Null 오브젝트를 생성해서 Rotation에 time Expression을 작성해서 무한하게 도는 동작을 만들어 주고 기존 Null 오브젝트를 Child로 연결해 주었습니다. 기존 Null의 3D World 좌표를 받고 있는 Shape Layer은 Null의 위치값이 Parent로 인해 변경이 되어도 문제없이 작동되는 것을 볼 수 있습니다.
toWorld() 함수는 다양한 경우에 유용하게 사용될 수 있습니다. 예를 들어, 여러 레이어 간의 위치 관계를 조정할 때나 특정 레이어의 위치를 다른 레이어와 맞출 때 유용합니다.
예제: 두 레이어 간의 거리 계산
두 3D 레이어 간의 거리를 계산하는 예제입니다.
var layer1 = thisComp.layer("Layer 1");
var layer2 = thisComp.layer("Layer 2");
var pos1 = layer1.toWorld(layer1.anchorPoint);
var pos2 = layer2.toWorld(layer2.anchorPoint);
var distance = length(pos1, pos2);
toWorld() 함수는 에프터이펙트에서 레이어의 로컬 좌표를 전역 좌표로 변환하는 강력한 도구입니다. 이 함수를 사용하면 3D 공간에서의 정확한 위치 계산이 가능해지며, 이는 복잡한 애니메이션이나 레이아웃 작업에 큰 도움이 됩니다.
이는 다음과 같은 과정으로 이루어집니다:
1. 로컬 좌표 계산: 먼저, 함수에 전달된 로컬 좌표 [x, y, z]는 해당 레이어의 좌표계를 기준으로 합니다. 2D 레이어의 경우 [x, y] 형식의 배열을 사용합니다.
2. 레이어 변환 매트릭스 적용: toWorld() 함수는 레이어의 변환 매트릭스(포지션, 회전, 스케일, 앵커 포인트 등)를 적용하여 로컬 좌표를 컴포지션의 좌표계로 변환합니다. 이 과정은 레이어의 모든 변형(이동, 회전, 스케일 등)을 고려하여 수행됩니다.
3. 부모 레이어 고려: 만약 해당 레이어가 부모 레이어를 가지고 있다면, 부모 레이어의 변환도 함께 적용됩니다. 이를 통해 부모 레이어의 영향을 받아 최종적인 전역 좌표가 계산됩니다.
4. 최종 전역 좌표 반환: 변환 과정을 거친 후, 최종적으로 계산된 전역 좌표가 [x, y, z] 형식의 배열로 반환됩니다.
이 과정 덕분에 toWorld() 함수는 3D 공간에서 객체 간의 정확한 위치 관계를 파악하고 조정하는 데 매우 유용합니다.