Portál AbcLinuxu, 19. dubna 2024 10:30

BRL-CAD: Pokročilé techniky modelování 2

31. 1. 2013 | Pavel Jansa
Články - BRL-CAD: Pokročilé techniky modelování 2  

Na závěr minulého dílu jsem sliboval detailnější pohled na editaci těles, probrání zbylých základních těles a renderování. Základních těles zbylo jen pár a to naštěstí těch zajímavých. V souvislosti s nimi bude nutné zmínit některé konverzní nástroje a probrat přípravné práce s daty, což je jakýsi skrytý bonus. Renderování jsme trochu nakousli už minule a dnes si povíme něco víc a podíváme na jeden komfortní nástroj k vytváření hezkých obrázků.

Obsah

Zbylá základní tělesa

link

Poloprostor, half

link

Poloprostor je zvláštní případ prostorového úhlu, ale to necháme stranou. Pokud do prostoru umístíme libovolnou rovinu, máme na každé její straně jeden poloprostor. Konkrétní poloprostor určíme touto rovinou a pomocným bodem, který v ní neleží. Pokud si něco takového chceme vyrobit v BRL-CADu (hodí se to hlavně na řezy celých modelů, a podklady pod autíčka) budeme potřebovat normálový vektor roviny orientovaný ven z poloprostoru a vzdálenost roviny od počátku souřadného systému.

mged> in half1.s half
Enter X, Y, Z of outward pointing normal vector: 1 1 0
Enter the distance from the origin: 5

Samotný poloprostor není příliš fotogenický, proto doporučuji vyzkoušet si ho na nultém modelu.

brlcad brlcad

Particle, part

link Marně jsem přemýšlel nad českým termínem pro toto těleso, slova „částice“, nebo „součástka“ jsou příliš obecná pro komolý kužel, jehož každé podstavě je opsána kulová plocha.
mged> in part1.s part
Enter X, Y, Z of vertex: 0 0 0 #střed první podstavy
Enter X, Y, Z, of vector H:  0 0 5 #střed druhé podstavy
Enter v end radius: 2 #poloměr první podstavy
Enter h end radius: 1 #poloměr druhé podstavy

brlcad

Rovinný útvar, sketch

link

BRL-CAD má klikací nástroj pro kreslení rovinných útvarů. Podporuje úsečky, oblouky, kružnice a beziérovy křivky. Je šikovný jako hrábě do kapsy a zavšivený jak vandrácká ubytovna, zhruba 50 % kliknutí při snaze vytvořit nějakou tu kružnici je odměněno chybovou hláškou; dál než k sestrojení středu jsem se nedostal. Pokud potřebujete pracovat s rovinným útvarem, jest lépe importovat ho z jiného formátu, nebo se zamyslet a vyrobit těleso ze základních tvarů. Většinou to jde a nejspíš proto taky editor stojí za houby. Není totiž moc potřeba.

brlcad

Rovinné útvary jsou základem pro odvozená tělesa, vysunutou plochu a otočenou plochu. Pro následující dva příklady jsem použil importy pomocí nástroje dxf-g. Jak už název říká, konvertuje dxf výkres do nativního formátu BRL-CADu. Podobně jako jiné konverzní nástroje se nepouští v MGEDu, ale přímo z shellu. Funguje jednoduše:

user@machine:/path/to/my/brlcadorgy$ dxf-g file.dxf file.g

Pokud máte data ve formátu Shapefile, bude se vám hodit nástroj shp-g, používá se stejně.

U každého rovinného útvaru je dobré znát polohu bodů V, A, B. Bod V určuje pravý dolní roh kresby a body A B (spolu s bodem V) určují rovinu, v níž útvar leží. Tyto informace získáte v MGEDU výpisem detailů pomocí l jmeno.kresby.

Vysunutá plocha, extrude

link

Občas je přece jenom lepší mít v databázi rovinný útvar a ten si vytáhnout na požadovanou délku. Hodí se to u těles složitějšího řezu a různé délky. Jako demonstrační příklad použijeme profil I 140.

mged> in nosnik1.s extrude
Enter X, Y, Z of vertex: 0 0 0
Enter X, Y, Z of H: 0 0 1000
Enter X, Y, Z of A: 1 0 0
Enter X, Y, Z of B: 0 1 0
Enter name of sketch: I140.profil

Otočená plocha, revolve

link

Pro základ otočené plochy použijeme uzavřenou lomenou čáru, která připomíná profil eneolitické amfory. Postup je v zásadě jednoduchý, nejprve dvěma body určíme osu otáčení, udáme jeden bod ve výchozí rovině, zadáme, o kolik stupňů útvar otočíme, a pak už jen povíme, který útvar v databázi chceme otáčet.

mged> in nadoba.s revolve
Enter X, Y, Z of vertex: 0 0 0 #první bod osy
Enter X, Y, Z of revolve axis: 0 1 0 #druhý bod osy
Enter X, Y, Z of vector in start plane: 1 0 0 #bod ve výchozí rovině
Enter angle: 360
Enter name of sketch: profil

brlcad brlcad

Vysunutá bitmapa, ebm

link

Vysunutá bitmapa je základní tvar vzniklý trasováním rastrového obrázku a následným vytažením takto získaného rovinného útvaru o danou hodnotu. Nemusí se jednat o jeden diskrétní útvar. Obrázek může mít pouze dvě barvy, černou a bílou, přičemž černou zvolte pro pozadí a bílou pro vlastní objekt.

Obrázek je nejprve potřeba konvertovat do bw formátu, a to v závislosti na vstupu buď utilitou png-bw (asi netřeba komentovat), nebo tobw (pro RLE obrázky). Pak už si jen připomenout šířku a výšku původního obrázku (třeba pomocí identify)a směle do toho:

user@machine:/path/to/my/brlcadorgy$ png-bw ebm.png > ebm.bw
mged> in skinnypuppy.ebm ebm
Enter name of bit-map file: ebm.bw
Enter width of bit-map (number of cells): 1600
Enter height of bit-map (number of cells): 800
Enter extrusion distance: 100

brlcad brlcad

Výškové pole, dsp

link

I výškové pole podobně jako ebm na vstupu pracuje s rastrem, ale výsledkem je pravoúhlý šestistěn s jednou nerovnou stěnou. Nejlépe si ho představit jako model terénu.

Nejprve si připravíme vstupní data ve formátu png. Pokud modelujeme terén, hodí se GIS, v němž lze nastavit rozlišení rastru (GRASS) a černobílou škálu výšek. Poté nejprve převedeme obrázek z png do bw.

user@machine:/path/to/my/brlcadorgy$ png-bw brdy.png > brdy.bw

Pak je tu ještě jedno zaklínadlo, s jehož pomocí data upravíme.

user@machine:/path/to/my/brlcadorgy$ cv huc nus brdy.bw brdy.dsp

A nyní už můžeme data předhodit MGEDu.

mged> in brdy.dsp dsp
Take data from file or database binary object [f|o]:f #zdrojová data budeme brát ze souboru
Enter name of file/object: brdy.dsp #z tohoto souboru
Enter width of displacement-map (number of values): 949 #šířka obrázku
Enter length of displacement-map (number of values): 612 #výška obrázku
Normal Interpolation? 0=no 1=yes: 1
Cut direction [ad|lR|Lr] ad
Cell size: 30
Unit elevation: 20

brlcad brlcad

Roura, pipe

link

Představte si, že potřebujete vymodelovat potrubí, třeba rozvody teplé užitkové vody. A máte na to CSG. Rovná trubka, to přeci není problém, do MGEDu prskneme jeden válec (rcc) požadované délky a daném vnějším průměru. Do něj vyrobíme dutinu, čili druhý válec o vnitřním světlém průměru, odečteme druhý od prvního a je to. Pak nám ale roura zatáčí, takže budeme potřebovat prstenec, teda vlastně dva prstence a k tomu nějaký útvar, kterým rozdíl prstenců osekneme do požadovaného tvaru. Dělat tímto způsobem jednu zatáčku je práce pro vraha a udělat rozvody v celém domě, to je vstupenka do blázince. A proto tu máme primitiva jménem <pipe>.

Celý problém je redukován na několik proměnných: kde trubka začíná a končí, v kolika bodech se ohýbá, jaký má v těchto bodech vnější a vnitřní průměr a jaký je poloměr ohnutí. Nemusíme nutně dělat trubku, vnitřní průměr může být nulový a tak je možné udělat třeba spirálové vinutí. Je tu několik omezení: vnitřní průměr nemůže být větší než vnější, poloměr ohnutí nesmí být menší než vnější poloměr a dva uzlové body nemohou být na stejné souřadnici.

Zadání potom vypadá třeba nějak takto:

mged> in pipe.s pipe
Enter number of points: 4
Enter X, Y, Z, inner diameter, outer diameter, and bend radius for first point: 0 0 0 1 2 2
Enter X, Y, Z, inner diameter, outer diameter, and bend radius for point 2 : 0 10 0 1 2 2
Enter X, Y, Z, inner diameter, outer diameter, and bend radius for point 3 : 10 10 0 1 2 5
Enter X, Y, Z, inner diameter, outer diameter, and bend radius for point 4 : 10 20 0 1 2 2

Průměry lze průběžně měnit:

mged> in trychtyr.s pipe
Enter number of points: 3
Enter X, Y, Z, inner diameter, outer diameter, and bend radius for first point: 0 0 0 1 2 2 
Enter X, Y, Z, inner diameter, outer diameter, and bend radius for point 2 : 0 0 10 1.5 2.5 2.5
Enter X, Y, Z, inner diameter, outer diameter, and bend radius for point 3 : 0 0 20 19 20 20

brlcad brlcad

Renderování

link

Renderování je v BRL-CADu velmi komplexní, pomocí modelování paprsků můžeme dostat klasický renderovaný obrázek, vykreslené viditelné hrany modelu, ale i informace o hmotnosti a objemu jednotlivých dílů. Renderovací ulitility poznáte podle jejich názvu, začínají písmeny rt Dnes si projdeme uživatelsky nejpříjemnější renderovací nástroj, totiž rtwizard.

Jak název napovídá, jedná se o střechovou čarodějnou utlitu, která integruje základní program rt a rtedge a polidšťuje jejich nastavení pomocí grafického rozhraní. Program můžete pustit buď přímo, nebo za něj připojit jméno souboru, který chcete renderovat. V druhém případě jste ušetřeni klikání cesty k danému souboru (nultý krok). Pozor na tlačítka, ve výchozí velikosti okna jsou deformovaná, mrkněte na screenshot.

brlcad brlcad

V prvním kroce volíte, jaký typ obrázku chcete. Normální render, vykreslení hran, kombinace renderu a hran, některé části průhledné a jiné a plnou barvu atd. Podle vaší volby se vymění obrázek vpravo, takže velmi rychle získáte představu o typu výsledného renderu. Pro začátek vybereme Simple Full Color Image. Nyní se zobrazí stručný anglický návod, jak postupovat dál. Pomocí nabídky File v horní liště, lze typ obrázku kdykoliv změnit.

brlcad

Nyní pokračujeme nastavením plně vykreslených elementů. Z horní lišty vybereme Steps > Configure Full-Color Elements. Okno máme rozdělené do dvou polovin. Nalevo vidíme vrcholové úrovně stromu modelu a vpravo jejich vykreslení. Pravá polovina okna se ovládá stejně jako grafické okno MGEDu, čili prostředním myšítkem určíte nový střed, ctrl + levá tažená myš otáčí pohledem atd. Pro začátek zvolíme položku all.g a pohled zepředu. Pokud chcete nastavit další paramatry pohledu přesně, vyberte si z horního menu odpovídající položky. Na výběr máte azimut, výškový úhel, perspektivu a velikost výřezu. Pak už zbývá jen vybrat z položky Render buď Preview, nebo Fullsize a pokochat se výsledným obrázkem.

brlcad

Pro kombinované obrázky jsou nastavení podobná, ale volíte zvlášť prvky plně renderované a prvky vytažené linií. Podle toho se taky rozroste nabídka Steps. Poslední důležitá položka je Steps > Configure Framebuffer Zde můžete nastavit dvě věci: velikost vykreslovacího Full size okna (nativně 1024 × 1024, Preview okno je poloviční) a výstup do souboru. Soubor bude zapsán v formátu pix a pro použití v normálním světě ho tedy bude ještě potřeba konvertovat pomocí pix-png.

Seriál BRL-CAD (dílů: 4)

První díl: BRL-CAD – Stručné představení, poslední díl: BRL-CAD: Pokročilé techniky modelování 2.
Předchozí díl: BRL-CAD: Pokročilé techniky modelování

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

Diskuse k tomuto článku

31.1.2013 09:36 xxxxxxxxxxx | skóre: 13 | blog: rhrtshrth
Rozbalit Rozbalit vše Re: BRL-CAD: Pokročilé techniky modelování 2
Odpovědět | Sbalit | Link | Blokovat | Admin
Paráda díky za článek! :-)
pawleeq avatar 31.1.2013 09:41 pawleeq | skóre: 19 | blog: pawlixblg
Rozbalit Rozbalit vše Re: BRL-CAD: Pokročilé techniky modelování 2
nz :)
Overground against monoculture.
31.1.2013 10:44 tomo_tn
Rozbalit Rozbalit vše Re: BRL-CAD: Pokročilé techniky modelování 2
Odpovědět | Sbalit | Link | Blokovat | Admin
Dakujem za clanok - uz som sa pomaly obaval ze sa serial skoncil...
pawleeq avatar 31.1.2013 11:34 pawleeq | skóre: 19 | blog: pawlixblg
Rozbalit Rozbalit vše Re: BRL-CAD: Pokročilé techniky modelování 2
Nene, ale nejdřív mi do toho vlítla větší zakázka, pak pár menších, pak jsem se stěhoval z paneláku na vesnici, pak byla v tom domku potřeba udělat nová voda, koupelna elektrika...
Overground against monoculture.
31.1.2013 11:56 eee
Rozbalit Rozbalit vše Re: BRL-CAD: Pokročilé techniky modelování 2
Odpovědět | Sbalit | Link | Blokovat | Admin
perfect, danke.
Ravensun avatar 31.1.2013 12:51 Ravensun | skóre: 11 | blog: Ravensun's blog | Praha
Rozbalit Rozbalit vše Re: BRL-CAD: Pokročilé techniky modelování 2
Odpovědět | Sbalit | Link | Blokovat | Admin
Skvělý článek! Být tu flattr, tak máte u mně malou odměnu :)

Pracujete s jinými CAD který běží pod linuxem? OPENSCAD, FreeCAD, Draftsight, LibreCad, atd..?
Gentoo je můj poslední velký linux test...
pawleeq avatar 31.1.2013 13:23 pawleeq | skóre: 19 | blog: pawlixblg
Rozbalit Rozbalit vše Re: BRL-CAD: Pokročilé techniky modelování 2
Zdravím,

poměrně hodně si kreslím v LibreCAD. FreeCAD jsem zkoušel, ale příliš mne neoslovil uživatelským rozhraním a stabilitou. OPENSCAD vypadá velmi zajímavě, vyzkouším ho. Třeba z toho časem vyleze nějaké porovnání svobodných 2D a 3D cadů :)

Pod linuxem nativně běhalo PTC Pro/E WF 3, ale na současném systému (Ubuntu 12.04) se mi ho zatím nepodařilo rozběhnout.

Overground against monoculture.
31.1.2013 17:14 ...
Rozbalit Rozbalit vše Re: BRL-CAD: Pokročilé techniky modelování 2
Já celkem často FreeCAD zkouším a kreslí se mi v něm hodně dobře. Neznám Catiu (dělal jsem s MicroStation), ale podle tutoriálů na youtube se s ním pracuje dost podobně. V Mintu mám přidáno ppa s daily buildy a pro Windows mám v rss jejich stránku na sourcefoge, takže zkouším v podstatě každou verzi. Ve Windows mi přijde, že častěji něco nefunguje, ale zase mi tam funguje čeština.
31.1.2013 21:36 alfonz mucha
Rozbalit Rozbalit vše Re: BRL-CAD: Pokročilé techniky modelování 2
Používám v současné době FreeCAD docela často, také mám PPA, ale neaktualizuji denně, jelikož se mi již několikrát stalo, že nějaká část přestala fungovat. Na druhou stranu bych řekl, že FreeCAD patří mezi opravdu použitelné CAD aplikace, které na opensource scéně vnikly. Jen je škoda, že se mi nedaří ho spojit se skripty, které by se automaticky spouštěly po startu aplikace.

btw čeština mi funguje
3.2.2013 16:21 Petr Ježek | skóre: 10
Rozbalit Rozbalit vše Re: BRL-CAD: Pokročilé techniky modelování 2
Odpovědět | Sbalit | Link | Blokovat | Admin
A což takhle Medusa4? po letmém seznámení vypadá na kandidáta pro tvorbu výstupů pro 3D tiskárnu...
Archlinux for your comps, faster running guaranted!
pawleeq avatar 3.2.2013 21:22 pawleeq | skóre: 19 | blog: pawlixblg
Rozbalit Rozbalit vše Re: BRL-CAD: Pokročilé techniky modelování 2
MEDUSA4 vypadá hezky a obchodní politika výrobce je taky velmi sympatická. Open source nazi by mohl remcat, že to nemá otevřený zdroj, ale kdo z CAD modelářů se zároveň hrabe ve zdrojových kódech...

Lidé kolem RepRapu si libují hlavně v OpenSCADu.

Každopádně díky za tip na zajímavý soft.
Overground against monoculture.
Ravensun avatar 3.2.2013 23:11 Ravensun | skóre: 11 | blog: Ravensun's blog | Praha
Rozbalit Rozbalit vše Re: BRL-CAD: Pokročilé techniky modelování 2
Od MEDUSA4 mě odrazuje to, že pokud bych chtěl uložit do dwg, tak bych musel exportovat a to je za peníze. (Vlastně nevím jak to je teď, ale kdysi před x lety to tak bylo). Nicméně, jako CAD nástroj vypadá víc než pěkně a schopně.
Gentoo je můj poslední velký linux test...

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.