Unity3D에서 조명을 차단하는 방법은 무엇입니까?


9

먼저 Unity Pro를 소유하고 있습니다.

성능을 향상시키기 위해 조명을 잠시 보지 않을 때 조명을 차단하려고했습니다. 내가 본 주요 방법은 BecameVisible ()을 사용하고 카메라 절두체를 테스트하는 것이 었습니다.

내 주요 문제는 플레이어가 조명으로 비춰질 영역을보고 있다면 여전히 조명을 켜고 싶어한다는 것입니다.

현재 조명 된 영역이 카메라 절두체에 있는지 확인하는 방법을 사용하고 있지만 문제는 때때로 플레이어가 실제로 볼 수없는 상태에서 조명이 절두체에 있다는 것입니다 (예 : 플레이어와 플레이어 사이의 벽). 나는 그들에게 레이 캐스팅을 시도했지만 실제 조명 영역에 대해 충분히 상세하게 얻을 수는 없습니다 (렌더러. 바운드 s.extent 및 renderer.bounds.center를 사용하여 라이트의 최대 조명 포인트를 계산하는 것이 가장 좋았습니다).

누구나 Unity Pro에서 조명을 차단하는 쉬운 방법을 알고 있습니까? 아니면 내가 얘기했던 카메라 받침점 방법을 사용하는 좋은 방법을 말해 줄 수 있습니까?


1
카메라 절두체와 조명 절두체가 교차하는지 확인할 수는 있지만 이미 통일이 필요한 것으로 보입니다.
Archy

1
Unity Pro에서 OcclusionCulling 은 조명도 처리해야합니다.
Archy

내 예술가는 Occlusion Culling이 조명에 적합하지 않을 것이라고 말했습니다. 그래서 이미 설정 한 폐색 영역에서 여러 광원을 폐색으로 설정했을까요?
Timothy Williams

360도에서 작동하려면 카메라와 가벼운 절두체를 확인하는 것과 같은 것이 효과적 일 수 있습니다.
Timothy Williams

오 클루 전 컬링은 아티스트와 내가 시도한 것에도 불구하고 조명으로 작동하지 않는 것 같습니다. 조명을 정확히 어떻게 막을 수 있습니까?
Timothy Williams

답변:


1

조명을 차단하는 스크립트를 직접 작성할 수 있습니다. 기본 카메라에 다음과 같은 것이 연결되어 있습니다.

List<Light> Lights = new List<Light>();
const float OccludeDist = 100;
void Update()
{
    foreach (Light light in Lights)
    {
        if ((transform.position - light.transform.position).sqrMagnitude > OccludeDist * OccludeDist))
        {
            light.enabled = false;
        }
        else{
            light.enabled = true;
        }
    }
}

점이 카메라의 Y 축 각도 내에 있는지 확인할 수도 있습니다 (다른 축은 통증을 줄 수 있습니다). 카메라 프러스 텀의 2 배 정도의 각도로 약간 관대해야 카메라 뷰 내의 조명 영역에서 조명이 꺼지지 않습니다. 이 추가 최적화를 추가하기로 선택한 경우 (아마도 필요하지 않을 수도 있음) 비용이 훨씬 적게 들기 때문에 거리를 광대역으로 사용해야합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.