Coin3D je vysokoúrovňové API pro efektivní vývoj 3D grafiky kompatibilní s API Open Inventor 2.1.

Coin3D
Logo
VývojářKongsberg Oil & Gas Technologies
Aktuální verze4.0.3 (6. září 2024)
Operační systémmultiplatformní
Vyvíjeno vC++
Typ softwaruknihovna pro práci s 3D grafikou
LicenceBSD (trojbodová)
Webhttps://bitbucket.org/Coin3D/coin/wiki/Home
Některá data mohou pocházet z datové položky.

Vývoj a historie

editovat

Coin vznikl v roce 1995 jako knihovna pro vykreslování grafu scény pro scény VRML 1.0. Tato knihovna původně vznikla z knihovny Qv od SGI pro parsování VRML 1.0 souborů.

V roce 1998 se vývoje ujala společnost SIM (Systems In Motion), která byla později přejmenována na Kongsberg SIM a později sloučená s mateřskou společností Kongsberg Oil & Gas Technologies. Postupným rozšiřováním této knihovny se kód stával více a více nekonzistentním a bylo potřeba celou knihovnu přepsat od základu.

Svým API byl Coin podobný již existujícímu Open Inventoru, který byl často zmiňován v knihách o softwarovém inženýrství, a také vývojáři Coinu jej považovali za metodologicky dobře navržený. Navíc ve stejné době začal získávat značnou popularitu open-source software, proto se vývojáři rozhodli, že vytvoří open-source alternativu k Open Inventoru a po krátkém období přepisování vznikla knihovna se jménem Coin (odvozeno od anglického "to coin" – vytvořit).

Když však byla vydána první betaverze Coinu pro SIGGRAPH 2000, vydala také SGI open-source verzi Open Inventoru. Brzy se ukázalo, že tato verze je pouze v režimu údržby a tak vývojáři doufali, že další vývoj Coinu má i tak smysl.

Na podzim roku 2000 dosáhl vývoj Coinu svého cíle a stal se plně kompatibilní s API Open Inventoru, avšak od té doby bylo přidáno plno dalších funkcí jako podpora 3D zvuku, GLSL shadery, podpora nových typů souborů jako např. VRML97 a mnoho dalších změn, především v optimalizaci vykreslovacích technik OpenGL.

Coin byl zpočátku vytvořen na Linuxu a IRIXu, ale později byl vyvíjen především pro Linux, Windows s Cygwin a Mac OS X.

V polovině roku 2011 oznámila společnost Kongsberg Oil & Gas Technologies konec vývoje Coin3D a celý projekt byl přesunut na stránky BitBucket, kde je od té doby pouze udržován opravami chyb.

V současnosti se můžeme setkat s pojmy Coin i Coin3D. Pojem Coin3D se používá pro sadu knihoven pod stejnou licencí jako Coin. Coin představuje jádro Coin3D.[1]

Klíčové vlastnosti

editovat
Související informace naleznete také v článku Open Inventor.
 
Architektura Coin3D.

Kompatibilita s Open Inventor 2.1

editovat

Coin3D je plně kompatibilní s API Open Inventoru 2.1 na úrovni zdrojového kódu. To znamená, že jakýkoliv kód napsaný pro Open Inventor 2.1 bude fungovat i v Coin3D a naopak. Kompatibilita na binární úrovni (ABI) ale zajištěna není. Pokud bychom tedy přeložili program na jedné implementaci Open Inventor API a poté nahradili runtime knihovnu jinou implementací, pravděpodobně dojde k chybám.

Knihovna Coin3D

editovat

Základní vlastnosti knihovny Coin3D:

  • Podpora generických GLSL shaderů,
  • generický rendering stínů,
  • podpora geografických dat,
  • multithreading,
  • výstup ve vektorovém formátu PostScript,
  • TrueType font pro poznámky (2D a 3D),
  • podpora 3D zvuku,
  • 3D textury, multi-textury, bump mapping,
  • knihovny pro import a export souborů,
  • plugin pro Qt Designer (QWidget),
  • plugin pro volume rendering.

Vývoj v Coin3D

editovat

Specifika vývoje v Coin3D:

  • Vysokoúrovňové API pro maximální efektivitu práce,
  • integrace do rozhraní Qt,
  • plný přístup ke zdrojovému kódu,
  • multiplatformnost,
  • API v C++, vazby na Python,
  • zdarma pro komerční použití (trojbodová BSD licence).

Udržování kompatibility mezi verzemi Coin3D

editovat

Coin3D má propracovaný plán pro vydávání nových verzí a stanovuje přísná pravidla udržování kompatibility na úrovni API a ABI. Každá verze Coinu je označena číslem, které se skládá ze tří částí, které se nazývají major, minor a micro.

Všechny verze se shodným major a minor číslem musí být vždy vzájemně kompatibilní na úrovni API i ABI. Verze s rodílnou hodnotou micro slouží pouze k opravám chyb a úpravám dokumentace.

Všechny verze se shodným major označením musí být dopředně kompatibilní na úrovni ABI. Pokud si tedy uživatel nainstaluje novější verzi Coinu, která se nebude lišit major číslem, bude jeho kód fungovat, aniž by bylo nutné program překompilovávat. Tyto verze slouží k rozšiřování API a nazývají se minor releases.

Verze s rozdílným major číslem nemusí být vzájemně kompatibilní. Tyto verze se nazývají major releases a kompatibilitu porušují záměrně. Jejich podstatou je pročištění API a zavádění velkých změn.

Budoucnost

editovat

Poslední verze Coin3D vyšla již v březnu 2010 a od té doby se v repositáři objevovaly pouze opravy chyb. Poslední commit do repositáře Coin3D pochází z prosince roku 2011, takže se zdá, že jeho vývoj v současné době ustal.[2]

Nadstavby

editovat

Coindesigner

editovat

Multiplatformní open-source systém využívající Coin pro vytváření 3D scén stylem drag&drop. Rozhraní je podobné například aplikaci Qt Designer nebo Glade umožuňující výběr komponenty z nabídky komponent, její umístění ve scéně a nastavení parametrů. Umožňuje import a export souborů podporovaných Coinem a export aplikace do C++.[3]

IVuPy poskytuje více než 600 tříd z Coin a SoQt pro rozlehlé Qt aplikace v jazyce Python, zaměřující se na 3D vizualizaci a analýzu velkého množství dat. Vyvíjeno pod licencí GPL.[4]

Podobně jako IVuPy, Pivy vytváří vazby mezi prostředím Coin a jazykem Python, což umožňuje vyvíjet, rozšiřovat a modifikovat Coin aplikace v jazyce Python. Na rozdíl od IVuPy, Pivy využívá SWIG pro propojení těchto technologií.[5]

Licence

editovat

Od roku 1998 do roku 2011 byl Coin3D nabízen pod dvěma licencemi – GPL a Professional Edition License. V roce 2011 bylo kvůli snižující se poptávce upuštěno od vývoje komerční verze produktu a Coin3D byl přelicencován na trojbodovou BSD licenci, která umožňuje volné používání pro komerční účely. Držitelům Professional Edition License byl oznámen konec vývoje Coin3D.

Reference

editovat
  1. Coin3D / Coin / wiki / IntroductionToCoin3D — Bitbucket. bitbucket.org [online]. [cit. 2012-10-31]. Dostupné v archivu pořízeném z originálu. 
  2. Coin3D / Coin / Commits — Bitbucket. bitbucket.org [online]. [cit. 2012-10-31]. Dostupné v archivu pořízeném z originálu. 
  3. Coindesigner
  4. IVuPy
  5. Coin binding for Python—Pivy. pivy.coin3d.org [online]. [cit. 31-10-2012]. Dostupné v archivu pořízeném dne 09-03-2009. 

Externí odkazy

editovat