public void SaveCubeCorner(List <Quad> rects) { m_renderEngine.ClearAll(); if (rects == null) { Debug.Log("Error: The cube data is not right!"); return; } StreamWriter sw = new StreamWriter(m_fs); Vector2[] corners = rects.Count > 1 ? new Vector2[8] : new Vector2[4]; Array.Copy(m_projector.Proj3dToImage(rects[0].CornerPoints3d).ToArray(), 0, corners, 0, 4); if (rects.Count > 1) { Array.Copy(m_projector.Proj3dToImage(rects[rects.Count - 1].CornerPoints3d).ToArray(), 0, corners, 4, 4); } // Re-scale for (int i = 0; i < corners.Length; i++) { m_renderEngine.DrawPoint(corners[i], UnityEngine.Color.red); corners[i].x = corners[i].x / m_Img.width * m_OrigImg.Width; corners[i].y = corners[i].y / m_Img.height * m_OrigImg.Height; sw.WriteLine(corners[i].x + " " + corners[i].y); } sw.Flush(); }