금요일에는 이미션 기능에 대한 코드작성의 실마리를 알아왔었다.
material.SetColor 로 이미션 속성의 색상을 지정하였는데
이외의 기능들에 관해서 알아보고 또 기능들의 차이에 대해서 정리가 필요해보였다.
일단 그래픽스와 쉐이더 머터리얼 등 내가 컴공과가 아니라서 놓친 개념들이 꽤 많은 것 같지만
이것을 알아보기엔 최종프로젝트의 기간을 생각하여야 하기에 참는다.
(나중에 공부할 땐 컴공과 친구한테 자료 좀 공유해달라고 해야할 거 같다.)
내가 알고 사용하는 것은 개념들의 일부이며 나중에 따로 공부해야할 것임을 명시해둔다.
이번에 접근해야할 것은 머터리얼이다.
머터리얼(Material)
오브젝트의 머터리얼에 접근하기 위해선 해당 오브젝트의 랜더러 컴포넌트에 먼저 접근한 후
그 랜더러 컴포넌트의 머터리얼에 접근해야한다.
Renderer renderer = GetComponent<Renderer>(); //해당 오브젝트의 렌더러 컴포넌트 기능을 가져옴
Material material = renderer.material; //렌더러 컴포넌트에서 다시 material 기능에 접근
이렇게 접근하는 이유는 좀 더 찾아봐야겠지만 Renderer 컴포넌트 안에 Material를 관리제어하는 기능 또한 포함되어 있다는 것을 알아두고 가야 나중에 공부할 때 편할 것 같다.
지난 시간에 하얀 색상의 이미션 효과를 주기 위해서 머터리얼에서 SetColor 프로퍼티에 접근하여
"_EmissionColor"라는 키워드로 접근하였다.
material.SetColor("_EmissionColor",Color.white); //문자열로 키워드 접근
좀 더 살펴보니 예상대로 이 프로퍼티 또한 인트ID값으로 이것을 조작할 수 있는 것으로 보인다.
약간의 성능 향상을 위해선 미리 인트ID 값을 캐싱해서 사용하는 것이 좋아보였다.
private int emissionColorID; //이미션 컬러속성을 사용할 때 쓰는 ID
emissionColorID = Shader.PropertyToID("_EmissionColor"); //위의 변수를 할당해주는 코드
_material.SetColor(emissionColorID,Color.white); //이제 SetColor에 ID로 조작이 가능
int 변수를 하나 만들어주고
변수에 Shader.PropertyToID(); 로 위에서 사용하였던
"_EmissionColor"라는 문자열 키워드를 정수형 ID로 바꾸어주었다.
찾다보니 거의 모든 문자열로 작동하는 방식의 프로퍼티 키워드는 이런 정수형 ID로 바꾸어 사용해줄 수 있는 것 같다.
그런데 막상이렇게 색상을 바꿔주고 나니 다른 옵션에 대해서 생각해보게 된다.
이 색은 어떻게 꺼주지? SetColor() 를 할때 Color.Black으로
꺼져있는 것과 비슷한 효과를 줄 수는 있지만 꺼져있다고 보기는 힘들다.
또한 이미션 강도라는 옵션을 보았는 데 SetColor로는 조작이 안되는 듯하다.
색상이외의 조작에 대해서
그래서 좀 더 찾아본 결과 EnableKeyword와 DisableKeyword 를 사용하여
이미션 옵션을 켜고 끄고 할수 있다는 것을 알게 되었다.
EnableKeyword와 DisableKeyword 는 문자열 키워드만 받는 것 같다.
EnableKeyword와 DisableKeyword
material.EnableKeyword("_EMISSION"); //이미션 효과 활성화
material.DisableKeyword("_EMISSION"); //이미션 효과 비활성화
이 키워드를 사용하면 이미션의 기능을 켜고 끌 수 있다.
또한 이미션의 다른 기능들은 SetFloat 로 사용이 가능한데
material.SetTexture("_EmissionMap", emissionTexture); //설정한 특정 영역에만 빛나게 하는 효과를 주고 싶을 때
material.SetFloat("_EmissionIntensity", 1.0f); //이미션 강도
SetTexture로 EmissionMap에 접근하는 경우 이미션을 적용할 텍스쳐를 따로 만들어서 사용해야 할 것 같다.
SetFloat 로 강도를 조절하는 것은 밝기 강도를 의미한다.
'TIL' 카테고리의 다른 글
2024 12 03 TIL (1) | 2024.12.03 |
---|---|
2024 12 02 TIL (0) | 2024.12.02 |
2024 11 29 TIL (0) | 2024.11.29 |
2024 11 28 TIL (0) | 2024.11.28 |
2024 11 27 TIL (0) | 2024.11.27 |