Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.
sudo-rs, tj. sudo a su přepsáné do programovacího jazyka Rust, nahradí v Ubuntu 25.10 klasické sudo. V plánu je také přechod od klasických coreutils k uutils coreutils napsaných v Rustu.
Fedora se stala oficiální distribucí WSL (Windows Subsystem for Linux).
Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.
Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.
Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.
Již tuto středu proběhne 50. Virtuální Bastlírna, tedy dle římského číslování L. Bude L značit velikost, tedy více diskutujících než obvykle, či délku, neboť díky svátku lze diskutovat dlouho do noci? Bude i příští Virtuální Bastlírna virtuální nebo reálná? Nejen to se dozvíte, když dorazíte na diskuzní večer o elektronice, softwaru, ale technice obecně, který si můžete představit jako virtuální posezení u piva spojené s učenou
… více »Český statistický úřad rozšiřuje Statistický geoportál o Datový portál GIS s otevřenými geografickými daty. Ten umožňuje stahování datových sad podle potřeb uživatelů i jejich prohlížení v mapě a přináší nové možnosti v oblasti analýzy a využití statistických dat.
Kevin Lin zkouší využívat chytré brýle Mentra při hraní na piano. Vytváří aplikaci AugmentedChords, pomocí které si do brýlí posílá notový zápis (YouTube). Uvnitř brýlí běží AugmentOS (GitHub), tj. open source operační systém pro chytré brýle.
mged
, ale vězměme to pěkně popořádku.Stará geeky moudrost praví, že CSG začnete chápat, v momentě, kdy si prohlédnete libovolný objekt na ulici a tušíte, jak ho vymodelovat pomocí CSG, případně vám v hlavě rovnou vytane kompletní CSG strom. Pokud to chcete trénovat, nechoďte do lesa a vůbec si moc nevšímejte organických – nedejbože živých – předmětů. Základní princip spočívá v knihovně základních těles, anglicky zvaných „primitives“, v BRL-CADu potom „solids“, které kombinujeme pomocí základních operací: součet, rozdíl a průnik. Více najdete na Wikipedii. Vyvstává tedy otázka, jaká základní tělesa nám dává BRL-CAD k dispozici? Lakonicky řečeno, mnoho.
Komfortně můžete pracovat se čtyř- až šestistěny, libovolný mnohostěn samozřejmě můžete vytvořit také, jen to dá trochu více práce, dále máme k dispozici rotační tělesa (elipsoidy, anuloidy, para- a hyperbolodidy) a několik vychytávek, které usnadňují život s těmi vyloženě základními. Z mnohých si zmiňme primitiva jménem „ebm“, což neznačí electronic body music, ale extruded bitmap, tedy těleso vytvořené trasováním obrázku a vytažením vzniklé plochy o zadanou hodnotu. Další užitečný primitiv jest „dsp“ (i. e. displacement map) užívaný například k reprezentaci terénu a jako poslední si zmiňme „pipe“, neboli trubku, což je přesně to, co si myslíte. Ušetří spousty kombinačního opruzu při modelování vedení, vinutí a rour všeho druhu. Kompletní výčet základních těles najdete zde, nejužitečnější tělesa s obrázky potom "http://brlcad.org/gallery/s/diagrams/diagram.png.html">tady. Sluší se podotknout, že základní tělesa postupně přibývají, jak vývojáři implementují nové funkce.
Primitiva můžete v BRL-CADu, resp. mgedu, vytvořit několika způsoby. Textově zadáním všech potřebných parametrů (příkaz in
), textově z výchozích hodnot (příkaz create
) a pomocí GUI z nabídky Create.
Nejprve si připomeneme, co všichni známe z deskriptivy. Karteziánský trojrozměrný prostor nám určují tři navzájem kolmé osy x, y a z, od nichž odvozujeme polohu bodu v prostoru. Průmětna je rovina, na níž promítáme body, tělesa a vůbec, co nám libo. Pokud učiníme průmětnu rovnoběžnou s rovinou danou osami x a y, získáme půdorys (klávesa t), pokud nám průmětna rovnoběží s rovinou xz, čučíme na nárys. Ostatní pohledy rovnoběžné s rovinami xy, xz a yz už vykoukáte zde, ostatní pohledy, resp. situace, kdy je průmětna vůči základním rovinám orientována zcela libovolně vysvětluje tento obrázek.
Abych si ušetřil ťukání, budu používat stejné zkratky jako v minulém díle. Mged má dvě okna: Command Window (CW) a Graphics Window (GW), prvé slouží k zadávání příkazů, druhé k zobrazování a grafické editaci.
Primitiva můžete v BRL-CADu, resp. mgedu, vytvořit několika způsoby. Textově zadáním všech potřebných parametrů (příkaz in
), textově z výchozích hodnot (příkaz create
) a pomocí GUI z nabídky Create.
Nejprve si dobře prohlédněte spodní lištu CW. Najdete tam výčet hodnot, které určují, co a jak je zobrazeno v GW. Vezměme ty nejdůležitější hezky popořádku:
Levý klik do GW zvětší velikost zobrazené scenérie o jeden krok, pravý klik ho zmenší.
Na tomto modelu si procvičíme všechny CSG operace, zjistíme jak vytvořit pravoúhlý šestistěn pomocí souřadných souřadných rovin, naučíme se vyrobit pravoúhlý kruhový válec a ještě do modelu prskneme jednu kouli. Cílem našeho snažení je tento model.
Zalezte si do libovolného adresáře a spusťte mged:
> cd /libovolný/adresář > mged csg-cube.g
Vyskočí okénko s dotazem, zda si přejeme vytvořit databázi jménem primitives.g. Ničeho se neděste, žádné SQL se nekoná, BRL-CAD zkrátka každému modelu říká databáze.
Nejprve vytvoříme krychli o hraně 10 mm (na jednotkách v tomto případě nezáleží, prostě pracujeme s výchozími) a to pomocí souřadných rovin, to jest rovin kolmých na osy x y z.
mged> in cube.s rpp 0 10 0 10 0 10
Přeloženo do lidské řeči to znamená: vytvoř těleso třídy rpp jménem cube.s, minimum na ose x je 0, maximum na ose x je 10, minimum na ose y je 0, maximum na ose y je 10, minimum na ose z je 0 a maximum na ose z je 10. Rychlé a praktické, co říkáte?
Teď vyrobíme kouli.
mged> in sphere.s sph 5 5 5 6.5
Opět říkáme, že chceme těleso třídy sph, tedy kouli, chceme ji pojmenovat sphere.s, její střed bude na souřadnicích 5, 5, 5 a poloměr 6.5. Zatím brnkačka, už nám zbývají jen tři válce. Hurá na ten první.
in cyl1.s rcc 0 5 5 10 0 0 3.5
Až po rcc je vám to už určitě jasné, mrkněme na ta čísla. První tři (0, 5, 5) určují střed podstavy. Druhý triplet (10, 0, 0) nám říká, jak je položen střed druhé podstavy vzhledem k prvnímu středu, čili v tomto případě 10 mm ve směru osy x. A konečně poslední číslo určuje poloměr válce.
Pro jistotu si to ještě dvakrát zopakujeme na zbývajících válcích.
mged> in cyl2.s rcc 5 0 5 0 10 0 3.5 mged> in cyl3.s rcc 5 5 0 0 0 10 3.5
Pokud si to nemodelujete, vězte, že vaše GW by nyní vypadalo zhruba jako na přiloženém obrázku.
Máme základní tělesa, hurá na jejich kombinace. Ty se vytvářejí pomocí příkazu c
a lze použít také comb
, jediný rozdíl jsou tři údery do klávesnice navíc. Začneme součtem válců.
mged> c -c cyls.c cyl1.s u cyl2.s u cyl3.s
Parametr -c určuje, že se bude jednat o kombinaci. Druhou alternativou je -r, který říká, že to bude region, ale to teď necháme stranou. Kombinace se bude jmenovat cyls.c a sestává se z těles cyl1.s, cyl2.s a cyl3.s. Bystrý čtenář dovodí, že u
(od union) znamená součet.
Teď uděláme průnik krychle a koule.
mged> c -c roundcube.c cube.s + sphere.s
Ano ano, může to působit zmatečně, ale rychle se na to zvykne, znaménko + se používá pro průnik.
A nyní poslední operace, rozdíl dvou předchozích kombinací.
mged> c -r csg-cube.r roundcube.c - cyls.s
Nyní je asi na místě zmínit se o rozdíl mezi kombinací (-c) a regionem (-r). Základní rozdíl tkví v přidaných atributech, zatímco v regionu všechna dílčí tělesa sdílejí jeden materiál a jeden shader (vizte níže), v kombinaci tomu tak není. Záleží na modelu a praxi, kdy použít kombinaci a kdy region. Necháme to prozatím stranou a zobrazíme náš výrobek.
mged> B csg-cube.r
"B" pochází od „blast“ a mgedu tím říkáte: ukliď ten bordel a ukaž mi těleso/kombinaci/region jménem csg-cube.r. Moc se nezměnilo, že? Zkuste si, ale model vyrenderovat zadáním rt
do CW.
Všimněte si názvů těles, co je nalevo od tečky, je na vás, ovšem napravo od ní je dobré držet se určitého úzu. Základní tělesa dostávají příponu s, kombinace bez vlastního významu pro celý model příponu c, regiony příponu r. Vyšší celky, kterých už je méně a je tedy snadnější udržet si v nich přehled, dostávají příponu g, nebo taky žádnou. Vyšší hierarchické celky vypíšete příkazem tops
, stromovou strukturu celé databáze potom příkazem tree
, kterému též můžete zadat jméno nějaké kombinace/regionu a tím poznat jen dílčí část CSG stromu.
Chcete-li získat podrobné informace o tělese, použijte příkaz l jméno_tělesa.s
. Funguje to i na kombinace, ale dozvíte se totéž co příkazem tree. Podívejme se na těleso cube.s:
mged> l cube.s
Výstup bude vypadat takto:
cube.s: ARB8 1 (10, 0, 0) 2 (10, 10, 0) 3 (10, 10, 10) 4 (10, 0, 10) 5 (0, 0, 0) 6 (0, 10, 0) 7 (0, 10, 10) 8 (0, 0, 10)
Nejprve máme jméno tělesa a za dvojtečkou je jeho třída. Všimněte si, že ačkoliv jsme zadávali těleso jako rpp, nikoliv arb8, jak je zde vypsáno. Je to tím, že rpp – pravidelný pravoúhlý šestistěn – je zvláštním případem obecného šestistěnu a dosti nám šetří práci, jelikož nemusíme zadávat souřadnice všech osmi bodů.
U koule bude situace podobná:
mged> l sphere.s sphere.s: ellipsoid (ELL) V (5, 5, 5) A (6.5, 0, 0) mag=6.5 B (0, 6.5, 0) mag=6.5 C (0, 0, 6.5) mag=6.5 A direction cosines=(0, 90, 90) A rotation angle=0, fallback angle=0 B direction cosines=(90, 0, 90) B rotation angle=90, fallback angle=0 C direction cosines=(90, 90, 0) C rotation angle=0, fallback angle=90
Jak vidíte, koule je stejně jako v reálném světě analytické geometrie jen zvláštním elipsoidem a když si vypíšete parametry některého z válců, zjistíte, že to je vlastně jen komolý kužel, který má shodou okolností obě podstavy stejné.
Na závěr si ještě řekneme pár maličkostí.
Nyní si vyrobíme jednoduché autíčko. Ukážeme si základní postupy a jelikož výsledný model bude barevný, naučíme se i něco více o regionech. A už budeme i trochu klikat.
Vytvořte si databázi auticko.g a v ní dva hranoly:
> mged auticko.g mged> in podvozek.s rpp 0 100 0 40 0 20 mged> in kabina.s rpp 30 80 0 40 20 45
Vaše GW nyní vypadá podobně jako na přiloženém obrázku.
Nejprve si zobrazte protoautíčko hezky zprava (klávesa r, event. v menu View > Right), přidejte si k němu mřížku (Modes > Draw Grid) a nastavte jí velikost na milimetry (Settings > Grid Spacing > Milimeter).
Nyní posuneme horní hrany kabiny, aby autíčko mělo jakž takž aerodynamický tvar. Editaci tělesa můžeme začít buď v CW jednoduše sed kabina.s
, nebo skrze GUI: Edit > Primitive Selection a ve vyskočivším okně kliknout na kýženého primitiva. Takže už editujeme kabinu.s, co dál? Rozbalte nabídku Edit, uvidíte, že se změnila. Nás zajímá nabídka Move Edges. Víte kterou hranu vybrat? Jestli ne, skočte do View > az35,el25, situace se vyjasní. Opět se podívejte na model zprava, zvolte přichytávání k mřížce (Modes > Snap To Grid) a nazoomujte (levé myšítko zoom-out, pravé myšítko zoom-in, prostřední myšítko umístí střed, resp. posune výřez) na roh vlevo nahoře. Teprve nyní zvolte z menu Edit > Mode Edges > Mode Edge 78. Prostředním myšítkem klikněte co nejblíže bodu vzdálenému 10 mm ve směru osy x. Podobně jen opačným směrem posuňte hranu 34. Váš model by nyní měl vypadat zhruba jako na obrázku.
Nyní buď zadejte do CW accept, nebo zvolte Edit > Accept. Provedné změny budou zaneseny do databáze a octnete se zpět v zobrazovacím režimu.
Teď vytvarujeme karoserii, aby měla nějaké podběhy.
mged> in cyl1.s rcc 20 0 0 0 7 0 12
Tím získáme válec, jehož odečtením od podvozku.s získáme díru pro levé přední kolo. Ovšem ještě budeme potebovat tři další kola, co teď? Samozřejmě je můžeme zadat stejně jako první, ale to bychom si nijak nerozšířili repertoár modelovacích technik. Nejprve uděláme tři kopie tělesa cyl1.s.
mged> cp cyl1.s cyl2.s mged> cp cyl1.s cyl3.s mged> cp cyl1.s cyl4.s
Nyní můžeme vybrat každé kolo k editaci a na místo ho pomocí volby Edit > Translate přesunout na požadovené místo. Ale když víme kam přesně chceme celé těleso posunout, je váhodnější udělat to textově, pomocí příkazu tra
.
mged> e cyl2.s # zobrazíme těleso mged> sed cyl2.s # začneme ho editovat mged> tra 60 0 0 # přesuneme ho o 60 mm ve směru osy x (a 0 ve směru osy y a 0 ve směru z) mged> accept # přijmeme změny
Zbývající dvě tělesa přesuneme analogicky:
mged> e cyl3.s mged> sed cyl3.s mged> tra 60 33 0 mged> accept mged> e cyl4.s mged> sed cyl4.s mged> tra 0 33 0 mged> acccept
Podobnou technikou vytvoříme zesílení podvozku v místech, kudy budou procházet osy náprav:
mged> in zes1.s rpp 15 25 7 33 -5 0 mged> cp zes1.s zes2.s mged> e zes2.s mged> sed zes2.s mged> tra 60 0 0 mged> accept
A stejně tak vyrobíme válce, ze kterých záhy uděláme otvory pro osy:
mged> in vrt1.s rcc 20 7 0 0 26 0 2 mged> cp vrt1.s vrt2.s mged> sed vrt2.s mged> e vrt2.s mged> sed vrt2.s mged> tra 60 0 0 mged> accept
Nyní máme všechna tělesa potřebná na podvozek a přichází chvíle, kdy z nich uděláme region.
mged> c -r podvozek.r \ # vytvoříme region podvozek.r ( podvozek.s u zes1.s u zes2.s ) \ # sečteme základní kvádr a obe zesílení - ( vrt1.s u vrt2.s ) \ # odečteme součet otvorů pro osy - ( cyl1.s u cyl2.s u cyl3.s u cyl4.s) \ # odečteme součet otvorů pro kola
Odpočineme si na chvilku od těles a CSG a dáme našemu výtvoru nějakou barvu. Zobrazte si region podvozek.r.
mged> B podvozek.r
Zvolte z menu Edit > Combination editor. Do kolonky Name buď můžete jméno regionu vepsat, nebo z pomocí tlačítka na konci textového pole rozbalit menu a Select From All Displayed. Z vyskočivšího dialogu si potom vyberte požadovaný region. Nomen omen, combination editor slouží k editaci vyšších celků. V políčku Boolean můžete upravit jednotlivé operace (můžete kombinaci klidně kompletně předělat), zajímavější ovšem je, co se stane po kliknutí na tlačítko Show Shader.
Nyní můžete nastavit, jak se bude kombinace/region chvoat, když na ní dopadne paprsek. Je to na samotný článek, takže se tomu někdy příště budeme věnovat podrobněji, dnes pouze Zozbalíme menu vedle textového pole Shader a zvolíme Plastic, a z kolonky Color vybereme třeba zelenou. Tím máme zatím hotovo, takže klikneme na OK.
Hurá zpátky k tělesům, vyrobíme přední nápravu.
mged> in lpkolo.s rcc 20 -1 0 0 6 0 10 # Vytvoříme levé přední kolo. mged> cp lpkolo.s ppkolo.s # Zkopírujeme ho mged> e ppkolo.s # Zobrazíme ho mged> sed ppkolo.s # Začneme ho editovat mged> tra 0 36 0 # Posuneme ho tam, kde má být mged> accept # A toť vše, pokud jde o pravé přední kolo. mged> in osap.s rcc 20 5 0 0 30 0 1 # Vytvoříme osu přední nápravy mged> c -r napravap.r lpkolo.s u ppkolo.s u osap.s # Součtem práve vytvořených těles vytvoříme přední nápravu.
Abychom vytvořili zadní nápravu, můžeme postupovat humpolácky a všechny předchozí kroky zopakovat, jen o 60>mm dál ve směru osy x. Alternativní řešení pro kopírování a posouvání kombinací je použití mocného nástroje zvaného Build Pattern Tool. Najdete ho v horní liště GW Tools > Build Pattern Tool.
Vyskočí na vás poměrně komlikovaný dialog, ve kterém se nebudeme příliš vrtat. Nejprve nastavte Depth of Duplication na primitives (protože chcem kopie jednotlivých základních těles) a do políčka Objects vepište jméno regionu, který chcete rozmnožit, tedy napravap.r. Do políčka Source string můžete vyplnit textový řetězec, který chcete přepsat a do políčka Replacement String šoupněte nový řetězec. Teď mrkněte do pravého sloupce. Políčka No. in X/Y/Z Direction určují počet kopií v tom kterém směru a políčka Delta in X/Y/Z Direction udávají vzdálenost mezi jednotlivými kopiemi. Nás zajímají hodnoty na ose x, chceme jednu kopii o 60 mm vedle.
Až vyplníte formulář jako na přiloženém obrázku kliněte na OK a je hotovo (vpravo dole vyskočí modrý progress bar). Oknu zavelte odchod (Dismiss) a mrkněte, co přibylo do databáze.
mged> ls cyl1.s lpkolo.s_1 osap.s_2 ppkolo.s_2 cyl2.s lpkolo.s_2 podbehy.c/ vrt1.s cyl3.s napravap.r/R podvozek.r/R vrt2.s cyl4.s napravaz.r/R podvozek.s zes1.s kabina.s osap.s ppkolo.s zes2.s lpkolo.s osap.s_1 ppkolo.s_1 mged> tree napravaz.r napravaz.r/R u lpkolo.s_2 u ppkolo.s_2 u osap.s_2
Teď už jen obě nápravy šoupneme do jednoho regionu a podobně jako u kapoty mu nastavíme Shader na plastic a zvolíme černou barvu.
mged> c -r napravy.r napravap.r u napravaz.r
Pokud chcete procvičovat, zkuste výše užitými technikami vytvořit žlutá přední kulatá světla a obdélná zadní červená světla. Až to budete mít, vrhneme se na kabinu, naučíme se tam tělesa škálovat.
Naším cílem je zelená kabina s modrými okénky. Udělejte si kopii tělesa kabina.s (já jí nazval kabina_cut1.s), zobrazte ji společně s původní kabinou a pusťte se do její editace.
mged> cp kabina.s kabina_cut1.s mged> sed kabina_cut1.s
Použijte Edit menu a v půdorysu posuňte jednotlivé stěny podle obrázku, boční zatáhněte dovnitř, přední a zadní vytáhněte ven.
Poté zvolte pohled zleva nebo zprava a posuňte horní stěnu o něco níže.
Tím máme připravený terén pro přední a zadní okénko, čili změny akceptujeme a připravíme si metriál pro boční okénka.
mged> cp kabina_cut1.s kabina_cut2.s mged> sed kabina_cut2.s mged> e kabina_cut2.s mged> sed kabina_cut2.s
Opět pomocí Edit menu posuňte v půdorysu jednotlivé stěny podobně jako na přiloženém obrázku.
Nejprve pomocí odečtení předchozích dvou těles od původní kabiny vytvoříme karoserii střechy.
mged> c -r kabina.r kabina.s - ( kabina_cut1.s u kabina_cut2.s)
Vzniklému regionu dejte stejnou barvu, jako podvozku.
Už nám toho moc nezbývá, ještě vyrobíme okna.
mged> c -r okna.r kabina.s + ( kabina_cut1.s u kabina_cut2.s)
Regionu okna.r dáme nějakou modravou barvu a máme skoro hotovo.
Vytvoříme asambláž celého dosavadního snažení a zobrazíme ji.
mged> c -c auticko.g podvozek.r u napravy.r u kabina.r u okna.r u psvetla.r u zsvetla.r mged> B auticko.g
Pokud bychom vytvořili region (-r), tak bychom tím převálcovali všechna dosavadní nastavení shaderů a tím by autíčko ztratilo barevnost. Pokud si ho chcete vyrenderovat, vyberte v menu File > Raytrace a dialogy vyberte Raytrace. Kresbu schováte pomocí menu Framebuffer > Overlay.
V dnešním díle jsme prošli všechny CSG operace, ale možnosti BRL-CADu jsme sotva nakousli. V příštím pokračovaní si rozšíříme repertoár těles a detailněji se podíváme na renderování a osvětlení vůbec. Snad nebude prodleva tak dlouhá. Oba modely, které jsme dnes vytvořili si můžete stáhnout zde a zde.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
c -r csg-cube.r roundcube.c - cyls.skde mi napísalo:
WARNING: 'cyls.s' does not actualy existsnemá v tom príkaze byť cyls.c ako o pár riadkov vyššie? Prípadne naopak...