카메라 레일을 사용하여 다이나믹한 씬 연출하기


레일 생성 시 방향을 틀어야 하는 부분(커브)에서 Alt키를 누르고 이동하면 커브 생성되고 2번 처럼 흰 포인트가 생김





카메라 레일을 사용하여 다이나믹한 씬 연출하기
카메라 크레인에 시네 카메라 엑터를 연동해 카메라 무빙 주기
언리얼에서 미디어 소스 다루기
2. 미디어 세팅
Unreal Project Ndisplay 세팅하기
2. nDisplay 만들고 배치하기
3. Live Link 프리셋 저장
4. nDisplay에 연동할 Live Link 카메라 세팅
5. Live Link 트레킹 엑터 배치 및 nDisplay 준비 완료하기
6. 스위치 보드로 nDisplay 띄우기
파일을 모두 저장하고 종료한 뒤 스위치 보드, 스위치 보드 리스너 열기
Composure 합성에 활용할 다양한 Material
블렌더를 이용해서 카메라 트래킹 시퀀스 데이터 만들기(언리얼 시퀀서로 바로 내보내기)
참고 영상 : https://www.youtube.com/watch?v=K8iCg9Ks8y4
영상의 카메라 트레킹 데이터가 언리얼 시퀀서로 바로 넘어옴
블렌더에서 제작한 모델링 파일, 트랙킹 데이터 등을 언리얼로 바로 내보내주는 에드온
2. 블렌더 – 언리얼 내보내기
출처 : https://github.com/xavier150/blender-for-unrealengine-addons
특정 문구의 위치를 확인하여 밑줄 만들기
totalCount = thisComp.layer("Text").text.sourceText.split("\r").length;
lineCount = thisComp.layer("Text").text.sourceText.split("\r").findIndex(w => w.includes(thisComp.layer("underbarText").text.sourceText));
a=thisComp.layer("Text").sourceRectAtTime();
h=thisComp.layer("Text").transform.position[1]+(lineCount - totalCount)*79.56;
t=thisComp.layer("ControlEffect").effect("top")("Slider");
l=thisComp.layer("ControlEffect").effect("left")("Slider");
spaceValue = 12.68;
underbarText = thisComp.layer('underbarText');
leftLineText = thisComp.layer('leftLine');
uTWidth = underbarText.sourceRectAtTime().width;
flWidth = thisComp.layer('firstLine').sourceRectAtTime().width;
slWidth = thisComp.layer('secondLine').sourceRectAtTime().width;
llWidth = leftLineText.sourceRectAtTime().width;
lIndex = thisComp.layer("Text").text.sourceText.split("\r").findIndex(w => w.includes(thisComp.layer("underbarText").text.sourceText));
d = (flWidth - slWidth) / 2;
leftWidth = (lIndex ? (d > 0 ? d : 0) : (d > 0 ? 0 : Math.abs(d))) + llWidth;
spaceWidth = thisComp.layer('Text').text.sourceText.split('\r')[lIndex].split(underbarText.text.sourceText)[0].replace(leftLineText.text.sourceText.trim(), '').length;
[(thisComp.width - a.width)/2 + leftWidth + spaceWidth * spaceValue + l, h + t]
특정 문구 앞에 있는 문자를 찾아서 출력하는 익스프레션
underbarText = thisComp.layer('underbarText').text.sourceText;
text.sourceText=thisComp.layer('Text').text.sourceText.split('\r').find(w => w.includes(underbarText))?.split(underbarText)[0];
Text레이어에 입력한 텍스트를 줄바꿈 기준으로 나누고, 그 중에서 underbarText를 포함한 줄을 찾은 다음, true면 underbarText를 기준으로 앞에 있는 텍스트를 출력함
익스프레션으로 특정 문자열이 끝나는 위치를 indexOf와 시작점으로 찾음
a=thisLayer.text.animator("Animator 1").selector("Range Selector 1").start;
t=thisComp.layer("searchText").text.sourceText.length;
n=thisLayer.text.sourceText;
m=n.indexOf(thisComp.layer("searchText").text.sourceText);
k=a+t;
if (m == -1) {
[0]
} else {
[k]
}
이 레이어의 텍스트 중에서 searchText의 텍스트와 일치하는텍스트의 시작점을 찾은값을 a로 두고, searchText 레이어의 길이(length)를 찾아 특정 문자열이 끝나는 위치를 값으로 찾음
만약 searchText와 완벽하게 일치하는 텍스트가 없으면 0을 출력하도록 if~else로 분기