35 lines
1.1 KiB
C#
35 lines
1.1 KiB
C#
using UnityEngine;
|
|
|
|
public class MeshRendererVisibility : MonoBehaviour
|
|
{
|
|
public GameObject go_obj;
|
|
|
|
private MeshRenderer[] meshRenderers; // MeshRenderer 목록
|
|
private Plane[] cameraFrustumPlanes; // 카메라의 프러스틀럼 평면
|
|
|
|
private void Start()
|
|
{
|
|
meshRenderers = go_obj.GetComponentsInChildren<MeshRenderer>();
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (DSUtil.CheckNull(meshRenderers)) return;
|
|
|
|
// 카메라의 프러스틀럼 평면 계산
|
|
cameraFrustumPlanes = GeometryUtility.CalculateFrustumPlanes(Camera.main);
|
|
|
|
// 각 MeshRenderer의 Bounds가 프러스틀럼에 포함되는지 확인
|
|
foreach (var renderer in meshRenderers)
|
|
{
|
|
if (GeometryUtility.TestPlanesAABB(cameraFrustumPlanes, renderer.bounds))
|
|
{
|
|
renderer.enabled = true; // 카메라 뷰 내에 있으면 활성화
|
|
}
|
|
else
|
|
{
|
|
renderer.enabled = false; // 카메라 뷰 밖에 있으면 비활성화
|
|
}
|
|
}
|
|
}
|
|
} |