'Based On Clip Bounds'에 해당되는 글 1건

  1. 2012.09.10 이펙트 사라짐? 해결해보자 2

이펙트 사라짐? 해결해보자

 

 

 

 

게임에 적용된 이펙트가 간간히 사라지는 일이 발생합니다.

몇몇 상황들이 있는데요.

- 처음부터 보이지 않는 이펙트

- 한번 보여지고 두번째부터 보이지 않는 이펙트

- 이펙트가 동작하다 중간부터 보이지 않는 이펙트

- 화면에 걸쳐있을 때 작동하지 않는 이펙트

 

이는 유니티 컬링에 의해 사라지는 건데요.

유니티가 컬링을 어떻게 하길래 이러한 일이 발생하는 걸까요...

이펙트에 영향을 미치는 컬링은 메쉬 컬링과 애니메이션 컬링이 있습니다.

 

 

 

메쉬 컬링

 

메쉬 컬링은 화면에 메쉬가 보여질 때만 그리는 방법입니다.

메쉬를 일일이 다 연산하면 부하가 있으니 보통은 바운드(단순한 박스형태)로 그릴지를 결정합니다.

바운드는 메쉬 하위속성으로 들어가 있는데요.

(스킨메쉬랜더러가 아니라면 바운드의 크기는 유니티가 결정)

보통 이펙트의 경우 일반 메쉬랜더러를 사용하기에 바운드 영역에 대해 신경 쓸 필요가 없습니다.

물론 스킨 메쉬랜더러를 사용한다면 바운드를 수정 할 수 있지만 이 또한 기본적으로 유니티가 알아서 해줍니다.

메쉬 컬링만 보자면 이펙트 사라짐과는 큰 영향은 없어 보입니다.

 

 

 

애니메이션 컬링

 

애니메이션컬링 방법은 4가지가 있는데요.

카메라에 애니메이션이 어떤 방법으로 컬링 되는지를 보여줍니다.

 

- Always Animate : 카메라에 들어오지 않더라도 항상 플레이되게 하는 기능으로 컬링을 하지 않는 방법

(항상 플레이 된다 --> 컬링을 하지 않는다 --> 연산부하가 증가한다 --> 나쁘다 이건)

- Based On Renderers : 카메라 영역 안에 메쉬가 그려지고 있다면 플레이 (기본 옵션)

- Based On Clip Bounds : 카메라 영역 안에 클립 바운드가 걸리면 플레이 (클립파일에 바운드 설정이 있음)

- Based On User Bounds : 사용자가 임의로 바운드 영역을 설정하자

 

 

기본 설정인 Based On Renderers는 카메라 영역 안에 메쉬가 있을 때 애니메이션이 플레이 됩니다. 그럼 다음과 같은 상황은 어떻게 될까?

메쉬랜더러를 On/Off 하는 Key가 들어 있다면...

 

정답은 애니메이션이 작동하지 않는다!!

비활성화 --> 메쉬랜더러가 꺼짐 --> 바운드를 찾을 수 없음 --> 애니메이션 컬링 --> 애니메이션 작동 안됨

 

 

자 그렇다면 메쉬랜더러를 항상켜두고 알파를 이용해 사라지는 효과를 모두 표현한다면 문제는 없을까?

- 일반적인 상황에서는 이상이 없이 사용 됩니다만 오브젝트가 화면 밖으로 나갔다 다시 돌아오는 경우 나, 화면 밖에서 화면 안으로 날아오는 키 애니메이션이 있다면 이펙트가 정상 출력되지 않을 수 있습니다.

 

보통 이런 경우 캐릭터는 기본적은 클립 바운드라고 해서 캐릭터 동작에 맞게 클립마다 바운드 영역이 자동으로 설정됩니다. 이 클립 바운드를 이용하면 문제 없이 작동되지만, 이건 이펙트인 관계로 유니티가 자동 설정을 해주지 않습니다. 결국 바운드 영역을 수동으로 설정해줘야 하는데.. 그럴 거면 굳이 클립파일에 저장되는 바운드 보단...

 

애니메이션 컴포넌트에 적용되는 Based On User Bounds를 사용하는게 좋습니다.

 

그리고 Based On Renderers 보다 Based On User Bounds가 연산 부하가 적습니다.

이유는 간단한데요.

Based On Renderers는 메쉬마다 바운드를 검사하지만 Based On User Bounds는 애니메이션 바운드 하나만을 검사하니 퍼포먼스적으로도 더 좋은 결과를 볼 수 있습니다.

 

 

 

Posted by Hwanggoon
,