Térbeli felületek modellezése

A térbeli felületeket általában a felhasználóhoz közel álló geometriai jellemzőkkel határozzuk meg. Ilyenek lehetnek, a pontok, érintők, érintősíkok, görbék. A görbék modellezése során megismert elméleti alapok többsége felhasználható a felületek modellezésénél is. Így beszélhetünk, interpolált és approximált felületről. Felületekkel vagy felület foltokkal modellezhetünk összetett alakzatokat, valamit az így létrehozott felületekről elmondhatjuk még azt is, hogy lehetnek globálisan és lokálisan változtathatóak. A térgörbék legnagyobb jelentősége tehát az, hogy segítségükkel térbeli felületeket hozhatunk létre. Ezért foglalkoztunk mi is olyan sokat velük. A kulcs tehát a görbék alkalmazása. Jól ismerjük például a Corel szemléletét, ugyebár mindent valamiféle görbével tudunk benne leírni. Ezeket a görbéket nevezzük nagy általánosságban Spline-nak a 3D-s grafikában.

Az egyszerűbb felületeknél ez könnyedén meg is valósítható, viszont a bonyolultabb felületek kialakításakor, gyakran adódik a felületek illesztésének a problémája. Ugyanis az egyes felületeket külön-külön megszerkeszthetjük, majd belőlük összeállíthatjuk a keresett objektumot. A szerkesztés során a kontrollpontokat összekötő görbék a felületeket foltokra (angolul patch) osztják, amelyek pontosan az említett görbék mentén helyezkednek el.

Láthatjuk a képen, hogy ezt a spline foltot 8 darab spline-nal írhatjuk le. A felületet leíró algoritmus mindig a kontrolpontok helyzetét figyelembe véve írja le a felületet, méghozzá a kívánt pontossággal, itt jön ki például az előnye az analitikus adatrendszereknek, hiszen ha egy ilyen felületre ránagyítunk, akkor teljesen folyamatosnak látjuk azt, nem úgy, mintha (diszkréten) lennének leírva a vektorai egyenként. Az előző ábrán leirt folt így néz ki, mint felület. A kontrolpontokkal jól kezelhető ez a felület. Láthatjuk, hogy bizonyos számú ilyen foltból leírható bármilyen felület ezt a modellezési technikát hívják "patch modelling"-nek. Viszont egyetlen egy ilyen felületből is sokfajta felületet képezhetünk. Például egyetlen egy foltból képezhetünk majd egy gömböt, de addig még sok munka vár ránk.

Felületgenerálás görbe mozgatással

Ha egy felület bármely pontján át húzható olyan egyenes, melynek pontjai a felülethez tartoznak, akkor azt a felületet vonalfelületnek nevezzük. A vonalfelületek közül a számítógépes grafikában legtöbbször azokat alkalmazzuk, melyeket két térgörbe pontjait kötik össze egyenes szakaszokkal. Ezt matematikailag a következő formában fogalmazhatjuk meg:

Tegyük fel, hogy a két egymással párhuzamos görbe által meghatározott "négyszögre" illesztünk egy vonalfelületet, valahogy úgy mintha egy pálcát tolnánk végig a két görbe mentén.

Lépésenként haladjunk végig az x tengelyen a zárt intervallumon:

Ha az A és B pontot összekötő egyenes függvényét szeretnénk megadni, akkor a következő két feltételnek kell teljesülnie:

Azaz a függvényértéknek az intervallum elején A-val, a végén pedig B-vel kell megegyeznie. Így a két ponton biztos keresztülhalad az egyenes. A feltételeknek megfelelően:

Nézzük meg a fentieket rögzített értékre (lásd ábra):

Ha és a két térgörbe egyenlete, akkor a két görbét összekötő egyenes szakasz a következőképen írható le:

ahol és

Ha nem rögzített érték, akkor

ahol és

Most a két egymással párhuzamos görbe által meghatározott "négyszög" másik két oldalát határozzák meg a görbék, és arra illesszünk vonalfelületet. A fentiekkel teljesen megegyezik, ezért a teljes részletességet nélkülözzük.

Ha és a két térgörbe egyenlete, akkor a két görbét összekötő egyenes szakasz a következőképen írható le:

ahol és

Ha nem rögzített érték, akkor

ahol és

Mindezekre azért volt szükség, mert a Coons-foltok (Coons patches) generálásakor két egymást metsző görbepár által meghatározott görbe oldalú "négyszögre" illesztünk egy interpolációs felületet.

Legyen tehát adva egy felület térbeli négyszög részét meghatározó paramétertartománya és ,,, görbék mint a felület oldalgörbéi. Ekkor képezzünk a fent megismert módon két felületet:

mely a szemközti oldalgörbéket interpolálja. Az ezekből előállított felület a következő lesz:

Az felületet a következőképen definiáljuk:

ahol: és

Ha és a két térgörbe egyenlete, akkor a két görbét összekötő egyenes szakasz a következőképen írható le:

ahol és

Ha nem rögzített érték, akkor:

    , és

Az ebből a

összefüggésből generált felületet Coons-foltnak nevezzük. mindegyik oldalgörbét interpolálja:

Ezzel készen is lennénk. Ezek lenének az alapok.

Paraméteres felületek

A Bézier és B-spline felületeket, mozgó és alakjukat változtató Bézier és B-spline görbékből származtatjuk. Legyenek egy Bézier vagy B-spline görbe kontrollpontjai melyeket mozgatni fogunk, ahol i=0,1,…n. A felületet így fogjuk származtatni, hogy az kontrollpontokat szintén Bézier vagy B-spline görbén mozgatjuk el. Az pályát meghatározó görbe kontrollpontjai legyenek a ahol j=0,1,…m pontok. Ezzel teljes egészében meghatároztuk azt a felületet, melyet az kontrolpontokkal rendelkező görbe a kontrollpontoknak megfelelő görbék mentén mozgatva a térben létrehoz. Ezeket paraméteres felületeknek nevezzük, amelyek kétváltozós polinomok:

    ahol

A polinomokat a görbékhez hasonlóan általában nem közvetlenül a polinom együtthatókkal, hanem a vezérlőpontokból súlyfüggvényekkel állítjuk elő. A származtatást matematikailag a Bézier-felületek példáján mutatjuk be. Legyen a mozgatott Bézier görbe a következő:

Feltételeink szerint az kontrollpont az

görbén mozog. Ezt figyelembevéve a létrejött felület egy pontjára

A súlyfüggvények egy kézenfekvő definíciójához jutunk, ha két, a görbéknél megismert súlyfüggvény szorzatát képezzük. Bézier-felültünk esetében a súlyfüggvény:

Bézier felületnek nevezzük tehát azokat a felületeket, melyeket úgy kapunk, hogy a mozgatott Bézier görbék kontrollpontjai szintén Bézier-görbéken mozognak. Nyilvánvaló, ha súlyfüggvények helyett a B-spline alapfüggvényeket alkalmazzuk a levezetésbe, minden nehézség nélkül megkapjuk a B-spline felületet:

Az ezzel a módszerrel előállított felületek már nagyon jó indulattal alkalmazhatók testek modellezésére, de organikus felületek, mint például egy emberi fej, vagy végtag előállításra még nem alkalmas ebben a formában. Biztosítanunk kell még a felületfoltok törés nélküli illeszkedését, az így előállított felületek simaságát. A modellezéssel szemben támasztott követelményeknek a NURBS felületek felelnek meg, de ezekről majd később ejtünk szót. Az ábrán látható, hogy paraméteres felületekkel mi minden tudunk reprezentálni.

Kiegészítés - Spline interpoláció

Bár a most következő kiegészítés egy régebbi témánk, mégis úgy érzem nem maradhat ki. Ugyanis nagy igyekezetemben az egyik legfontosabb interpolációs eljárásról nem esett szó, ez pedig a Spline. A hiányosságot itt igyekszem pótolni.

A spline interpoláció során a mérési pontokon lokálisan fektetünk át interpolációs polinomokat. Másodrendű közelítés esetén a polinom a következő:

Legyen a mérési pontok száma n+1 , azaz i = 0,1,2,...,n. Az intervallumok száma n darab, minden intervallum felett egy másodfokú közelítő polinomot alkalmazva, a polinomok együtthatóira vonatkozóan ez 3n ismeretlent jelent (ai, bi és ci). Ezeket az ismeretleneket a következő feltételek alapján határozhatjuk meg:

Az interpoláló polinom a mérési pontokban a mért függvényértéket kell, hogy szolgáltassa:

Ezeket természetesen csak a belső pontokra írhatjuk fel, így ezek 2(n-1), azaz 2n-2 feltételt szolgáltatnak.

Az első és utolsó függvény át kell, hogy menjen az első és utolsó ponton, ez további 2 feltételt biztosit:

Az első derivált a belső pontokban a kapcsolódó függvények esetén azonos. Mivel tudjuk, hogy az első derivált adott pontban az érintőt adja meg, ezért könnyen beláthatjuk, hogy ha egy adott pontban két görbe esetén az érintő azonos, a simaság feltétele teljesül:

Ez n-1 feltételt ad, tehát eddig összesen 2n-2+2+n-1= 3n-1 feltételünk van.

Tételezzük fel, hogy az első két pontot egyenessel kötjük össze, ekkor az első polinom második deriváltja zérus, azaz

Ezzel megvan a szükséges számú feltétel.

Példa:

Tekintsük a következő mérési pontokat, x = (3.0,4.5,7.0,9.0) és y = (2.5,1.0,2.5,0.5). Most tehát négy mérési pontunk van és n=3 intervallum. Az ismeretlenek száma: 3n= 9.

Az 1) feltétel típusból 2n-2 = (2× 3)-2 = 4 feltétel adódik:

A 2)-ból:

A 3) simasági feltételek, n-1 = 3-1 = 2,

Végül a 4) feltételből következik, hogy

Az ismeretlenekre tehát egy 8 ismeretlenes lineáris egyenletrendszer adódik, amely mátrix alakban a következő:

ahol

A megoldás:

Vagyis a közelítő polinomok az egyes intervallumokban:

Most aztán akad mit megemészteni a kedves olvasónak, de ez nem baj úgy gondolom. Legközelebb a projekti geometria alapjaival fogunk megismerkedni, addig is várom észrevételeiteket.

Felhasznált és ajánlott irodalom:

Foley, van Dam, Feiner, and Hughes: "Számítógépes grafika: Alapelvek és gyakorlat" c.
Dr. Szirmay-Kalos László: Számítógépes grafika, 2001
Scharnitzky Viktor: Vektorgeometria és lineáris algebra, 1999 (alap!)
L. Ammeraal: Programming Principles in Computer Graphics
Bárczy-Barnabás: Differenciálszámítás, 2001
Turcsányi Tamás, Debreceni Egyetem, 2000
Budai Attila: Számítógépes grafika, 1999
Füzi János: 3 dimenziós grafika és animáció IBM PC-n
Füzi János: Grafikai Alkalmazások Delphi Nyelven, 2000
Füzi János: Interaktív grafika, 1997