public CreateDataJob(Bounds VolumnBound, int mx, int mz, MTMeshLODSetting[] setting) { LODs = new MTTerrainScanner[setting.Length]; for (int i = 0; i < setting.Length; ++i) { MTMeshLODSetting s = setting[i]; //only first lod stitch borders, other lod use the most detailed border to avoid //tearing on the border LODs[i] = new MTTerrainScanner(VolumnBound, s.Subdivision, s.SlopeAngleError, mx, mz, i == 0); } }
//TODO 摸索下来比较合适的配置 //因为是Lowpoly风格的游戏 所以地形并不需要那么高的面数 //LOD1 Subdivision 5 Slope 20 //LOD2 Subdivision 4 Slope 20 //LOD3 Subdivision 3 Slope 20 //LOD4 Subdivision 2 Slope 20 private void DrawSetting(int idx, MTMeshLODSetting setting) { bool bFold = EditorGUILayout.Foldout(setting.bEditorUIFoldout, string.Format("LOD {0}", idx)); if (!bFold) { int subdivision = EditorGUILayout.IntField("Subdivision(1 ~ 7)", setting.Subdivision); if (setting.Subdivision != subdivision) { setting.Subdivision = Mathf.Clamp(subdivision, 1, 7); } float slopeErr = EditorGUILayout.FloatField("Slope Tolerance(Max 45)", setting.SlopeAngleError); if (setting.SlopeAngleError != slopeErr) { setting.SlopeAngleError = Mathf.Clamp(slopeErr, 0, 45); } } if (setting.bEditorUIFoldout != bFold) { setting.bEditorUIFoldout = bFold; } }