Cube Color Change2017. 12. 24. 18:34

Dynamic Material Instance


목표 : 큐브가 상하로 이동하면서 1초 주기로 큐브의 색상이 변경되는 작성한다


실행 중에 오브젝트의 재질을 변경하려면 Dynamic Material Instance 방법을 사용해야 한다.


Dynamic Material Instance

머티리얼을 생성하고 편집할 때 머티리얼의 기본색상을 정적인 값으로 설정하면 실행 중에는 머티리얼의 색상을 변경할 수는 없으므로 머티리얼의 기본색상(Base Color)을 설정할 때 Vector Parameter로 설정하고 그 노드의 이름을 기억했다가 스크립트에서 사용하여 실행시간에 색상을 지정할 수 있다


공백 프로젝트를 생성하고 아래의 절차를 따라 동적 머티리얼을 테스트한다


1. 큐브에 적용할 머티리얼을 생성한다

 - 컨텐츠 브라우저에서 마우스 우측 > 머티리얼 > 이름을 M_CubeMat 으로 지정한다


2. M_CubeMat 를 더블클릭하여 열고 기본색상을 파라미터로 설정한다


위의 그림에서 CubeColor 노드는 Vector Parameter 를 검색하면 추가할 수 있고 노드의 이름은 왼쪽 [디테일]뷰의 Parameter 항목에서 편집할 수 있다. 초기의 색상을 편집하려면 CubeColor 노드를 더블클릭하여 색상선택기를 이용하면 된다 



3. 완성된 머티리얼을 원하는 메시에 적용한다

 - 클래스 블루프린트를 생성하고 컴포넌트 추가 버튼을 눌러 큐브를 추가한다

 - 컴포넌트로 추가된 큐브를 선택하고 우측 [디테일] 뷰 / Material 항목에 앞서 생성한 머티리얼(M_CubeMat)을 지정한다



4. 오브젝트에 설정된 머티리얼의 색상을 변경하려면 [Construction Script] 혹은 [이벤트 그래프] 를 이용한다

 - Construction Script에서 머티리얼의 기본색상을 변경하면 언리얼 레벨에디터 상에서 바로 실행되어 효과를 확인할 수 있다.

 - 이벤트 그래프에서 머티리얼의 기본색상을 변경하면 실행시간에만 그 효과를 확인할 수 있다


5. BP_Cube의 Construction Script 탭을 누르고 다음과 같이 작성하면 언리얼 에디터에서 동적 머티리얼의 효과를 볼 수 있다. 동적 머티리얼 인스터스를 생성하고 벡터 파라미터에 임의의 색상을 설정하는 내용이다. 여기서 생성된 MatInstance는 이벤트 그래프에서도 그대로 사용할 수가 있다




6. BP_Cube의 [이벤트 그래프에 다음과 같이 작성한다. 큐브가 상하로 이동하는 중에 1초 주기 마다 큐브의 색상이 임의의 색상으로 변경되도록 한 것이다


위에서 사용된 타임라인 노드는 다음과 같이 설정한다



모두 완성한 후에 실행해보면 다음 그림과 같이 1초마다 큐브의 색상이 임의의 색상으로 변경되고 상하 이동 애니메이션도 제대로 작동하는 것을 확인할 수 있다



Posted by cwisky