NURBS

NURBS příklad
NURBS příklad

Non-uniform rational basis spline (NURBS) je matematický model běžně používaný v počítačové grafice pro generování a reprezentování křivek a ploch, které nabízejí velkou flexibilitu a přesnost při manipulaci jak s analytickými tak s volnými tvary.

Historie

Vývoj NURBS začal v padesátých letech 20. století kvůli potřebě matematicky přesně reprezentovat volné tvary jako trupy lodí, vnější povrchy letadel, aeroplánů, a karoserie automobilů, které by mohly být přesně reprodukovány, kdykoliv je to technicky nutné. Předchozí reprezentace takovýchto druhů povrchů existovaly jen jako fyzikální modely vytvořené designéry.

Průkopníky tohoto vývoje byli Pierre Bézier, který pracoval jako inženýr pro Renault, a Paul de Casteljau, který pracoval pro Citroën, oba ve Francii. Bézier pracoval téměř paralelně s de Castejauem, aniž by o sobě navzájem věděli. Ale jelikož Bézier publikoval výsledky své práce, tak dnešní běžný uživatel počítačové grafiky zná křivky – které jsou reprezentovány body ležícími na křivce samotné – jako Bézierovy křivky, zatímco de Casteljauovo jméno je známé a používané jen pro algoritmy, které vyvinul pro vyhodnocování parametrických povrchů. V 60. letech 20. století vyšlo najevo, že NURBS jsou zobecněné Bézierovy křivky, které lze považovat za neuniformní racionální B-spline křivky.

Z počátku byli NURBS používány pouze v CAD programech v automobilových společnostech. Později se staly součástí běžných počítačových grafických programů.

Použití

Lodní trup vytvořený pomocí NURBS.

NURBS jsou běžně používané v computer-aided design (CAD), manufacturing (CAM), a engineering (CAE), a jsou také součástí mnoha průmyslových široce používaných standardů jako IGES, STEP, ACISPHIGS. Nástroj NURBS nalezneme také v různých 3D modelovacích a animačních programech jako Blender, Maya, Rhino3D, Cinema4D, Cobalt, form•ZSolid Modeling Solutions. Existují ještě jiné programy než tyto, specializované přímo na NURBS modelování jako Autodesk Alias SurfacesolidThinking.

NURBS umožňují reprezentaci geometrických tvarů v kompaktní formě. Mohou být efektivně ovládány počítačovými programy a přitom umožňují snadnou lidskou interakci. NURBS povrchy jsou funkce dvou parametrů mapovaných na povrch v třírozměrném prostoru. Tvar povrchu je dán kontrolními body.

Nástroje využívající výhody a vlastnosti NURBS mohou vytvořit povrchy s různou úrovní geometrické návaznosti:

Poziční návaznost (G0)
Poziční návaznost se vyskytuje vždy, když je pozice dvou křivek nebo povrchů náhodná. Tyto křivky/povrchy vytvářejí ostré hrany/rohy a ty způsobují zalomené osvětlení/stínování.
Tangenciální návaznost (G1)
Tangenciální návaznost vyžaduje, aby koncové vektory křivek/povrchů ovládaly danou ostrou hranu. Jelikož osvětlení dopadá dopadá na tangenciálně návaznou hranu, stínování je spojité a vypadá přirozeně. Tato úroveň návaznosti je často dostačující.
Křivková návaznost (G2)
Křivková návaznost vyžaduje, aby koncové vektory měly stejnou délku a stejnou rychlost změny délky. Osvětlení dopadající na křivkově návazné hrany nevytváří žádné rozdíly ve stínování a tím se tyto dva povrchy jeví jako jeden. Vizuálně to lze považovat za „dokonale hladký“ přechod. Tato úroveň návaznosti je velmi užitečná při tvorbě modelů vyžadujících mnoho bikubických dílů složených do jednoho povrchu.

Technická specifikace

Křivka NURBS je definována svým pořadím, skupinou kontrolních bodů s různou váhou a uzlovými vektory. NURBS křivky a povrchy se vytvářejí zevšeobecňováním obou B-splineBézierových křivek a ploch. Hlavním rozdílem je, že kontrolnímu bodu byla dána váha, to dělá NURBS křivky racionální (neracionální B-spline křivky jsou speciálním případem racionálních B-spline křivek).

ukázka prvků ovládání NURBS povrchů
ukázka prvků ovládání NURBS povrchů

Vyhodnocením funkcí křivek NURBS s různými hodnotami parametrů, můžeme křivku prezentovat ve dvourozměrné nebo třírozměrné kartézské soustavě souřadnic. Stejně tak vyhodnocením funkcí povrchů NURBS s různými hodnotami parametrů, může být povrch prezentován v kartézské soustavě souřadnic.

Křivky a povrchy NURBS jsou užitečné z mnoha důvodů:

  • Jsou neměnné při afinních i perspektivních transformacích: např. rotaci nebo překlad můžeme aplikovat na NURBS křivku nebo povrch aplikováním těchto operací na její kontrolní bod.
  • Nabízejí jeden společný matematický vzorec jak pro standardní analytické tvary (např. kuželosečka), tak i volné tvary.
  • Poskytují flexibilitu pro návrh široké škály tvarů.
  • Snižují spotřebu paměti při ukládání tvarů (v porovnání s jednoduššími metodami).
  • Jejich funkce mohou být vyhodnoceny rozumně rychle numericky stabilními a přesnými algoritmy.

Obecná rovnice NURBS křivky

Pro definici NURBS křivek používáme bázové funkce, které značíme jako kde označuje -tý kontrolní bod a značí stupeň polynomu. Křivku potom defunujeme jako .

Křivka je deifnována svými kontrolními body a odpovídajícími výhami . Křivku můžeme rovněž zapsat v následujícím tvaru, kde se funkce nazývá racionální bázové funkce.

Obecná rovnice NURBS plochy

Pro rovnici plochy potřebujeme funkci dvou proměnných. Rovnici NURBS plochy získáme tensorovým součinem. Plochu definujeme pomocí řídících bodů a vah podobně jako při definici křivky a pro .

kde

reprezentují racionální bázové funkce.

Manipulace s NURBS objekty

křivka NURBS a její animovaná verze

Mnoho transformací může být použito na NURBS objekty. Například, pokud je nějaká křivka definována určitým stupněm a n kontrolními body, tak stejná křivka stejného stupně může být vyjádřena za pomoci n+1 kontrolních bodů. Při této operaci změní kontrolní body svoji pozici a je vložen uzel do uzlového vektoru. Když přidáme kontrolní bod, tvar křivky by měl zůstat stejný, což tvoří výchozí bod pro další úpravy. Některé z těchto operací jsou popsány níže.

Vložení uzlu

Jak už název napovídá, vložení uzlu vloží uzel do uzlového vektoru. Pokud je stupeň křivky n, tak n−1 kontrolních bodů je nahrazeno n novými. Tvar křivky zůstane stejný.

Uzel může být vložen vícekrát až do maximální násobnosti uzlu. To je někdy považováno za hladkost uzlu a může toho být dosaženo algoritmem který je více efektivní než opakované vkládání uzlů.

Odstranění uzlu

Účelem je odstranit uzel a přemístit kontrolní body tak aby tvar zůstal pokud možno stejný a bylo dosaženo kompaktnější prezentace křivky. Je zřejmé, že toto není vždy proveditelné při zachování stejného tvaru křivky. V praxi je definována míra přesnosti, která je použita pro zjištění zda může být uzel odstraněn nebo ne. Tento proces se používá k čištění po interaktivním modelování kde mohly být uzly vloženy ručně, po importování křivky z jiných souborů kde jednoduchý převod může vést k nadbytečnému počtu kontrolních bodů.

Zvýšení stupně křivky

Křivka NURBS určitého stupně může být vždy vyjádřena jinou křivkou NURBS vyššího stupně. Toto je často používáno při kombinování oddělených NURBS křivek, např. při tvorbě NURBS povrchu interpolací mezi sadou NURBS křivek nebo při sjednocování sousedních křivek. Při tomto procesu by měly být křivky různých stupňů sjednoceny na stejný stupeň, obvykle na nejvyšší stupeň jedné ze sady křivek.

Křivost

Nejdůležitější vlastností v diferenciální geometrii je křivost κ. To popisuje místní vlastnosti (hrany, rohy, atd.) a vztahy mezi první a druhou derivací a tím i přesný tvar křivky. Křivost lze za pomoci derivací snadno vypočítat nebo zaokrouhlením z druhé derivace můžeme vypočítat délku oblouku . Přímý výpočet křivosti křivky κ za pomoci těchto rovnic je velkou výhodou parametrických křivek oproti jejich polygonálnímu vyjádření.

Odkazy

Reference

V tomto článku byl použit překlad textu z článku Non-uniform rational B-spline na anglické Wikipedii.

Externí odkazy

Média použitá na této stránce

NURBS 3-D surface.gif
Autor: Greg A L, Licence: CC BY-SA 3.0
Animation of a NURBS surface. Modeled and rendered in Cobalt.
NURBstatic.svg
Autor: Original uploader was WulfTheSaxon at en.wikipedia.org, Licence: CC BY-SA 3.0
NURBS curve being created in NX Shape Studio
Surface modelling.svg
Autor: , Licence: CC BY-SA 3.0

Surface control point diagram used in freeform modeling.

Bit of an odd rendering issue, but is usable - will fix when I have time. Vladsinger (talk) 12:32, 1 August 2009 (UTC)
Motoryacht design i.png
(c) Freeformer, CC BY-SA 3.0
Concept design created in en:NX (Unigraphics).

(Freehand curve/surface, not based on any real boat)

Shows NURBS surface poles and trimmed surface boundary edges.