kevin keul - userpages.uni-koblenz.decg/ss13/cg3/cg3_uebung_3.pdf · kevin keul arbeitsgruppe...

45
B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung ¨ Ubungsstunde 3 zu Computergrafik 3 Kevin Keul Institut f¨ ur Computervisualistik Universit¨ at Koblenz 01. Juli 2013 Kevin Keul Arbeitsgruppe Computergrafik ¨ Ubungsstunde 3 zu Computergrafik 3

Upload: others

Post on 18-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Ubungsstunde 3 zu Computergrafik 3

Kevin Keul

Institut fur ComputervisualistikUniversitat Koblenz

01. Juli 2013

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 2: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Inhaltsverzeichnis

1 B-SplinesWiederholungErweiterung: Nicht uniforme Knotenvektoren (NURBS)Erweiterung: GewichteErweiterung: Flachen

2 Aufgabe 1: B-SplinesB-Splines und NURBS

3 Aufgabe 2: Zweifacher DeCasteljauAllgemeinesAufgabe 2

4 Implementierung

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 3: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Wiederholung

B-Splines (Basis-Splines) bieten eine einfache, aber machtigeReprasentation von Kurven und Freiformflachen

Bezier-Kurven sind ein Spezialfall von B-Splines

Lokale Kontrolle (Kontrollpunkte andern Kurven nur lokal)

Anzahl der Kontrollpunkte beeinflusst nicht die Komplexitatder Kurve

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 4: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Wiederholung

Frage

Wann ist ein B-Spline eine Bezier-Kurve?

Antwort

Wenn der Knotenvektor nur aus Nullen und Einsen besteht, also n= k gilt.

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 5: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Wiederholung

Frage

Wann ist ein B-Spline eine Bezier-Kurve?

Antwort

Wenn der Knotenvektor nur aus Nullen und Einsen besteht, also n= k gilt.

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 6: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Wiederholung

B-Splines: Formale Definition

Formel

C (t) =∑n

i=1 BiNi ,k(t)

n = Anzahl der Kontrollpunkte

k = Ordnung

Bi sind die Kontrollpunkte

Ni ,k(t) sind die Basisfunktionen (Cox-de-Boor-Rekursion)

Basisfunktionen

Ni ,k =(t−xi )Ni,k−1(t)

xi+k−1−xi+

(xi+k−t)Ni+1,k−1(t)xi+k−xi+1

Ni ,1(t) =

{1 wenn xi ≤ t < xi+1

0 sonst

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 7: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Wiederholung

Frage

Wie ist nun das genaue Vorgehen fur das Rendern eines B-Splines?

Antwort

1 Benutzer definiert Kontrollpunkte.

2 Grad des Splines wird definiert (entweder durch Benutzer oderintern)

3 Definition, ob geschlossene oder offene Kurve

4 Automatische Berechnung des uniformen Knotenvektors(offen oder periodisch)

5 Automatische Berechnung des gultigen Parameterbereichs

6 Schleife uber Parameter t im gultigen Parameterbereich,Werte der Basisfunktionen fur jedes t werden bestimmt

7 Punkt auf der Kurve ergibt sich mit Hilfe der Kontrollpunkte(P(t) = ...)

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 8: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Erweiterung: Nicht uniforme Knotenvektoren (NURBS)

Durch Ordnung und Wahl von offenem oder perdiodischemTyp ist ein uniformer Knotenvektor eindeutig definiert

Knotenvektoren konnen aber auch ungleichmaßige(nicht-uniforme) Abstande haben: [0 0.2 0.9 2.6 2.7 2.7 2.7 3]

Die geometrische Deutung ist schwierig

Der Knotenvektor beeinflusst die Basisfunktionen, diesewiederum das Aussehen der Kurve

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 9: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Erweiterung: Nicht uniforme Knotenvektoren (NURBS)

Uniformer Knotenvektor

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 10: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Erweiterung: Nicht uniforme Knotenvektoren (NURBS)

Nicht-uniformer Knotenvektor

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 11: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Erweiterung: Gewichte

Warum Gewichte?

Gewichte erhohen die Flexibilitat

Jedem Kontrollpunkt kann ein Gewicht zugewiesen werden

Aber: Wenig Verwendung in der ”echten Welt”

Eigenschaften von Gewichten

Alle Gewichte = 1 → Normales B-Spline

Ein Gewicht zwischen 0 und 1 reduziert den Einfluss desPunktes, ein Wert > 1 zieht die Kurve naher an den Punkt

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 12: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Erweiterung: Gewichte

Rationale B-Splines

C (t) =∑n

i=1 Bhi Ni ,k(t)

Projektion in 3D

C (t) =∑n

i=1 BihiNi,k (t)∑ni=1 hiNi,k (t)

Selbe Basisfunktionen wie B-Splines

Negative Gewichte sind moglich, aber ”bose”

Eselsbrucke: Rationale Zahlen: Bruche

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 13: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Erweiterung: Gewichte

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 14: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Erweiterung: Flachen

Zusatzliche parametrische Richtung

S(u, v) =∑n

i=1

∑mj=1 B

hi ,jNi ,k(u)Mj ,l(v)

n × m Kontrollpunkte

Der Grad kann fur jede parametrische Richtung einzelnfestgelegt werden

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 15: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Erweiterung: Flachen

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 16: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

B-Splines und NURBS

Wdh.: Grad und Ordnung

Grad beeinflusst die Anzahl der Kontrollpunkte, die aktiv aneinem bestimmten Punkt Einfluss ausuben

Achtung: Ordnung k = Grad + 1

Maximal: k = n

Maximaler Grad: Anzahl Kontrollpunkte - 1

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 17: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

B-Splines und NURBS

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 18: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

B-Splines und NURBS

Offene Knotenvektoren

n+k Elemente

monoton steigend

k Wiederholungen der Werte am Anfang und Ende

Beispiel

k = 1: [0 1 2 3]k = 2: [0 0 1 2 2]k = 3: [0 0 0 1 1 1]

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 19: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

B-Splines und NURBS

Periodische Knotenvektoren

k - 1 Elemente am Anfang und Ende ”gelten” nicht.

Beispiel

k = 1: [0 1 2 3], gultig fur 0 ≤ t < 3k = 2: [ 6 0 1 2 3 6 4], gultig fur 1 ≤ t < 3k = 3: [ 6 0 6 1 2 3 6 4 6 5], gultig fur 2 ≤ t < 3

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 20: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

B-Splines und NURBS

A 1.1

Berechnen Sie N1,2, N2,2, N3,2 fur den Bereich 2 ≤ t < 3!

Basisfunktionen

Ni ,k =(t−xi )Ni,k−1(t)

xi+k−1−xi+

(xi+k−t)Ni+1,k−1(t)xi+k−xi+1

Ni ,1(t) =

{1 wenn xi ≤ t < xi+1

0 sonst

Knotenvektor

k = 2: [ 6 0 1 2 3 6 4], gultig in 1 ≤ t < 3

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 21: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

B-Splines und NURBS

Welches Ergebnis wurden wir erwarten? Dies konnen wir durchSkizzieren der Basisfunktionen beantworten.

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 22: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

B-Splines und NURBS

A 1.1

Berechnen Sie N1,2, N2,2, N3,2 fur den Bereich 2 ≤ t < 3!

N1,2

N1,2 =(t−x1)N1,1

x2−x1+

(x3−t)N2,1

x3−x2

N1,2 = (t−0)01 + (2−t)0

1 = 0

N2,2

N2,2 =(t−x2)N2,1

x3−x2+

(x4−t)N3,1

x4−x3

N2,2 = (t−1)01 + (3−t)1

1 = 3− t

N3,2

N3,2 = (t−2)11 + (4−t)0

1 = t − 2

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 23: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

B-Splines und NURBS

A 1.2

Bestimmen Sie den Punkt P(t) auf der Kurve fur t = 2.

Berechnete Basisfunktionen

N1,2(t) = 0

N2,2(t) = 3− t

N3,2(t) = t − 2

Einsetzen in die B-Spline-Gleichung

Gleichung: P(t) = B1N1,2(t) + B2N2,2(t) + B3N3,2(t)

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 24: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

B-Splines und NURBS

A 1.2

Bestimmen Sie den Punkt P(t) auf der Kurve fur t = 2.

Berechnete Basisfunktionen

N1,2(t) = 0

N2,2(t) = 3− t

N3,2(t) = t − 2

Einsetzen in die B-Spline-Gleichung

Gleichung: P(t) = B1N1,2(t) + B2N2,2(t) + B3N3,2(t)

B10 + B2(3− t) + B3(t − 2)

Fur t=2: P(2) = B2(3− 2) + B3(2− 2) = B2

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 25: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

B-Splines und NURBS

A 1.3 NURBS-Punktevaluation

Evaluation an gleicher Stelle, aber B2 wird mit w2 = 10 gewichtet.

NURBS-Gleichung

P(t) =w1B1N1,2(t)+w2B2N2,2(t)+w3B3N3,2(t)

w1N1,2(t)+w2N2,2(t)+w3N3,2(t)

Eingesetzt

P(t) =B1N1,2(t)+10B2N2,2(t)+B3N3,2(t)

10

= 10B210 = B2

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 26: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

B-Splines und NURBS

A 1.4

Wieso kommt bei gleichem Parameterwert, aber verschiedenenGewichten das selbe Ergebnis raus?

Uberlegungen

Ordnung 2 → Grad ist linear, also simple Verbindung derKontrollpunkte

Ein Gewicht > 1 zieht die Kurve naher an den Kontrollpunkt

Dies macht im linearen Fall keinen Unterschied

Auch ein Gewicht < 1 wurde die Kurve im linearen Fall nichtandern

Folglich: Gewichte spielen bei Ordnung 2 keine Rolle

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 27: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

B-Splines und NURBS

A 1.5

Gewicht von 0

Kann das Gewicht eines Punktes auch 0 sein?

NURBS-Gleichung

P(t) =w1B1N1,2(t)+w2B2N2,2(t)+w3B3N3,2(t)

w1N1,2(t)+w2N2,2(t)+w3N3,2(t)

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 28: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

B-Splines und NURBS

A 1.5

Gewicht von 0

Eliminiert den Einfluss eines Punktes

Erzeugt ggf. Singularitat (undefinierter Punkt)

w2 = 10→ 10B2

10 = B2

w2 = 0→ 0B2

0 = . . .

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 29: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Allgemeines

Uberlegungen

Evaluationen auf Bezier-Patches konnen mit demDeCasteljau-Algorithmus berechnet werden

Prinzip: Mehrfache Anwendung dieses Algorithmus

S(u, v) =∑n

i=0

∑mj=0 Bi ,jNni (u)Mmj(v)

anders hingeschrieben:S(u, v) =

∑ni=0Nni (u)

∑mj=0 Bi ,jMmj(v)

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 30: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Allgemeines

Was bedeutet das?

Erst Punkte auf allen Kurven in v-Richtung berchnen

Dann zwischen diesen berechneten Punkten in der eigentlichgewunschten u-Richtung rechnen

Die Reihenfolge der Richtung ist egal!

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 31: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Aufgabe 2

A 2.1

Gegeben: Alle Kontrollpunkte fur ein 3× 3 Bezier-Patch

Gesucht: Funktionswerte an den Stellenu = 0.5, v = 0.5u = 0.75, v = 0.75

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 32: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Aufgabe 2

A 2.1

u-Richtung

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 33: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Aufgabe 2

A 2.1

u-Richtung

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 34: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Aufgabe 2

A 2.1

u-Richtung

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 35: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Aufgabe 2

Die Ergebnisse der letzten Schritte liefern die Kontrollpunkteeiner neuen Bezier-Kurve

Selbes Verfahren noch einmal auf sie anwenden.

Anmerkung: Der Algorithmus wurde nur anhand des Hohenwertesdemonstriert. Tatsachlich mussen Punkte verwendet werden (hier:(2.0, 1.875, 2.0)).

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 36: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Aufgabe 2

A 2.1

Nun fur u = 0.75 und v = 0.75.

Was bedeutet das?

0.25 ·Wertlinks + 0.75 ·Wertrechts

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 37: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Aufgabe 2

A 2.1

Nun fur u = 0.75 und v = 0.75.

Was bedeutet das?

0.25 ·Wertlinks + 0.75 ·Wertrechts

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 38: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Aufgabe 2

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 39: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

OpenGL bietet die Moglichkeit, Bezier-Patches zu rendern

Nur Triangulierung

D. h.: An die Grafikhardware gehen nach wie vor nur Dreiecke

Vorgehen

1 Datenstruktur fur Kontrollpunkte anlegen

2 Initialisierung der OpenGL-Umgebung (Evaluator anlegen)

3 Zeichnen des Patches

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 40: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Datenstruktur: 2D-Array von 3D-Vektoren

GLfloat points[NUMX][NUMZ ][3] = {

{ {1,2,1}, {1,0,2}, {1,2,3} },

{ {2,0,1}, {2,6,2}, {2,0,3} },

{ {3,0,1}, {3,0,2}, {3,2,2} }

};

Ein Zugriff auf points[1,1,1] ist beispielsweise die y-Koordinatedes mittleren Punktes (6).

OpenGL erwartet die Punktdaten in einem solchen Format

Bei Laden von externen Daten mussen sie ggf. in ein solchesArray kopiert werden

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 41: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Vorgehen in OpenGL

2D Evaluator initialisieren

glMap2f(GL_MAP2_VERTEX_3 , 0, 1, 3, 3, 0, 1,

3*3, 3, &points [0][0][0]);

Signatur:

void glMap2f(GLenum target , GLfloat u1 ,

GLfloat u2 , GLint ustride , GLint uorder ,

GLfloat v1 , GLfloat v2 , GLint vstride , GLint

vorder , const GLfloat *points);

Definiert wie Punkte auf einer Oberflache berechnet werden.Das ”Ergebnis” eines Evaluators sind normaleOpenGL-Befehle, z. B.: glVertex, glNormal, glTexCord,glColor

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 42: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

void glMap2f(GLenum target , GLfloat u1 , GLfloat

u2 , GLint ustride , GLint uorder ,

GLfloat v1 , GLfloat v2 , GLint vstride , GLint

vorder , const GLfloat *points);

target: Format, in dem die Punkte vorliegen

u1, u2: Parameterbereich

uStride: Anzahl Float-Werte bis zum nachsten Kontrollpunkt

uorder: Ordnung d. Basisfunktion

Analog fur v

points: zeigt auf Array der Kontrollpunkte

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 43: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Evaluator und automatische Normalberechnung

glEnable(GL_MAP2_VERTEX_3);

glEnable(GL_AUTO_NORMAL);

Parameterpaare fur (u,v) erzeugen, die der Evaluator als Eingabebenutzt

glMapGrid2f (30, 0, 1, 30, 0, 1);

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 44: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

void glMapGrid2f(GLint un , GLfloat u1 , GLfloat

u2 , GLint vn , GLfloat v1, GLfloat v2);

Evaluator allgemein

un: Anzahl der Stellen, an denen ein Punkt evaluiert wird

u1: Beginn des Parameterbereiches

u2: Ende des Parameterbereiches

Analog fur v

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3

Page 45: Kevin Keul - userpages.uni-koblenz.decg/ss13/cg3/CG3_Uebung_3.pdf · Kevin Keul Arbeitsgruppe Computergra k Ubungsstunde 3 zu Computergra k 3 B-Splines Aufgabe 1: B-Splines Aufgabe

B-Splines Aufgabe 1: B-Splines Aufgabe 2: Zweifacher DeCasteljau Implementierung

Nun muss in der display() noch gezeichnet werden:

glEvalMesh2(GL_FILL , 0, 30, 0, 30);

glEvalMesh2 ruft Evaluator auf, welcher mit den vorhergesetzten Parametern Dreiecke generiert und an dieGrafikhardware ubergibt

Mit GL POINT, GL LINE oder GL FILL wird bestimmt, wiegezeichnet wird

Damit lassen sich auch B-Splines oder NURBS rendern

Kevin Keul Arbeitsgruppe Computergrafik

Ubungsstunde 3 zu Computergrafik 3