private static GeometryModel3D[] GetCameraPlanar(CameraPosition camera) { List <GeometryModel3D> models = new List <GeometryModel3D>(); var model = new MeshGeometryModel3D(); var length = (camera.FocalLength / Math.Sqrt(Math.Pow(camera.Height, 2) + Math.Pow(camera.Width, 2))); var p1 = camera.CameraCenter + length * (CameraPosition.GetCornerPointToAxis(camera, camera.Orientation, CameraPosition.Direction.TopLeft)); var p2 = camera.CameraCenter + length * (CameraPosition.GetCornerPointToAxis(camera, camera.Orientation, CameraPosition.Direction.TopRight)); var p3 = camera.CameraCenter + length * (CameraPosition.GetCornerPointToAxis(camera, camera.Orientation, CameraPosition.Direction.BottomRight)); var p4 = camera.CameraCenter + length * (CameraPosition.GetCornerPointToAxis(camera, camera.Orientation, CameraPosition.Direction.BottomLeft)); model.Geometry = PrimitiveBuilder.GetRect(p1.ToVector3(), p2.ToVector3(), p3.ToVector3(), p4.ToVector3()); //model.Material = new PhongMaterial //{ // DiffuseMap = new BitmapImage(new Uri(camera.File)) //}; ////model.Material = PhongMaterials.Yellow; ////Viewport.Items.Add(model); //models.Add(model); var linemodel = new LineGeometryModel3D(); var lb = new LineBuilder(); lb.AddLine(camera.CameraCenter.ToVector3(), p1.ToVector3()); lb.AddLine(camera.CameraCenter.ToVector3(), p2.ToVector3()); lb.AddLine(camera.CameraCenter.ToVector3(), p3.ToVector3()); lb.AddLine(camera.CameraCenter.ToVector3(), p4.ToVector3()); lb.AddLine(p1.ToVector3(), p2.ToVector3()); lb.AddLine(p2.ToVector3(), p3.ToVector3()); lb.AddLine(p3.ToVector3(), p4.ToVector3()); lb.AddLine(p4.ToVector3(), p1.ToVector3()); lb.AddLine(p1.ToVector3(), p3.ToVector3()); lb.AddLine(p2.ToVector3(), p4.ToVector3()); linemodel.Geometry = lb.ToLineGeometry3D(); linemodel.Color = LUT.GetRandomColor(); linemodel.Name = "PlanarCamera_" + Path.GetFileName(camera.File).Split('.').First() + "_" + camera.Id; models.Add(linemodel); MeshBuilder mb = new MeshBuilder(); MeshGeometryModel3D modelCameraCenter = new MeshGeometryModel3D(); mb.AddSphere(camera.CameraCenter.ToVector3(), 0.03); mb.AddSphere(p1.ToVector3(), 0.03); modelCameraCenter.Geometry = mb.ToMeshGeometry3D(); modelCameraCenter.Material = new PhongMaterial() { DiffuseColor = linemodel.Color, AmbientColor = linemodel.Color }; //models.Add(modelCameraCenter); return(models.ToArray()); }