/// <summary> /// Преобразовывает координаты всех объектов в мировую систему координат, /// обновляет BoundingRectangle /// </summary> private List <ObjectVertices> PreprocessObjects(List <RawSceneObject> objects) { List <ObjectVertices> objVertices = new List <ObjectVertices>(); for (var i = 0; i != objects.Count; ++i) { var curObj = new ObjectVertices() { Idx = i }; foreach (var mesh in objects[i].Model.Meshes) { curObj.Vertices = new Vector3[mesh.Vertices.Count]; for (var j = 0; j < curObj.Vertices.Length; ++j) { curObj.Vertices[j] = Vector3.Transform(mesh.Vertices[j], objects[i].WorldMatrix); } objVertices.Add(curObj); var curBox = BoundingBox.CreateFromPoints(curObj.Vertices); boundingRectangle = BoundingBox.CreateMerged(boundingRectangle, curBox); } } return(objVertices); }
/// <summary> /// Преобразовывает координаты всех объектов в мировую систему координат, /// обновляет BoundingRectangle /// </summary> private List<ObjectVertices> PreprocessObjects(List<RawSceneObject> objects) { List<ObjectVertices> objVertices = new List<ObjectVertices>(); for (var i = 0; i != objects.Count; ++i) { var curObj = new ObjectVertices() { Idx = i }; foreach (var mesh in objects[i].Model.Meshes) { curObj.Vertices = new Vector3[mesh.Vertices.Count]; for (var j = 0; j < curObj.Vertices.Length; ++j) curObj.Vertices[j] = Vector3.Transform(mesh.Vertices[j], objects[i].WorldMatrix); objVertices.Add(curObj); var curBox = BoundingBox.CreateFromPoints(curObj.Vertices); boundingRectangle = BoundingBox.CreateMerged(boundingRectangle, curBox); } } return objVertices; }