오늘은 플레이어가 공격모션에 맞춰 검 궤적 이펙트를 적용한 내용을 간단하게 소개해보겠습니다.
언리얼에서 제공하는 트레일 파티클을
사용하지 않고, 공격 애니메이션이 시작되는 순간 원형 메시를 띄워 그 위 텍스쳐의 UV값을 이동시켜 검 이동에 따라 궤적이 생기는 효과를
적용했습니다.
먼저 3D Max로 아주아주 간단한 궤적 메시를 만들어보겠습니다.
3D Max를 실행시켜줍니다.
화면의 우측에 있는 커맨드 패널을 보면 + 탭이 있고, 탭을 누르면 생성할 Object Type 목록들이 있습니다. 저희는 면을 생성해야 하기때문에 Plane을 선택하고, 아래 Parameters를 보면 Width Segs가 보이실겁니다. 수가 높을수록 자연스러운 곡선을 만들 수는 있지만 적당하게 30으로 넣어주었습니다.
그리고나서 뷰포트에 마우스로 드래그해서 그려줍니다. 그럼 위 사진처럼 Plane이 생성이 됩니다.
이 생성된 Plane을 구부려줄 차례인데요, 다시 커맨트 패널을 보시면 아까 '+'탭 옆에 구부러진 아이콘이 있는 탭을 눌러주시면 현재 뷰포트에 있는 오브젝트를 어떤 효과를 적용할지에 대한 리스트들이 쭈욱 있습니다.
그럼 Bend 속성이 추가되고, 어디 축으로 구부려줄지에 대한 값을 적용시켜주어야 합니다.
그럼 위 사진과 같이 구부러지게 됩니다.Bend의 Angle을 조절하여 강도를 조절할 수 있습니다.
이제 이 플랜에 UV좌표 맵핑을 할 차례입니다. 다시 리스트에서 Unwrap UVW를 선택합니다.
Edit Uvs에서 Open UV Editor을 선택합니다. 그럼 에디터창이 뜨게 됩니다.
원래 기본적으로 UV좌표는 좌상단이 0,0이 되고 우상단이 1,0이 됩니다.
저는 3D Max에 대해 처음이고, 초짜이기 때문에 블로그에서 적용한 방식을 그대로 사용하기 위해 좌우를 바꿔 우상단이 0,0이 되도록 변경하였습니다.
상단에 Tools >Flip Horizental을 선택해 좌상단이 0,0으로 지정된 UV좌표를 우상단이 0,0으로 되도록 변경해줍니다.
그럼 UV좌표가 변경이 되고 위 사진처럼 텍스처의 숫자 1이 우상단쪽으로 이동하게 됩니다.
이제 거의 다 왔습니다. 위 사진을 보면 메쉬의 피봇이 트레일 중간에 찍혀있습니다. 저는 게임 적용함에 있어 더 편리하게 작업하기 위해 피봇의 위치도 변경해주었습니다.
이번에는 커맨드 패널에서 3번째 탭을 선택해줍니다.
그럼 위 사진처럼 Pivot 설정에 대한 버튼들이 보이게됩니다.
피봇의 위치를 메쉬의 안쪽 빈 공간에 설정할 생각입니다. 왜냐하면 캐릭터가 칼을 휘둘렀을 때 일반적인 상황이라면 메쉬의 생성 위치는 캐릭터의 앞부분이어야 하기 때문입니다.
오브젝트에만 적용하기 위해 Affect Object Only를 선택해주고
Alignment에서 Center to Pivot을 선택에 가운데로 되게끔 설정해주었습니다.
그럼 피봇의 위치는 일직선일때의 피봇위치가 아닌 구부러진 상태에서 가운데에 해당하는 위치로 Pivot이 변경되었습니다.
이제 트레일 메쉬를 만드는 작업은 끝났습니다. 이제 3D Max에서 생성한 메쉬를 언리얼로 불러오는 작업을 해보겠습니다.
3D Max의 File메뉴를 선택하시면 Export가 있습니다. Export버튼을 눌러주시면 위와같은 창이 생성이 됩니다. 저희는 언리얼에서 사용할 수 있는 FBX로 저장을 해야하기 때문에 Save as Type을 *.FBX로 변경해주고 Save를 눌러줍니다.
FBX를 저장하기전 메쉬에 대한 속성을 설정할 수 있는 창이 뜨게 됩니다. 여기가 중요한부분입니다! 언리얼과 호환되기위해서 언리얼에서 요구하는 옵션들을 체크해주어야 합니다. Geometry 부분을 위와 동일하게 체크해주고 Animation, Cameras, Lights안에 체크박스는 모두 해제해줍니다. 제가 생성한 메쉬는 스태틱메쉬이고 조명도 필요없기때문이죠.
이제 OK를 누르면 무사히 저장이 된답니다.
여기까지가 트레일 메쉬를 만들고, 언리얼에서 사용할 수 있도록 저장까지 마쳤습니다.
언리얼로 불러오면 3D Max에서 보던것과 동일하게 Import 성공!
이제 트레일메쉬에 사용할 메터리얼을 하나 생성하고 노드를 만들어보겠습니다.
트레일에 적용될 텍스쳐는 3가지 입니다.
- UpLine_TrailTexture,
- Default_TrailTexture,
- Alpha_TrailTexture 입니다.
UpLine_TrailTexture는 트레일메쉬 바깥쪽에 더 강한 효과를 주기위한 메터리얼 입니다.
Default_TrailTexture는
Alpha_TrailTexture는 트레일 메쉬에 알파를 적용할 메터리얼입니다.
먼저 텍스쳐를 적용하기전 UV좌표와 메터리얼 크기를 컨트롤할 수 있는 노드를 만들어보겠습니다.
위 Trail_U_Scale, Trail_V_Scale은 메터리얼의 크기를 조절하는 노드입니다. 두 노드를 Append에 연결하여 Trail_U_Scale값과 Trail_V_Scale값을 벡터로 만들어주었습니다.
지금 각 값이 1씩 적용된 두 Scalar노드를 Append하면 (1, 1) 이렇게 변환이 되는것이지요.
UV값도 변경이 가능하도록 만들어 무기의 이동에 따라 메터리얼도 움직일 수 있도록 해보겠습니다. Scalar 노드로 U_Move노드와 Trail_V_Move 노드 두개를 만들어 줍니다.
U_Move는
UV좌표중 U에 해당하는 좌표를 이동시키는 노드에 해당하고,
Trail_V_Move 또한 V에 해당하는 좌표를 이동시키는 노드에 해당되겠지요.
위에서 사용했던 Append 노드로 벡터로 만들어 준 후, 위에서 메터리얼 스케일 작업을 했던 벡터와 Add 노드를 통해 두 벡터를 더해주어 최종 UV의 좌표를 만들어 줍니다.
방금 만든 이 노드들은 텍스쳐의 이동및 스케일을 조정하는데 사용되는 기본적인 노드로 많이 사용될 노드들입니다.
그럼, UpLine_TrailTexture, Default_TrailTexture, Alpha_TrailTexture 사용된 노드를 보겠습니다.
Texture Sample은 트레일의 양 끝에 자연스러움을 주기 위해 서서히 알파값이 적용되도록 도와주는 텍스쳐입니다. Alpha_Trail_Tex는 실제 트레일에 적용할 알파텍스쳐가 되겠습니다. 텍스쳐의 속성이 clamp이기 때문에 바둑판처럼 반복적으로 적용되는게 아니라 UV좌표에 맞춰서 늘어난 상태로 적용이 됩니다.
Alpha_Intensity값으로 트레일의 강도를 조절할 수 도 있습니다. 투명하게 보여줄지.. 선명하게 보여줄지에 대한 강도겠지요.
머티리얼에서 노드 추가 작업은 이제 끝이 났습니다.
머티리얼 인스턴스를 생성해서 값들을 변경해 보겠습니다. 먼저, 인스턴스를 생성하기전
머티리얼 인스턴스에 대해서 알아보겠습니다.
머티리얼 인스턴싱은 머티리얼을 바탕으로 여러가지 다양한 모양의 머티리얼을 만드는것을 말합니다. 이러한 유연성을 내기 위해 머티리얼 인스턴싱은 상속이란 개념을 사용한다고 하네요.
머티리얼 인스턴스를 사용하는 이유는 그냥 머티리얼을 생성, 셋업하는 작업은 언리얼에서 매우 많은 시간을 잡아먹는 프로세스가 될 수 있다고합니다. 이 프로세스의 효율을 높이고 속도를 올리기 위해 머티리얼 인스턴스라는 특수 유형의 머티리얼을 제공한답니다.
머티리얼에서 값을 변경할 수 있게 만들었던 노드들을 머티리얼에서 쉽게 값을 변경하고 결과값 확인이 가능하기 때문에 머티리얼 인스턴스를 생성해서 값들을 변경해보겠습니다.
컨텐츠 브라우저에서 머티리얼을 우클릭하면 'Material Instance 생성하기가 나옵니다. 클릭해주면 해당 머티리얼에 대한 머티리얼 인스턴스 에셋이 생성이 된답니다.
이 에셋을 열어줍니다.
아까 머티리얼에서 추가했던 노드들에 수치들과 수치들을 변경할 수 있도록 디테일 패널에 추가되어있습니다.
여기서 U_Move값을 -1과 1 사이값으로 변경을 해보면 위와 같이 UV좌표가 이동되면서 나타났다가
사라지게 되는 효과를 보실 수 있습니다.
https://blog.naver.com/othiai4239/221040342597
블로그를 참고하여 만들어보았습니다.