Skip to Content.
Sympa Menu

cgal-discuss - [cgal-discuss] Converting Google Maps HD meshes

Subject: CGAL users discussion list

List archive

[cgal-discuss] Converting Google Maps HD meshes


Chronological Thread 
  • From: Claus Volko <>
  • To:
  • Subject: [cgal-discuss] Converting Google Maps HD meshes
  • Date: Sun, 27 Aug 2023 17:03:40 +0200
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:/CBmT6nTkLpjNLYLn/11aYpYERrpDfIh3DAbv31ZSRFFG/Fw9v re+8jzsCWftN9/YgBCpTntAsm9qBDnlKKdg7NhX4tKNTOO0ACVxepZnO7fKlPbaknDHy1muZ uIsZISNDQ9NzdHZA/BjjWFLw==
  • Ironport-phdr: A9a23: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 CmL69A3/A7gne6IxT5qFhFJr2QT7L8=
  • Ironport-sdr: 64eb65da_PnDDuRNGLHgdy40VDstEnqgw6AqGmw2zVHKk8kBNcQuDzMT jgl5wgP/UdG7oAsczniuaO4voBM4dUkZH3gxnAg==

We are trying to make OBJ files saved from Google Maps HD compatible with CGAL 5.6 for Shape Detection (Region Growing). On opening the OBJ file I get an error message that does not explain what is wrong, but after converting to OFF it is more verbose:

CGAL::Polyhedron_incremental_builder_3<HDS>::
lookup_halfedge(): input error: facet 49 shares a halfedge from vertex 145 to vertex 146 with facet 48.

Polyhedron_scan_OFF<Traits>::
operator()(): input error: facet 50 has fewer than 3 vertices.
ERROR: cannot read the input file!

I wrote a short program in C# that should fix the problem (attached). However, the result is a file that is somewhat degenerated: the number of planes is equal to the number of faces. This cannot be used.

Does anybody have an idea how else this could be fixed?

--
Dipl.-Ing. Dr. Claus D. Volko, BSc
http://www.cdvolko.net/



using System.Globalization;
using System.Security.Cryptography;

var input = new StreamReader(new FileStream("c:\\temp\\Scene.obj",
FileMode.Open));
var output = new StreamWriter(new FileStream("c:\\temp\\scene.txt",
FileMode.Create));
var s = "";
var listVertices = new List<int>();
while (!input.EndOfStream)
{
var s0 = input.ReadLine();
s = s0;
if (!s.StartsWith("f "))
{
output.WriteLine(s);
continue;
}
s = s[2..];
var v0 = parseVertex(s[..s.IndexOf(" ")]);
s = s[(s.IndexOf(" ") + 1)..];
var v1 = parseVertex(s[..s.IndexOf(" ")]);
s = s[(s.IndexOf(" ") + 1)..];
var v2 = parseVertex(s);
var b0 = listVertices.Contains(v0);
var b1 = listVertices.Contains(v1);
var b2 = listVertices.Contains(v2);
if ((b0 && b1) || (b1 && b2) || (b2 && b0)) continue;
if ((v0 == v1) || (v1 == v2) || (v2 == v0)) continue;
listVertices.Add(v0);
listVertices.Add(v1);
listVertices.Add(v2);
output.WriteLine(s0);
}

output.Close();

int parseVertex(string s)
{
if (!s.Contains("/")) return int.Parse(s);
s = s[..s.IndexOf("/")];
return int.Parse(s);
}


Archive powered by MHonArc 2.6.19+.

Top of Page