在将Autodesk Forge BIM 360 转换为Unity3D场景时,存在导入和场景大小的限制。Unity3D中的场景大小限制取决于硬件,操作系统和Unity3D版本。在Unity3D中,场景中的任何物体都由网格表示并处理,这使得大型和复杂的场景需要更多的计算资源,这可能导致低端硬件或过时操作系统的计算机无法处理它们。
您可以使用Unity3D的“Level of Detail(LOD)”技术来优化场景,以获取平滑的渲染并避免游戏崩溃。LOD允许您指定在控制场景大小和计算资源使用方面发生什么时候停止细节级别的渲染。
以下是一个Unity3D场景中使用LOD技术进行网格优化的示例代码:
using UnityEngine; using System.Collections;
public class LODExample : MonoBehaviour {
public Mesh highResMesh;
public Mesh lowResMesh;
public float highResDistance = 30.0f;
public float switchDistance = 50.0f;
private MeshFilter meshFilter;
private bool HighResQuality = true;
// Use this for initialization
void Start () {
meshFilter = GetComponent();
if (meshFilter == null) {
Debug.LogError("LODExample: No mesh filter specified");
}
}
// Update is called once per frame
void Update () {
float dist = Vector3.Distance(Camera.main.transform.position,
transform.position);
if (dist > switchDistance) {
if (HighResQuality) {
meshFilter.mesh = lowResMesh;
HighResQuality = false;
}
} else if (dist > highResDistance) {
if (HighResQuality) {
meshFilter.mesh = lowResMesh;
} else {
meshFilter.mesh = highResMesh;