Mesh: Unterschied zwischen den Versionen
(→Abschätzungen für Dreiecks-Meshes) |
(→Abschätzungen für Dreiecks-Meshes) |
||
Zeile 54: | Zeile 54: | ||
: <tt>2*E = HE</tt> | : <tt>2*E = HE</tt> | ||
Zusammen mit der oben gezeigten Aussage <tt>2*E = 3*F</tt> setzen wir dies nun nacheinander in die vereinfachte Euler-Formel ein: | Zusammen mit der oben gezeigten Aussage <tt>2*E = 3*F</tt> setzen wir dies nun nacheinander in die vereinfachte Euler-Formel ein: | ||
− | : <tt>V - E + F | + | : <tt>V - E + F {{ASYMP}} 0</tt> |
− | : <tt><=> V - E + (2/3)*E | + | : <tt><=> V - E + (2/3)*E {{ASYMP}} 0</tt> |
− | : <tt><=> V - (1/3)*E | + | : <tt><=> V - (1/3)*E {{ASYMP}} 0</tt> |
− | : <tt><=> V - (1/6)*HE | + | : <tt><=> V - (1/6)*HE {{ASYMP}} 0</tt> |
− | : <tt><=> 6*V | + | : <tt><=> 6*V {{ASYMP}} HE</tt> |
− | Jeder Vertex ist also adjazent zu 6 Kanten. | + | Jeder Vertex ist also adjazent zu ungefähr 6 Kanten. |
===Vertices vs. Kanten=== | ===Vertices vs. Kanten=== | ||
− | Aus der Valenz-Abschätzung können wir auch eine Relation zwischen Vertices und Kanten herstellen. Es gilt <tt>2*E = HE</tt> und <tt>6*V | + | Aus der Valenz-Abschätzung können wir auch eine Relation zwischen Vertices und Kanten herstellen. Es gilt <tt>2*E = HE</tt> und <tt>6*V {{ASYMP}} HE</tt>, also gilt insgesamt <tt>3*V {{ASYMP}} E</tt> bzw. ungefähr dreimal so viele Kanten wie Vertices. |
Version vom 4. April 2009, 15:04 Uhr
Als Mesh (engl. für Netz) bezeichnet man die Menge an Vertices, welche ein Objekt formen. Die Vertices bilden zusammen eine Art Gitter oder Netz, welches die Oberfläche des Objektes abbildet. (siehe auch: Primitive)
Wenn man davon spricht, dass ein Objekt aus verschiedenen Meshes besteht, dann heißt dies, dass das Objekt aus verschiedenen Teilobjekten zusammen gesetzt ist. In vielen Modellformaten (z.B. 3ds, das Format von 3D Studio Max) werden alle Vertices eines Geometrieobjektes (das sind die Basisobjekte die 3D Studio Max anbietet. Z.B. Würfel, Kugel, etc.) einem Mesh zu geordnet. Besteht z.B. eine Figur aus den Einzelobjekten Kopf, Rumpf, Arm-Links, Arm-Rechts, Bein-Links, Bein-Rechts, so sind diese Einzelobjekte jeweils als ein Mesh in der 3ds Datei gespeichert. Jedes Mesh besteht dann wiederum aus vielen Vertices, die das oben genannte Gitter bilden.
Inhaltsverzeichnis
Eigenschaften
Ein Mesh kann diverse Eigenschaften haben. Aus diesen Eigenschaften lassen sich lassen sich Aussagen über das Verhältnis zwischen Vertices, Kanten (Edges) und Faces treffen.
2-Mannigfaltigkeit
2-Mannigfaltigkeit ist eine wichtige Eigenschaft. Einfach ausgedrückt ist sie gegeben, wenn das Mesh aus einer einfachen Oberfläche besteht an der keine zusätzlichen Teile angebracht sind. Eine etwas formalere Definition folgt nun. Eine alternative Definition findet sich bei Wikipedia.
Ein Mesh ist 2-mannigfaltig, wenn die folgenden Eigenschaften gegeben sind.
- Local Disc Property: Um jeden beliebigen Punkt auf dem Mesh lässt sich immer eine ε-Umgebung (= Kugel mit Radius ε > 0) finden, so dass die Schnittmenge aus ε-Umgebung und Mesh homöomorph (nicht verwechseln mit homomorph) zu einer planaren Scheibe ist. Sofern es sich um einen Punkt auf dem Rand handelt, kann die Schnittmenge auch homöomorph zu einem Halbkreis sein.
- Edge Ordering Property: Die Nachbarvertices eines jeden Vertex lassen sich eindeutig im Uhrzeigersinn aufzählen.
- Face Count Property: Jede innere Kante hat genau zwei adjazente Faces. Jede Kante die am Rand liegt hat genau ein adjazentes Face.
Geschlossenheit
Ein Mesh heißt geschlossen, wenn es keinen Rand besitzt. Insbesondere besitzt das Mesh also ein "innen" und ein "außen". Ist das Mesh gleichzeitig auch 2-mannigfaltig, besitzt jede Kante genau zwei adjazente Faces.
Euler-Formel
Für geschlossene und 2-mannigfaltige Meshes gilt die Euler-Formel:
- V - E + F = 2(1-g)
Die Variablen V, E und F stehen dabei für die Anzahl der Vertices, Kanten (Edges) und Faces. Die Variable g steht für den Genus des Objektes. Intuitiv ist der Genus eines Meshes die Anzahl der "Griffe". Ein Bild erklärt dies wohl am besten.
Ein doppelter Torus, also mit zwei Löchern, hätte dann den Genus Zwei. Sofern das Mesh nicht geschlossen ist, rechnet man einfach mit zusätzlichen Faces, welches das Mesh schließen. Aus diesem Grund ist der Genus der Röhre im obigen Bild auch Null. An jedem Ende der Röhre wird je ein Face benötigt welches die offenen Kanten abschließt. Üblicherweise ist der Genus im Vergleich zur Anzahl der Vertices und Faces sehr klein. Er wird aus diesem Grunde wird der Genus häufig als konstant angenommen. Für Abschätzungen bei denen es sowieso nur auf die ungefähre Größenordnung ankommt wird daher meist die vereinfachte Formel verwendet:
- V - E + F = 0
Abschätzungen für Dreiecks-Meshes
Die im folgenden gezeigten Aussagen sind zum Teil nur Abschätzungen. Es gilt also keine echte Gleichheit, da der Genus zum Teil vernachlässigt wird! |
Kanten vs. Faces
In einem geschlossenen und 2-mannigfaltigen Dreiecks-Mesh gibt es 1.5 mal so viele Kanten wie Faces. Es gilt also:
- 2*E = 3*F
Die obige Aussage lässt sich leicht nachvollziehen. Aufgrund der Geschlossenheit und 2-Mannigfaltigkeit besitzt jede Kante genau zwei adjazente Faces. Wir teilen nun jede Kante der Länge nach in zwei Teile und können so jedem Face eindeutig eine sogenannte Halbkante zuordnen. Offensichtlich gibt es doppelt so viele Halbkanten wie Kanten, also:
- 2*E = HE
Zusätzlich sind jedem Face drei Halbkanten zugeordnet, damit gilt:
- HE = 3*F
Insgesamt folgt also
- 2*E = 3*F
Diese Aussage gilt unabhängig vom Genus.
Valenz
Die Valenz eines Vertex ist die Anzahl der Kanten zu denen er gehört. Diese Zahl ist gleich der Anzahl der Faces zu denen der Vertex gehört. In einem geschlossenen und 2-mannigfaltigen Dreiecks-Mesh mit vernachlässigbarem Genus beträgt durchschnittliche Vertexvalenz ungefähr 6. Also gehört jeder Vertex im Durchschnitt zu 6 Dreiecken. Diese Aussage hilft zum Beispiel den eingesparten Speicherplatz bei Verwendung von Indices abzuschätzen.
Auch diese Aussage lässt sich leicht zeigen. Dieses mal teilen wir jede Kante in der Mitte zwischen den Vertices und erhalten wieder zwei Halbkanten. Jede Halbkante eindeutig einem Vertex zugewiesen werden. Offensichtlich haben wir wieder doppelt so viele Halbkanten wie Kanten.
- 2*E = HE
Zusammen mit der oben gezeigten Aussage 2*E = 3*F setzen wir dies nun nacheinander in die vereinfachte Euler-Formel ein:
- V - E + F ≈ 0
- <=> V - E + (2/3)*E ≈ 0
- <=> V - (1/3)*E ≈ 0
- <=> V - (1/6)*HE ≈ 0
- <=> 6*V ≈ HE
Jeder Vertex ist also adjazent zu ungefähr 6 Kanten.
Vertices vs. Kanten
Aus der Valenz-Abschätzung können wir auch eine Relation zwischen Vertices und Kanten herstellen. Es gilt 2*E = HE und 6*V ≈ HE, also gilt insgesamt 3*V ≈ E bzw. ungefähr dreimal so viele Kanten wie Vertices.