lod渲染
This commit is contained in:
parent
ca784f5b86
commit
8c9f06b677
|
|
@ -21,7 +21,7 @@ public class SorghumController : PermanentTriggerBase
|
|||
public bool RandomRotate = true;
|
||||
|
||||
|
||||
LODGroup lodGroup = null;
|
||||
//LODGroup lodGroup = null;
|
||||
public void Init(SorghumState _state = SorghumState.Healthy, bool _rand = false)
|
||||
{
|
||||
State = _state;
|
||||
|
|
@ -47,12 +47,12 @@ public class SorghumController : PermanentTriggerBase
|
|||
case SorghumState.Diseased:
|
||||
triggerName = "高粱_病株";
|
||||
this.gameObject.name = "高粱_病株";
|
||||
lodGroup = DiseasedStrain.GetComponent<LODGroup>();
|
||||
//lodGroup = DiseasedStrain.GetComponent<LODGroup>();
|
||||
break;
|
||||
case SorghumState.Healthy:
|
||||
triggerName = "高粱_正常";
|
||||
this.gameObject.name = "高粱_正常";
|
||||
lodGroup = HealthyStrain.GetComponent<LODGroup>();
|
||||
//lodGroup = HealthyStrain.GetComponent<LODGroup>();
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -114,37 +114,6 @@ public class SorghumController : PermanentTriggerBase
|
|||
//}
|
||||
}
|
||||
|
||||
int GetLODCurShowLevel(Camera cam, LODGroup lodGroup)
|
||||
{
|
||||
var inv_SceneViewCamHeight = 1.0f / (cam.pixelHeight - 6.0f);
|
||||
|
||||
var lods = lodGroup.GetLODs();
|
||||
for (int lodIDX = 0; lodIDX < lods.Length; lodIDX++)
|
||||
{
|
||||
var lod = lods[lodIDX];
|
||||
var renderers = lod.renderers;
|
||||
for (int renderIDX = 0; renderIDX < renderers.Length; renderIDX++)
|
||||
{
|
||||
var renderer = renderers[renderIDX];
|
||||
var heightInScreen = cam.WorldToScreenPoint(renderer.bounds.min).y - cam.WorldToScreenPoint(renderer.bounds.max).y;
|
||||
var ratioInScren = Mathf.Abs(heightInScreen * inv_SceneViewCamHeight);
|
||||
if (ratioInScren > lod.screenRelativeTransitionHeight)
|
||||
{
|
||||
return lodIDX;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
private float CalculateScreenRelativeHeight(float objectSize, float distance, float fov)
|
||||
{
|
||||
// 计算物体在屏幕上的高度比例
|
||||
float screenHeight = 2.0f * Mathf.Tan(0.5f * fov * Mathf.Deg2Rad) * distance;
|
||||
return objectSize / screenHeight;
|
||||
}
|
||||
|
||||
protected override void OnMExit()
|
||||
{
|
||||
if (_highlight != null)
|
||||
|
|
|
|||
|
|
@ -167,13 +167,13 @@ public class SorghumFieldController : MonoBehaviour
|
|||
|
||||
private void SetRenderersEnabled(bool enabled, GameObject go)
|
||||
{
|
||||
//GameObject obj = go;
|
||||
//if (obj == null) obj = this.gameObject;
|
||||
//Renderer[] renderers = go.GetComponentsInChildren<Renderer>();
|
||||
//foreach (Renderer r in renderers)
|
||||
//{
|
||||
// r.enabled = enabled;
|
||||
//}
|
||||
GameObject obj = go;
|
||||
if (obj == null) obj = this.gameObject;
|
||||
Renderer[] renderers = go.GetComponentsInChildren<Renderer>();
|
||||
foreach (Renderer r in renderers)
|
||||
{
|
||||
r.enabled = enabled;
|
||||
}
|
||||
|
||||
//LODGroup lg = go.GetComponent<LODGroup>();
|
||||
//Debug.Log("LOD组数:" + lg.GetLODs().Length);
|
||||
|
|
|
|||
Loading…
Reference in New Issue