Punktanzahl eines mesh verkleinern

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Punktanzahl eines mesh verkleinern

Post by bernd »

Hab hier ein mesh bei dem ich nicht weiterkomme und es muss noch kleiner werden ...

Anbei ein Geländeoberflächenmesh. Es hat 3766 Punkte und 7509 Triangles. Ich würde gerne die Triangle und Punktanzahl verkleinern. Die Bruchkanten sollen möglichst erhalten bleiben. Heisst es sollen nur Kanten zwischen triangles gelöscht werden wenn deren Wingel zueinander möglichst gross ist (160 bis 180 grad.) Am besten natürlich mit einam Parameter steuerbar.

Geht sowas in FreeCAD oder braucht es da exta Software, wenn ja welche.

Gruss bernd

gelaendemesh.FCStd
(110.27 KiB) Downloaded 44 times

mesh.png
mesh.png (597.24 KiB) Viewed 1549 times
abcb
Posts: 85
Joined: Tue Jan 08, 2019 2:26 pm

Re: Punktanzahl eines mesh verkleinern

Post by abcb »

Hallo Bernd

Ich würde es mit Blender oder MeshLab versuchen.
In Blender gibt es einen Decimate Modifier der recht gut mit den Tris und den Vertex zurechtkommt.
Viele Grüsse vom schönen Rüschlikon am Zürichsee

Andy
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Punktanzahl eines mesh verkleinern

Post by bernd »

Blender can not even load the stl ... :shock:


blender.png
blender.png (547.44 KiB) Viewed 1532 times
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Punktanzahl eines mesh verkleinern

Post by bernd »

It seams Blender can not handle huge triangles ... My triangle edges are between 0.1 and 20 meters long ...

If I scal the whole mesh by 0.01 Blender opens it just fine ...

blender.png
blender.png (451.56 KiB) Viewed 1527 times
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Punktanzahl eines mesh verkleinern

Post by bernd »

das tool in blender funktioniert ganz gut. Mit der planar option kann ich auch den winkel für die verschmelzung angeben, sehr gut! Ich kann die punkte auf 1500 reduzieren, ohne für meinen workflow einen Inhaltsverlust zu haben. Blöd nur, wenn ich das mesh wieder als stl exportieren in FreeCAD importiere und daraus eine Shell (Part, Mesh2Shape) mache hat diese dann selfintersecting wires ... :(

bernd


blender.png
blender.png (405.27 KiB) Viewed 1520 times
abcb
Posts: 85
Joined: Tue Jan 08, 2019 2:26 pm

Re: Punktanzahl eines mesh verkleinern

Post by abcb »

Hast Du MeshLab auch versucht.
Ich denke es könnte Dein Problem besser als Blender lösen.
Viele Grüsse vom schönen Rüschlikon am Zürichsee

Andy
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Punktanzahl eines mesh verkleinern

Post by bernd »

meshlab has no problems with the huge mesh triangles. meshlab reduced mesh has selfintersections too.


Screenshot_20190809_000454.png
Screenshot_20190809_000454.png (325.25 KiB) Viewed 1469 times
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Punktanzahl eines mesh verkleinern

Post by bernd »

I used this filter in meshlab https://help.sketchfab.com/hc/en-us/art ... ng-a-model One just puts in a percentage. In blender I like the planar simplification where it is possible to put in the angle.
wmayer
Founder
Posts: 20307
Joined: Thu Feb 19, 2009 10:32 am
Contact:

Re: Punktanzahl eines mesh verkleinern

Post by wmayer »

Warum in die Ferne schweifen, wenn das Gute ist so nah?

Code: Select all

mesh=App.ActiveDocument.ActiveObject.Mesh.copy()
mesh.decimate(0.5, 0.5)
import Mesh
Mesh.show(mesh)
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Punktanzahl eines mesh verkleinern

Post by bernd »

wmayer wrote: Fri Aug 09, 2019 7:37 pm Warum in die Ferne schweifen, wenn das Gute ist so nah?

Code: Select all

mesh=App.ActiveDocument.ActiveObject.Mesh.copy()
mesh.decimate(0.5, 0.5)
import Mesh
Mesh.show(mesh)
wow werner thats cool.

Code: Select all

>>> 
>>> help( mesh.decimate)
Help on built-in function decimate:

decimate(...) method of Mesh.MeshObject instance
    Decimate the mesh
    decimate(tolerance(Float), reduction(Float))
    tolerance: maximum error
    reduction: reduction factor must be in the range [0.0,1.0]
    Example:
    mesh.decimate(0.5, 0.1) # reduction by up to 10 percent
    mesh.decimate(0.5, 0.9) # reduction by up to 90 percent

>>> 
What does the tolerance respectively maximum error mean ?
Post Reply