Prezentace maturitn´ıho projektu na pˇredmˇet informatika Software pro tvorbu pap´ırov´ych model˚ u Adam Dominec 22. kvˇetna 2010 Abstrakt Tento dokument je o poˇc´ıtaˇcov´em programu pro n´ avrh pap´ırov´ ych model˚ u. Popisuje jej jak z pohledu uˇzivatele, tak po technick´e str´ ance.
1 1.1
Popis aplikace Motivace
Pap´ırov´e model´ aˇrstv´ı je velmi obl´ıben´e, pˇredevˇs´ım proto, ˇze nen´ı nijak n´aroˇcn´e na materi´al. N´avrh modelu obvykle ale vyˇzaduje o to v´ıce peˇcliv´e pr´ ace a jemn´eho r´ ysov´an´ı, aby hotov´ y model byl pˇresn´ y. Nav´ıc u sloˇzitˇejˇs´ıch tvar˚ u nezb´ yv´ a neˇz metoda pokusu a omylu, vytrval´eho zkouˇsen´ı r˚ uznˇe velk´ ych ˇc´ast´ı. Poˇc´ıtaˇcov´ a grafika nab´ız´ı jednoduˇsˇs´ı ˇreˇsen´ı. V 3D editoru je moˇzn´e si libovoln´ y model navrhnout a prohl´ednout ze vˇsech stran. Toto virtu´ aln´ı modelov´ an´ı tak´e nˇejakou dobu trv´a, ale obecnˇe je rychlejˇs´ı a pˇrehlednˇejˇs´ı neˇz to skuteˇcn´e. V´ ysledn´e modely se obvykle pouˇz´ıvaj´ı jinak, napˇr´ıklad pˇri tvorbˇe trikov´ ych sc´en do film˚ u, ale zrovna tak je lze pouˇz´ıt i pro pap´ırov´e modelov´ an´ı. Poˇc´ıtaˇc dok´aˇze pˇrevod na rovinnou s´ıt’ prov´est velmi rychle a naprosto pˇresnˇe. Program˚ u schopn´ ych vytvoˇrit s´ıt’ z 3D modelu jiˇz existuje nˇekolik, ale obvykle jsou placen´e anebo velmi nepohodln´e na pouˇz´ıv´ an´ı. Protoˇze mˇe model´ aˇrstv´ı bav´ı, rozhodl jsem se napsat program vlastn´ı a zveˇrejnit jej pod svobodnou licenc´ı, aby byl dostupn´ y kaˇzd´emu.
1.2
Poˇ zadavky
Aby bylo program skuteˇcnˇe pohodln´e pouˇz´ıvat, mus´ı zcela bez pomoci uˇzivatele zvl´adnout nˇekolik pomˇernˇe sloˇzit´ ych u ´loh. Prvn´ı z nich je volba ˇrez˚ u. 3D model je, stejnˇe jako ten pap´ırov´ y, sloˇzen z mal´ ych ploˇsek. Aby vznikla rovinn´ a s´ıt’, nˇekter´e hrany je potˇreba rozˇr´ıznout. Program mus´ı rozhodnout, kter´e jsou pro to nejvhodnˇejˇs´ı. Protoˇze tento u ´kol nem´ a ˇz´ adn´e jednoznaˇcnˇe nejlepˇs´ı ˇreˇsen´ı, uˇzivatel m˚ uˇze jeho v´ yslek upravit, pokud nen´ı spokojen. Dalˇs´ım u ´kolem je samotn´e rozloˇzen´ı modelu do plochy. To m´a vˇzdy jedin´e ˇreˇsen´ı, u ´loha je tedy pro poˇc´ıtaˇc docela prost´ a. D´ ale mus´ı program um´ıstit s´ıtˇe na tiskov´e str´anky. Vˇetˇsinou je totiˇz nezbytn´e model rozloˇzit na nˇekolik oddˇelen´ ych s´ıt´ı, kter´e budou slepeny dohromady. Program mus´ı s´ıtˇe poskl´adat tak, aby spotˇreboval co nejm´enˇe pap´ıru. Zde nen´ı moˇzn´e nejlepˇs´ı ˇreˇsen´ı hledat, protoˇze by to bylo nesm´ırnˇe v´ ypoˇcetnˇe n´aroˇcn´e. Protoˇze je ale pap´ır levn´ y, obvykle n´ am postaˇc´ı i m´ alo u ´sporn´e ˇreˇsen´ı. Nakonec by mˇel b´ yt schopen pokr´ yt s´ıt’ kresbou, kterou uˇzivatel na modelu pˇredem vytvoˇril. To je velmi sloˇzit´ y u ´kol, ale naˇstˇest´ı jsou dostupn´e jiˇz hotov´e n´ astroje, kter´e jej ˇreˇs´ı.
1.3
Pouˇ zit´ y software
Je velmi vhodn´e tento program zabudovat pˇr´ımo do nˇejak´eho 3D editoru. Jednak proto, ˇze uˇzivatel bude m´ıt 3D editor patrnˇe uˇz spuˇstˇen´ y a nebude muset hledat a spouˇstˇet dalˇs´ı program, druhak d´ıky tomuto spojen´ı snadno z´ısk´ a n´ ahled v´ ysledn´eho ˇreˇsen´ı a usnadn´ı mu to pr´aci, pokud se rozhodne nˇekter´ y z krok˚ u ovl´adat ruˇcnˇe. Rozhodl jsem se pro program Blender. Je to profesion´aln´ı bal´ık a jeho hlavn´ı pˇrednost´ı je, ˇze patˇr´ı k open-source – je dostupn´ y zdarma vˇcetnˇe zdrojov´ ych k´ od˚ u. Z´asuvn´e moduly do nˇej, jako ten m˚ uj, se p´ıˇsou ve skriptovac´ım
1
jazyce Python. Nav´ıc z pohledu program´ atora usnadˇ nuje nˇekter´e z´akladn´ı operace analytick´e geometrie, kter´e jsou pro rozbalov´ an´ı rovinn´e s´ıtˇe nezbytn´e. V Blenderu je nav´ıc prost´e pokr´ yt s´ıt’ kresbou (texturou). T´eto techniky se vyuˇz´ıv´a obvykle i k jin´ ym u ´ˇcel˚ um a je proto uˇzivateli pohodlnˇe dostupn´ a. Jako form´ at v´ ysledn´ ych dokument˚ u jsem si vybral SVG (Scalable Vector Graphics). To je jeden z nejpouˇz´ıvanˇejˇs´ıch form´ at˚ u vektorov´e grafiky. Je velmi snadn´e v nˇem ukl´adat tvary sloˇzen´e z rovn´ ych ˇcar, coˇz je pˇresnˇe m˚ uj z´ amˇer. Pro jeho ukl´ ad´ an´ı nen´ı potˇreba ˇz´ adn´ y dodateˇcn´ y software.
2 2.1
Uˇ zivatelsk´ e rozhran´ı Instalace
Program je psan´ y pro v´ yvojovou verzi Blenderu (2.5.2), kter´a se d´a st´ahnout nejsn´aze z webu http://graphicall.org. am, ˇze Samotn´ y soubor programu (mesh unfold.py) je potˇreba uloˇzit do adres´aˇre .blender/scripts/addons/. Douf´ brzy bude pˇrijat jako uˇziteˇcn´ a souˇc´ ast a tedy bude v Blenderu dostupn´ y bez nutnosti t´eto instalace. Po spuˇstˇen´ı Blenderu je nutn´e program aktivovat v nastaven´ı. To se otevˇre z hlavn´ıho menu poloˇzkou File → User Preferences. V oddˇelen´ı Add-ons jej staˇc´ı naj´ıt pod jm´enem Mesh: Unfold a aktivovat tlaˇc´ıtkem Enable Add-on. V postrann´ı nab´ıdce 3D pohledu, kter´a se otev´ır´a kl´avesou T, se pot´e objev´ı nov´ y panel s n´azvem Unfold (ˇcesky: rozbalit).
2.2
Popis rozhran´ı
označit řezy
velikost stránky
{
rozlišení vytvořit prostou síť použít okolí jako kresbu uložit síť povolit tento zásuvný modul
2.3
Pouˇ zit´ı
Prvn´ım u ´konem je volba ˇrez˚ u. Ta se provede tlaˇc´ıtkem Unfold. V Edit Mode potom m˚ uˇzeme ˇreˇsen´ı upravit, zvolen´e ˇrezy jsou oznaˇcen´e jako Seams (ˇsvy). Hrany takto m˚ uˇzeme oznaˇcit pˇr´ıkazem Ctrl+E → Mark Seam, nebo jejich oznaˇcen´ı zruˇsit pˇr´ıkazem Ctrl+E → Clear Seam. Pro jistotu bychom po takov´e u ´pravˇe mˇeli opˇet stisknout Unfold, aby program zkontroloval, ˇze jsme na nˇeco nezapomnˇeli. Neˇz uloˇz´ıme s´ıt’, m˚ uˇzeme upravit velikost str´anky a oˇcek´avan´e rozliˇsen´ı tisk´arny. V´ ychoz´ı hodnotou je strana A4. Pokud chceme pokr´ yt s´ıt’ kresbou, zruˇs´ıme volbu Pure Net (prost´a s´ıt’). Pro prom´ıtnut´ı okoln´ıch objekt˚ u na plochu toho rozbalovan´eho m˚ uˇzeme zvolit Bake Selected to Active. Po stisku tlaˇc´ıtka Export Net se n´ as program dot´aˇze, pod jak´ ym n´azvem soubor uloˇzit. Pot´e s´ıt’ uloˇz´ı. Soubor˚ u m˚ uˇze b´ yt nˇekolik, budou ˇc´ıslovan´e podle tiskov´ ych stran. Tento krok m˚ uˇze u sloˇzit´ ych model˚ u poˇc´ıtaˇci zabrat i nˇekolik minut.
2
3
Dom´ enov´ y model aplikace Nastavení
Objekt
Rozměry stránky 1
1 1
1
1
1
n
n
Ploška 3D
Hrana 3D Je řezem? 3..4 Úhel Priorita
1..2 1..3
1
2..4 3..4
1
2
n
Vrchol 3D Souřadnice
1 1..2
Vrchol 2D
Ucho
Souřadnice 4 n
3..4
1
2
0..1
1
1
Ploška 2D 3..4
n
n 1
1
Síť
Stránka Název souboru 1
1
Hrana 2D 1
n
0..2
Poloha na stránce n Otočení Obalový obdélník
1 0..1
Kresba Název souboru
3
1
1
4 4.1
Popis pouˇ zit´ ych algoritm˚ u Volba ˇ rez˚ u
Vhodn´e ˇrezy hled´ a program iterativnˇe. Vˇzdy nalezne nejvhodnˇejˇs´ı hranu pro dalˇs´ı ˇrez a pˇred dalˇs´ım ˇrezem si ovˇeˇr´ı, zda jiˇz nen´ı model rozˇrezan´ y dostateˇcnˇe. ˇ ım je tento u Hlavn´ım rozhodovac´ım ohledem je odchylka ploˇsek, kter´e kaˇzd´a hrana spojuje. C´ ´hel vˇetˇs´ı, t´ım sp´ıˇse bude hrana zvolena pro ˇrez. Z praktick´e zkuˇsenosti se ukazuje, ˇze pˇredevˇs´ım by mˇely b´ yt ˇrez´any hrany, kter´e tvoˇr´ı vydut´ y roh (tˇeleso je konk´ avn´ı). Tyto u ´hly tedy maj´ı pˇri rozhodov´an´ı 4x vˇetˇs´ı v´ahu. Protoˇze se situace zaˇc´ın´ a komplikovat, zavedeme kaˇzd´e hranˇe vlastnost priorita: ta stanov´ı, jak moc vhodn´e je ˇ tu kterou hranu rozˇr´ıznout. Rezat potom budeme vˇzdy hranu, kter´a m´a prioritu nejvˇetˇs´ı. Pro pˇrehlednost je dobr´e, kdyˇz model nen´ı rozdˇelen na pˇr´ıliˇs mnoho mal´ ych s´ıt´ı. Hran´am, jejichˇz rozˇr´ıznut´ı by rozdˇelilo s´ıt’ na dvˇe, tedy budeme prioritu naopak sniˇzovat. Smysl m´a v tomto ohledu kontrolovat pouze pˇr´ım´e sousedy naposledy ˇr´ıznut´e hrany. Zkontrolujeme je tak, ˇze hled´ame, zda je mezi konci dan´e hrany uˇz cel´a spojnice z ˇrez˚ u. Pokud ano, ˇr´ıznut´ım dan´e hrany by se uzavˇrel kruh a tedy by se t´ım vyˇclenila nov´a s´ıt’. Pro optimalizaci si strukturu spojen´ ych ˇrez˚ u po cel´em modelu ukl´ad´ame – potom staˇc´ı pˇr´ımo zkontrolovat, zda oba konce hrany n´ aleˇzej´ı ke stejn´e skupinˇe ˇrez˚ u. Aby byly ˇrezy jednolit´e, trocha priority pˇribude vˇsem hran´am v okol´ı t´e naposledy ˇr´ıznut´e. Algoritmus se t´ım snaˇz´ı napodobovat pˇr´ıstup ˇclovˇeka, kter´ y by ˇreˇsil stejn´ yu ´kol.
4.2
Stanoven´ı, zda jsou ˇ rezy dostateˇ cn´ e
Po kaˇzd´em nov´em ˇrezu je potˇreba zkontrolovat, zda nem´a algoritmus skonˇcit. To provedeme hled´an´ım kruˇznic v grafu. Graf napodobuje v´ yslednou s´ıt’ – jeho vrcholy jsou jednotliv´e ploˇsky a spojuj´ı je hrany modelu, kter´e jeˇstˇe nebyly rozˇr´ıznuty. Dokud jsou s´ıt’ spojen´a do kruhu, nen´ı moˇzn´e (krom v´ yjimeˇcn´ ych pˇr´ıpad˚ u, kter´e m˚ uˇzeme zanedbat) ji rozbalit do roviny. Nutnou podm´ınkou potom je, aby poˇcet hran grafu byl menˇs´ı neˇz poˇcet vrchol˚ u. To je snadn´e zjistit: staˇc´ı si pamatovat poˇcet vˇsech hran a po kaˇzd´em ˇrezu jednu odeˇc´ıst. Poˇcet vrchol˚ u (ploˇsek) je samozˇrejmˇe zn´am´ y. Pokud je tato podm´ınka splnˇena, je potˇreba zkontrolovat kruˇznice podrobnˇe. Pro to je pouˇzit jednoduch´ y algoritmus vlny, kter´ y od n´ ahodn´eho poˇc´ atku s´ıt’ proch´az´ı. Pokud na nˇejak´e m´ısto vstoup´ı dvakr´at (z r˚ uzn´ ych smˇer˚ u), v grafu je kruˇznice. Pokud se tak nestane a algoritmus projde graf cel´ y, model je zˇrejmˇe rozˇrezan´ y dostateˇcnˇe. Uk´ azalo se b´ yt drobn´ ym a nen´ aroˇcn´ ym zlepˇsen´ım nav´ıc, pokud je kruˇznice nalezena, zv´ yˇsit jedn´e (n´ ahodnˇe zvolen´e) jej´ı hranˇe prioritu. Teoreticky vzato je to velmi zvl´aˇstn´ı krok, ale uˇsetˇr´ı to mnoho zbyteˇcn´ ych ˇrez˚ u.
4.3
Rozbalen´ı rovinn´ e s´ıtˇ e
Kaˇzdou s´ıt’ rozbalujeme od n´ ahodnˇe zvolen´e poˇc´ateˇcn´ı ploˇsky. Otoˇc´ıme ji v prostoru tak, aby byla rovnobˇeˇzn´ a s p˚ udorysnou, a d´ ale pouˇzijeme jej´ı p˚ udorysn´ y pr˚ umˇet. Pro ot´aˇcen´ı je pouˇzita rotaˇcn´ı matice, jej´ıˇz prvky pˇr´ımo vypoˇcteme z norm´ alov´eho vektoru ploˇsky. Po um´ıstˇen´ı ploˇsky pokraˇcujeme jej´ımi sousedy, kter´e otoˇc´ıme stejn´ ym zp˚ usobem. Pot´e je jeˇstˇe posuneme a otoˇc´ıme v ploˇse, aby navazavaly patˇriˇcnou hranou na v´ ychoz´ı ploˇsku. K tomu je opˇet pouˇzita rotaˇcn´ı matice, vypoˇcten´ a z vektor˚ u obou hran, kter´e maj´ı b´ yt na sebe napojen´e. T´ımto zp˚ usobem projde algoritmus postupnˇe vˇsechny ploˇsky a pot´e skonˇc´ı.
4.4
Volba uch pro lepen´ı
´ Ukol, kter´ y dosud nebyl zm´ınˇen, je pˇrid´ an´ı tzv. uch – mal´ ych lichobˇeˇzn´ıkov´ ych ploch, na kter´e m´a b´ yt naneseno lepidlo. Tento zd´ anlivˇe zbyteˇcn´ y u ´kon v´ yraznˇe usnadˇ nuje model´aˇri pr´aci. Ucho mus´ı b´ yt vˇzdy na jen jedn´e ze slepovan´ ych hran. Protoˇze pˇr´ıliˇs nez´ aleˇz´ı, na kter´e z nich ucho bude, jsou pˇrid´av´ana n´ahodnˇe.
4.5
Um´ıstˇ en´ı s´ıt´ı na tiskov´ e strany
Toto se uk´ azalo jako asi nejsloˇzitˇejˇs´ı u ´loha v˚ ubec. Pro pˇrijateln´e zjednoduˇsen´ı kaˇzdou s´ıt’ zabal´ıme do co nejmenˇs´ıho obd´eln´ıku, se kter´ ymi budeme pak pracovat bez dalˇs´ıch u ´prav. Umist’ujeme je na str´anku postupnˇe od nejvˇetˇs´ıho a zkouˇs´ıme, zda se dan´ y obd´eln´ık do zb´ yvaj´ıc´ıho m´ısta vejde. Pokud se na str´anku uˇz ˇz´adn´ y obd´eln´ık nevejde, pˇrejdeme na dalˇs´ı str´ anku. N´ıˇze jsou tyto algoritmy pops´any podrobnˇe.
4
4.5.1
Nalezen´ı nejlepˇ s´ıho obd´ eln´ıku
Jedin´ y zp˚ usob, jak je moˇzn´e hotovou s´ıt’ upravovat, je celou ji ot´aˇcet. Je pomˇernˇe snadn´e nal´ezt nejlepˇs´ı ˇreˇsen´ı, tedy nejv´ yhodnˇejˇs´ı u ´hel otoˇcen´ı. Nejprve nalezneme nejmenˇs´ı moˇzn´ y konvexn´ı mnoho´ uheln´ık, do kter´eho se s´ıt’ cel´a vejde (viz obr. 1). Najdeme bod nejv´ıce vlevo a nejv´ıce vpravo v s´ıti a pot´e hled´ame vrchn´ı a spodn´ı obrys, kter´ y oba body spoj´ı. Pˇri hled´ an´ı obou obrys˚ u vˇzdy zaˇc´ın´ ame se vˇsemi body s´ıtˇe a postupnˇe odeb´ır´ame ty, kter´e by uvnitˇr mnoho´ uheln´ıku tvoˇrily vydut´ y (konk´ avn´ı) u ´hel. Nakonec oba obrysy spoj´ıme dohromady. Obr´ azek 1: Uk´ azka obalov´eho mnoho´ uheln´ıku a obd´eln´ıku
Tento obrazec pot´e ot´ aˇc´ıme postupnˇe kaˇzdou hranou dol˚ u - jako bychom jej valili po zemi. Pro kaˇzdou moˇznost spoˇc´ıt´ ame plochu obalov´eho obd´eln´ıka a prostˇe nalezneme obd´eln´ık s nejmenˇs´ı plochou. Pro dalˇs´ı vyuˇzit´ı si zapamatujeme jeho rozmˇery a u ´hel, pod kter´ ym byla s´ıt’ natoˇcena. 4.5.2
Um´ıstˇ en´ı obd´ eln´ık˚ u na strany
Pˇri umist’ov´ an´ı si pamatujeme obrys zb´ yvaj´ıc´ıho voln´eho m´ısta (jako spojov´ y seznam) a vˇsechny rozumn´e obd´eln´ıky, kter´e toto voln´e m´ısto vymezuje. Zaˇc´ın´ ame tedy s obrysem cel´e strany, kter´a vymezuje jeden velk´ y obd´eln´ık (viz obr. 2). Vˇzdy zkouˇs´ıme pˇridat postupnˇe vˇsechny obd´eln´ıky se s´ıtˇemi (zkouˇs´ıme od nejvˇetˇs´ıho) do vˇsech obd´eln´ık˚ u s voln´ ym m´ıstem (zkouˇs´ıme od nejmenˇs´ıho). Tento proces je v´ ypoˇcetnˇe n´aroˇcn´ y, ale v bˇeˇzn´ ych pˇr´ıpadech nezabere ani vteˇrinu. Po pˇrid´ an´ı prvn´ıho obd´eln´ıku se s´ıt´ı je nutn´e upravit obrys a pouˇzit´ y obd´eln´ık voln´eho m´ısta nahradit dvˇema jin´ ymi (viz obr. 3). Pˇri pˇrid´ av´ an´ı vˇsech dalˇs´ıch je nutn´e nav´ıc jeˇstˇe zmenˇsit vˇsechny obd´eln´ıky voln´eho m´ısta, do kter´ ych pˇridan´ y obd´eln´ık se s´ıt´ı zasahuje (viz obr. 4). Kdyˇz vyzkouˇs´ıme vˇsechny obd´eln´ıky se s´ıtˇemi a nepodaˇr´ı se je um´ıstit vˇsechny, pˇrejdeme na dalˇs´ı str´anku. Pokud vˇsechny um´ıst´ıme, je hotovo. Obr´ azek 2: V´ ychoz´ı stav
Obr´ azek 3: Pˇrid´an prvn´ı obd´eln´ık Obr´azek 4: Pˇrid´an dalˇs´ı obd´eln´ık
5
4.5.3
Hodnocen´ı algoritmu
Je nutno podotknout, ˇze tento probl´em sice m´a jedno nejlepˇs´ı ˇreˇsen´ı, ale zˇrejmˇe by jej neˇslo naj´ıt jinak neˇz hrubou silou, s ˇcasovou sloˇzitost´ı n!. S u ´lohami velmi podobn´ ymi se setk´av´a mnoho jin´ ych program˚ u a pouˇzit´e algoritmy se r˚ uzn´ı podle povahy vstupn´ıch dat a poˇzadavk˚ u na kvalitu ˇreˇsen´ı. Hlavn´ı pˇrednost´ı pouˇzit´eho algoritmu je, ˇze se dobˇre vyrovn´av´a se s´ıtˇemi vˇsech tvar˚ u. Je zn´amo mnoho lepˇs´ıch, kter´e by byly ale vhodn´e napˇr´ıklad jen pro vˇsechny s´ıtˇe stejn´e velikosti. Jeho ˇcasov´a sloˇzitost je zhruba n2 podle poˇctu s´ıt´ı, ale na bˇeˇzn´em poˇc´ıtaˇci se vyrovn´ a s nˇekolika stovkami s´ıt´ı bˇehem minuty.
4.6
Pokryt´ı kresbou
Jak bylo zm´ınˇeno v´ yˇse, studio Blender samo o sobˇe umoˇzn ˇuje pˇreveden´ı kresby z modelu do ploˇsn´eho obr´azku. Staˇc´ı tedy vhodnˇe zform´ atovat data o s´ıt´ıch a zadat API patˇriˇcn´ y pˇr´ıkaz. Kresba je uloˇzena str´anku po str´ance.
4.7
Export dokumentu
Dokument je zapisov´ an jako prost´ y text se s´ıtˇemi ve form´atu SVG. Kaˇzd´e tiskov´e stranˇe opˇet odpov´ıd´a jeden soubor. Po nezbytn´e hlaviˇcce a definici kask´ adov´eho stylu program zap´ıˇse jeˇstˇe tag pro obr´azek, odkazuj´ıc´ı na jiˇz uloˇzenou kresbu ve form´ atu PNG. S´ıtˇe se zapisuj´ı jedna po druh´e, aby s nimi bylo moˇzn´e pˇr´ıpadnˇe ruˇcnˇe manipulovat ve vektorov´em editoru. Kaˇzd´ a s´ıt’ je uloˇzena jako jedna SVG skupina a skl´ad´a se z ˇctyˇr aˇz ˇsesti kˇrivek (SVG tag path): vnˇejˇs´ı obrys je vykreslen´ y tuˇcnˇe, d´ ale vˇsechny hrany, pˇriˇcemˇz ohyby ven (vypukl´e) jsou ˇc´arkovan´e a ohyby dovnitˇr (vydut´e) jsou ˇcerchovan´e, a ucha pro lepen´ı. Nav´ıc, pokud je na pozad´ı obr´azek, jsou vˇsechny kˇrivky podloˇzeny b´ılou barvou, aby byly l´epe vidˇet. Vnˇejˇs´ı obrys mus´ı m´ıt podklad v samostatn´e kˇrivce, protoˇze je o nˇeco tlustˇs´ı ˇcarou. Kaˇzd´ a z tˇechto kˇrivek se skl´ ad´ a z velk´eho mnoˇzstv´ı oddˇelen´ ych u ´seˇcek.
5
Pl´ an dalˇ s´ıho v´ yvoje • Pro uˇzivatele je velmi d˚ uleˇzit´ y ten krok, kdy program hled´a vhodn´e ˇrezy. Pouˇzit´ y algoritmus sice prokazuje dobr´e v´ ysledky, ale v nˇekter´ ych ohledech m´a patrn´e nedostatky. U sloˇzit´ ych model˚ u napˇr´ıklad vytv´ aˇr´ı velk´e mnoˇzstv´ı mal´ ych s´ıt´ı tˇreba jen o dvou ploˇsk´ach, aˇckoliv to vˇetˇsinou nen´ı v˚ ubec nutn´e. Domn´ıv´am se, ˇze v z´ akladu je to algoritmus dobr´ y, akor´ at by bylo vhodn´e jej doplnit o dalˇs´ı okolnosti ovlivˇ nuj´ıc´ı prioritu. • Algoritmus pro umist’ov´ an´ı na str´ anku v nˇekter´ ych situac´ıch vytv´aˇr´ı nadm´ıru zbyteˇcn´e pr´azdn´e m´ısto. Vypl´ yv´ a to pˇr´ımo z jeho podstaty, tedy ze zp˚ usobu, jak´ ym voln´e m´ısto vyhled´av´a. Pro zdokonalen´ı bude nutn´e nad nˇej pˇribudovat nadstavbu, kter´ a specificky tyto pˇr´ıpady oˇsetˇr´ı (viz obr. 5, 6). Nav´ıc nˇekdy se dvˇe s´ıtˇe objev´ı na stejn´em m´ıstˇe, coˇz patrnˇe sp´ıˇse nˇejak´ y pˇreklep v k´odu. Obr´ azek 5: Souˇcasn´ a verze algoritmu
Obr´azek 6: Nejvˇetˇs´ı obd´eln´ık voln´eho m´ısta sch´ az´ı
• Z´ asadn´ı vadou je, ˇze pokud ˇrezac´ı algoritmus udˇel´a s´ıt’ pˇr´ıliˇs velkou – vˇetˇs´ı neˇz tiskov´a strana, nen´ı moˇzn´e ji pˇr´ımo um´ıstit. Uˇzivatel m˚ uˇze tento probl´em vyˇreˇsit ruˇcn´ım pˇrid´an´ım ˇrezu, kter´ y s´ıt’ rozdˇel´ı. Program by ale mˇel b´ yt schopen pr´ avˇe v takov´e situaci s´ıt’ rozˇr´ıznout tak, aby se na stranu veˇsla. To bude pomˇernˇe sloˇzit´e, 6
protoˇze ani tento nov´ y ˇrez nem˚ uˇze b´ yt volen n´ahodnˇe. Nav´ıc je to jak´ ysi krok zpˇet v cel´em procesu a proto bude moˇzn´ a nutn´e poupravit z´ akladn´ı strukturu k´odu. • Dalˇs´ı n´ aroˇcn´ y probl´em je, ˇze nˇekdy se ploˇsky v s´ıti pˇrekr´ yvaj´ı. Nest´av´a se to ˇcasto, ale v´ ysledn´a s´ıt’ je potom nepouˇziteln´ a. Dalˇs´ı probl´em je, ˇze mal´ y pˇrekryv m˚ uˇze uˇzivatel snadno pˇrehl´ednout a vˇsimne si jej aˇz pˇri lepen´ı. Program mus´ı zkontrolovat jednotlivˇe kaˇzdou ploˇsku, zda nem´a nˇejak´ y pˇrekryv, a pokud m´a, mus´ı s´ıt’ vhodn´ ym zp˚ usobem rozˇr´ıznout, aby jej odstranil. • V souˇcasn´e verzi je zcela ponech´ ano n´ ahodˇe, na kter´e z dvojice slepovan´ ych hran bude vytvoˇreno ucho k lepen´ı. Pro pohodl´ı pˇri vystˇrihov´ an´ı se zd´a b´ yt lepˇs´ı, kdyˇz jsou ucha pohromadˇe ve vˇetˇs´ıch skupin´ach. Na to by se tedy mˇel br´ at ohled. D´ alepak by ucha mˇela b´ yt automaticky zmenˇsen´a tak, aby se veˇsla do ploˇsky, kam maj´ı b´ yt nalepena a aby nepˇresahovala do ˇz´adn´e jin´e ploˇsky v s´ıti. Tyto chyby jsou zvl´aˇstˇe patrn´e u tˇret´ı uk´ azkov´e s´ıtˇe n´ıˇze, modelu automobilu s kresbou. • U sloˇzitˇejˇs´ıch model˚ u, zvl´ aˇstˇe pokud jsou bez kresby, je nˇekdy sloˇzit´e na pohled uhodnout, kter´e ˇc´asti patˇr´ı k sobˇe. Program by mˇel do dokumentu pˇridat popisky k uch´am a odpov´ıdaj´ıc´ım hran´am. Mohlo by b´ yt pohodln´e, kdyby podobn´e popisky vloˇzil i do p˚ uvodn´ıho 3D modelu, pro pˇr´ıpad, ˇze bude opravdu nepˇrehledn´ y. • Neˇsetrn´e k tisk´ arnˇe je, ˇze kresba je vytvoˇrena na ˇcern´em pozad´ı. Bohuˇzel souˇcasn´a v´ yvojov´a verze Blenderu nem´ a kompletn´ı API a tedy nen´ı moˇzn´e to zat´ım nijak vyˇreˇsit. Nezb´ yv´a neˇz dodateˇcnˇe pouˇz´ıt rastrov´ y editor a prostˇe vyplnit dotyˇcn´e plochy b´ılou barvou.
6
Informace o projektu
Autor: Adam Dominec Licence: GNU General Public License Aktu´ aln´ı verze: 0.5 Odkaz ke staˇzen´ı: http://blenderartists.org/forum/showthread.php?p=1619215 (doˇcasn´ y) Doba v´ yvoje: prosinec 2009 - kvˇeten 2010 Poˇcet znak˚ u k´ odu: 39 707 Poˇcet ˇr´ adk˚ u k´ odu: 980
7
7 7.1
Uk´ azky Dvacetistˇ en, prost´ a s´ıt’
8
7.2
Torus s texturou osvˇ etlen´ı
9
7.3
Model automobilu s kresbou
10