Post List

2017/11/29

Unreal4__9_2_플레이어 공격 (Trail)


오늘은 플레이어가 공격모션에 맞춰 검 궤적 이펙트를 적용한 내용을 간단하게 소개해보겠습니다. 




언리얼에서 제공하는 트레일 파티클을 사용하지 않고, 공격 애니메이션이 시작되는 순간 원형 메시를 띄워 그 위 텍스쳐의 UV값을 이동시켜 검 이동에 따라 궤적이 생기는 효과를 적용했습니다.

먼저 3D Max로 아주아주 간단한 궤적 메시를 만들어보겠습니다.


3D Max 실행시켜줍니다.




화면의 우측에 있는 커맨드 패널을 보면 + 탭이 있고탭을 누르면 생성할 Object Type 목록들이 있습니다저희는 면을 생성해야 하기때문에 Plane 선택하고아래 Parameters 보면 Width Segs 보이실겁니다수가 높을수록 자연스러운 곡선을 만들 수는 있지만 적당하게 30으로 넣어주었습니다.

그리고나서 뷰포트에 마우스로 드래그해서 그려줍니다그럼  사진처럼 Plane 생성이 됩니다.

 생성된 Plane 구부려줄 차례인데요다시 커맨트 패널을 보시면 아까 '+' 옆에 구부러진 아이콘이 있는 탭을 눌러주시면 현재 뷰포트에 있는 오브젝트를 어떤 효과를 적용할지에 대한 리스트들이 쭈욱 있습니다



  Bend 선택해줍니다.


그럼 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가지 입니다.
  1. UpLine_TrailTexture,
  2. Default_TrailTexture,
  3. 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

블로그를 참고하여 만들어보았습니다.