Top Banner
Spline-artige Kurven auf Subdivision Surfaces Jörn Loviscach Hochschule Bremen, Germany
26

Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Aug 10, 2019

Download

Documents

phungnhi
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Spline-artige Kurvenauf Subdivision Surfaces

Jörn LoviscachHochschule Bremen, Germany

Page 2: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Überblick

● Spline-artige Kurven auf Spline-Flächen● Kurven auf SDS: Problem, Anwendung● Verwandte Arbeiten● Spline-artige Kurven auf SDS● Implementierung mit Grafik-Hardware● Ausblick: Spline-Kurven auf Polyedern● Zusammenfassung

Page 3: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Spline-artige Kurvenauf Spline-Flächen

Anwendung:● Trimmung, Boolesche Operationen● Bewegungspfade● Pinselstriche

Demo:Alias Maya

Page 4: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Typische Lösung:Spline-artige Kurvenauf NURBS

Problem:unterteilt gemäß Patches

und deshalb:● unhandliche Bearbeitung● Kontinuitätsprobleme

Demo: Alias Maya

Page 5: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Kurven aufSubdivision Surfaces (SDS)

SDS üblich für organische Modelle.Demo: Alias Maya

Anwendung von Kurven ebenfalls:● Trimmung, Boolesche Operationen● Bewegungspfade● Pinselstriche

Page 6: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Kurven aufSubdivision Surfaces (SDS)

Wie kann man Kurvenauf SDS definieren?z.B. über eine (lokale) Parametrisierung

vgl. Kurve auf Spline-Patch:

Page 7: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Kurven aufSubdivision Surfaces (SDS)

natürliche Parametrisierung von SDS: ursprünglicher Polyeder

1. Unterteilung

2. Unterteilung

3. Unterteilung

Grenzfläche

Page 8: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Verwandte Arbeiten● Altafini: The De Casteljau algorithm on SE(3). 2000● Buss/Fillmore: Spherical averages and applications to spherical splines and interpolation. 2001

● Pottmann/Leopoldseder/Hofer: Approximationwith active B-spline curves and surfaces. 2002

● Litke/Levin/Schröder: Trimmingfor subdivision surfaces. 2001

● Biermann/Kristjansson/Zorin: Approximate Boolean operations on free-form solids. 2001

● Stam: Exact evaluation of Catmull-Clark subdivision surfaces at arbitrary parameter values. 1998

Page 9: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Spline-artige Kurven auf SDS

● Prototyp basierend auf Loop SDS● quadratische oder kubische Splines● Hardware-Beschleunigung

Demo:

Prototyp

Page 10: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Prinzip

Schritt 1:Steuerpunkte aufder Grenzflächemarkieren

Page 11: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Prinzip

Schritt 2:Steuerpunkte mittelsnatürlicher Para-metrisierung aufden ursprüng-lichen Polyederabbilden

Page 12: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Prinzip

Schritt 3:lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten);dort die Spline-Kurve bilden

Page 13: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Prinzip

Schritt 4:die Kurve aufdie Grenzflächezurück abbilden

Page 14: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Prinzip

●Resultat ist C1 (für quadratischen Spline) bzw. C2 (für kubischen Spline) jenseits von extraordinären Punkten

●Einschränkung: Immer drei (kubisch: vier) aufeinander folgende Steuerpunkte fallenin höchstens dreianeinandergrenzende Dreiecke

Page 15: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Implementierung

●Echtzeit-Darstellung und -Editierung beschleunigt durch Grafik-Hardware

●statt der Grenzfläche eine hinreichend feine Unterteilung des ursprünglichen Polyeders dargestellt

●Parametrisierung mit Hilfe von Texturen ausgewertet

●Kurve mittels Textur gezeichnet

Page 16: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Rendering

Schritt 1:Starte mit einerhinreichend feinenUnterteilung.

Page 17: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Rendering

Schritt 2:Speichere Steuer-punkte daraufin der natürlichenParametrisierung.

Page 18: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Rendering

Schritt 3:Bestimme Splineslokal auf einemhexagonalenGitter.

Page 19: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Rendering

Schritt 4:Mappe das Ergebnisals Textur aufdie Fläche; Textur-koordinaten durchSubdivisionerzeugt.

Page 20: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Rendering

● MIP-Mapping,damit trotzArbeit mit Texturnahe und ferneLinien und Punktegleich starkerscheinen.

● Antialiasing● Render-to-Texture

Page 21: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Bearbeitung

Steuerpunkte auf dem Bildschirm hinzufügen, löschen und verschieben:

Finde zum 2D-Mauszeigerdie Parameter desentsprechendenFlächenpunkts:Dreiecksnummer,baryzentrischeKoordinaten.

Page 22: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Bearbeitung

Lösung:● Objekt mit einerweiteren Textur rendern

● Textur enthält die Para-meter codiert als Farben

● in nicht sichtbarenPuffer rendern

Demo: Prototyp

Page 23: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Ausblick

● Was ist, wenn die Steuerpunktezu weit voneinanderentfernt sind?

● Was ist mit anderenUnterteilungsver-fahren für SDS?(Catmull-Clark!)

?

Page 24: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Ausblick

Anderer Ansatz:● Spline-artige Kurven auf Polyedern● SDS als Grenzflächen von Polyedern:

Konvergenz der Kurven untersuchen

Natürliche und (relativ) gut berechenbare Kurven auf Polyedern:Geodätische.Splines mit Geodätischen konstruieren?!

Page 25: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Ausblick

Splines mit Geodätischen:Altafini: The De Casteljau algorithm on SE(3). 2000

● Bestimme Kurven durch die üblichen Unterteilungsverfahren.

● Aber benutze Geodätische auf Flächen statt Strecken in der Ebene.

Page 26: Spline-artige Kurven auf Subdivision Surfaces · lokal vom ursprünglichen Polyeder auf regelmäßiges hexagonales Gitter abbilden (baryzentrische Koordinaten); dort die Spline-Kurve

Zusammenfassung

●Spline-artige Kurven auf SDSals Zugang zu neuen Wegen vonModellierung, Animationund Texturierung

●Prototyp: natürliche Parametrisierung, Abbildungen mittels Texturen Hardware-beschleunigt

●Ansatz für Alternative: Splines auf Polyedern mittels Geodätischen