Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kde se koná výstava fotografií Luďka Vojtěchovského?

V dnešní soutěži hrajeme o:



3d zobrazení

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: 3d zobrazení

Autor: peta1 ♂

15:55:28 10.06.2015

TC to pomerne jednoduse popisuje.

Kdyz jsem si hral kdysi s 3dmax 3, tak tam se nakreslil model normalne pomoci objektu. Treba valec mel drateny model valce. Po nakresleni, porpojeni objektu se pouzila jakasi funkce, ktera to prekreslila na trojuhelniky a vykreslila na to texturu. takze jsem mel pak moznost prepinat mezi modelem, trouhelnikovym modelem a vykresleny model texturou.
Co chces ty je propojeni model s texturou s puvodnim navrhem. Kde puvodni navrh ma zvyraznenou caru.
V podstate by se jednalo o dva objekty v sobe v norene nebo ten obrysovy nalepeny na nem z venci.

Cili, kdybych kreslil treba kostku, tak dam dva kostky do sebe. Vnejsi obrysovka a vnitrni zmensena o 1px s vyplni. Nebo obe stejne velke, ale ta vnejsi by byla vzdy bliz uzivateli (programove kreslena nebo fyzicky bych tam dal -1px na Z souradnici).

Citovat příspěvek

 

Re: 3d zobrazení

Autor: oxd ♂

23:45:58 04.06.2015

RomanZ: díky, už to začínám chápat.

Takže model není reprezentovaný klasicky seznamem bodů a plošek, ale nějakým pokročilejším seznamem entit a operací nad nimi. Tzn. třeba kruh(pozice, poloměr) + operace protáhnutí(délka) a pak se z toho vypočte drátěný model + obrysové hrany pro vykreslení nebo pro celkový výstup. Pak je možné vytvořit software pro parametrické modelování. Tzn. můžu zpětně změnit poloměr a zbytek se dopočítá.

Pak ten výsledný model ale asi není možné měnit (tahat body někam jinam, posouvat stěny), protože změnou parametru by se model pregeneroval a změny by se ztratily - to je trošku malé omezení. Ale asi to tak bude.

Zkoušel jsem aplikaci Sketchup a ten umožňuje nakreslit kruh o daném poloměru a vytáhnout ho do prostoru. Vznikne válec, kde můžu vybrat jeho plášť a i při otáčení je zobrazen výběr pláště pořád té strany, která je otočená ke kameře.
Aby to bylo možné tak musejí nějak v tom modelu kruhu+vytažení mít i nějaké plochy a u té příznak určující jestli je vybraná.

Když ve Sketchupu ten model zvětším tak jdou vidět hrany, tzn. že je to drátěný model s bodama (vertices) a ploškama (faces). Nad tím ale musí být nějaka informace o plochách objektu, protože když kliknu třeba na horní kruh, tak mi to nevybere jednu plošku toho kruhu (kruh je složený ve skutečnosti z několika plošek), ale několik plošek reprezentujících celý horní kruh. Možna je to tím, že leží v rovině, tak je to vybere všechny. Ale zase když kliknu na plášť toho válce, tak to rovina není. Plášť je ohnutý do kruhu. Takže nevím jak ze seznamu plošek vybrat ty, které reprezentujou nějakou plochu.

Pravděpodobně jsou ty plochy (group of faces) nějak vytvářeny při vytváření objektu. Tzn. dolní kruh je jedna plocha, při vytažení vznikne druhá reprezentující plášť válce a třetí plocha, která tvoří kruhovou plochu nahoře. Jakoby 3 skupiny plošek. Když se pak klikne do scény, nalezne se ploška (face), na kterou se kliklo, určí se, které ploše patří (třeba spodní, horní nebo plášť) a nastaví se příznak, že je vybrána. Pak by šlo celkem jednoduše vykreslit objekt, jeho plochy, hrany, vybranou část. Tak nějak by to možná mohlo fungovat.

Není tady někdo kdo tomu rozumí, třeba už něco takového implementoval a popsal by jak se to obecně dělá, jak jsou objekty reprezentovány, jak se s nima pracuje apod.?

Citovat příspěvek

 

Re: 3d zobrazení

Autor: TC1 ♀

8:53:28 14.10.2014

Samozrejme muzes jinak kreslit na spojnici ploch ktere lezi v jedne rovine a na spojnici ploch ktera tvori skutecnou hranu.

TC

Citovat příspěvek

 

Re: 3d zobrazení

Autor: TC1 ♂

8:50:36 14.10.2014

Plochu muzes vybarvit podle uhlu, ktery svira normala plochy a smer ke slunci a pokud trvaz na hranach, tak plochu obtahni. Vybarvovat muzes polopruhledne aby jsi videl dovnitr.

Zdravim

TC

Citovat příspěvek

 

Re: 3d zobrazení

Autor: RomanZ ♂

15:15:09 09.10.2014

TC1: Ano, ale on se ptal na hrany. Mrkni na obrazky (ma v clanku odkazy), zajimalo ho jak nakreslit ty hrany.

Citovat příspěvek

 

Re: 3d zobrazení

Autor: TC1 ♂

12:46:28 09.10.2014

Drateny model definuje objekt, tak ci onak ho musis zadat.

Jednotlive segmenty dratu definuji elementarni plochy. Je obvykle definovat model tak,, aby ty plochy byly roviny.

Kazdy vrchol, roh plochy, ma souradnice x0,y0,z0.

Zvolis promitani do plochy x,y a prepocitas [x0,y0,z0] do [x,y,z]

Seradis plochy podle z a postupne od nejzadnejsiho kreslis vsechny plochy. Serazeni zaridi, ze budes videt jenom to co neni zakryte.

Plochu muzes vybarvit podle uhlu, ktery svira normala plochy a smer ke slunci.

Zdravim

TC

Citovat příspěvek

 

Re: 3d zobrazení

Autor: RomanZ ♂

14:26:20 26.09.2014

Aha, tak už asi rozumím, jak to myslíš.
Mám takovou teorii, jak vznikl ten druhý obrázek:

Člověk maluje válec - nakreslí kružnici (kruh) a nechá ji protáhnout do prostoru. To je model vytvořený člověkem, známe průměr a výšku válce.
Kruhovou a válcovou plochu je potřeba kvůli zobrazování převést na rovné trojúhelníkové plochy. To už může udělat počítač samostatně. Vezme ten lidský model a "rozkrájí" ho na trojúhelníky.
No teď si myslím, že počítač u každého trojúhelníku dobře ví, která jeho hrana odpovídá skutečné (člověkem zadané) hraně lidského modelu a která hrana je jen společná s jiným trojúhelníkem. Takže když potom vykresluje obrázek, tak vždy namaluje plochu trojúhelníku a hned na něj vykreslí jeho hrany, ale jen ty, které odpovídají lidskému modelu.
Proč si to myslím:
1. Když se na ten druhý obrázek podíváš, tak vpravo nahoře je hrana, která odděluje kulatou část oka od té rovné plochy, a teoreticky by tam hrana být neměla, protože jen na válec navazuje tečna.
2. Ta samá válcová plocha nahoře nemá vidět hranu tam, kde se "válec ztrácí za horizontem". Kdybych to chtěl vylepšit, tak bych takovou hranu poznal jako vykreslovací podle toho, že vykreslovaný trojúhelník touto hranou sousedí s trojúhelníkem, který se nevyskresluje (není k nám otočen čelní plochou).

Aby nemuselo těch plošek na válci být hodně, dá se na to použít stínování. Podívej se na srovnání hranatého a stínovaného modelu zde (modely mají stejný počet ploch):
http://en.wikipedia.org/wiki/Gouraud_shading

Citovat příspěvek

 

Re: 3d zobrazení

Autor: oxd ♂

19:16:30 25.09.2014

Stínování modelu je mi jasné, drátěný model jsem už zobrazoval a na překrývání se používá z-buffer. Ale mě jde spíše o to jak to reprezentovat (když budu mít seznam ploch a jejich hran, tak pak už to zobrazím).

Normalně mám seznam bodů (vertices) a seznam trojúhelníkových plošek (faces) a ty jednoduše vykreslím přes OpenGL (lines, triangles). Ale vznikne objekt, který vypadá jako na tom prvním obrázku. Hrany jsou všude, plošky jsou všude. Chtěl bych nějak zobrazit a pracovat s modelem z druhého obrázku, který zobrazuje hrany jenom kolem těch ploch.

Takže takový model jak říkáš je tedy složený z ploch, které mají 3 nebo více než 3 body (faces). Když se teda kreslí, tak se před kreslením převádí na trojúhelníkové plošky. Vykreslí se a pak na to se ještě vykreslí hrany (lines) těch ploch. Jestli je to tak, tak to by nemuselo byt tak těžké. Ale asi bude těžké a čas. náročné převádět ty plochy na trojúhelníky. A musí jich být hodně.

Představuju si třeba válec definovaný 3 plochami: 2 plochy kruhů a 1 plocha zatočeného obdélníku. Ten zatočený obdélník bude muset být složený z dalších malých plošek - asi trojúhelníkových, a bude jich muset být hodně, aby to vypadalo dobře a né hranatě. Pro zobrazení by to asi šlo, ale co když budu chtít s tím modelem válce nějak pracovat (měnit rozměry, posouvat, otáčet, boolean operace)? A vlastně už to nebude plocha, protože už není v rovině, je zatočená, a to jak, udávají trojúhelníkové podplošky. Pak už zase nevím hrany, takže taková plocha bude muset mít, ještě seznam hran. Vím, že existujou ještě NURBS, ale ty už jsou dost komplikované, radši bych chtěl použít "hranatý" model.

Nešlo by to tak, že všechno budou trojůhelníky, ale nad něma budou ještě jakoby ty plochy, které je budou nějak řídit?
Čili bych měl body (vertices), na nich plošky (faces), na nich plochy (?) a mohl bych pracovat jen nad plochama a body a plošky by se nějak generovaly podle parametrů ploch. Jenže kde má třeba zatočená plocha umístěnou normálu, která říká rub a líc? Nebo co když bude mít plocha díru? Nedá mi to spát.

Citovat příspěvek

 

Re: 3d zobrazení

Autor: RomanZ ♂

9:09:06 23.09.2014

K takovému zobrazení nestačí samostné hrany. Potřebuješ model složený z ploch (každá plocha má hrany po svém obvodu).
Každá plocha má lícovou a rubovou stranu. Rubová strana jde "do materiálu", zatímco ta lícová reprezentuje povrch součástky.
Nejprve tedy odfiltruješ plochy, kterým se díváš na rub. Vypočteš normálu plochy a podle toho, jestli ukazuje směrem k Tobě nebo od Tebe tu plochu zahodíš a nebo si ji necháš.
Potom plochy seřadíš podle vzdálenosti. Nejprve kreslíš ty vzdálenější, aby se překryly, pokud před nimi bude nějaká bližší. Tady může být problém s velkými plochami, které se kříží (např. kdybys měl balzové házedlo, tedy obě křídla letadla jako jednu plochu a trup jako druhou, tak to nejde vyřešit, vždycky se to bude překrývat špatně).

Pokud nemáš texturu (obrázek reprezentující materiál, např. dřeva, papíru, železa) a chceš jen takový "solid" model, jaký máš na obrázku, tak můžeš znovu použít normálu a odstín pro vybarevení plochy vybrat podle toho, jaký úhel svírá normála. Např. čím je plocha víc nakloněná od pozorovatele, tím bude tmavší.

Je to takový primitivní popis, ale to co máš na obrázcích se tím dá vykreslit, zbytek už je na další studium.

Citovat příspěvek

 

3d zobrazení

Autor: oxd ♂

10:08:50 14.09.2014

ahoj, nevíte někdo jak se dělá zobrazní 3d modelu tak, aby byly vidět jen jeho hrany?

Např. když vytvořím model válce a zobrazím ho v izometrickém pohledu, tak půjde vidět kruh jako elipsa a pak horní a dolní hrana spojující pravou stranu válce. Nepůjdou vidět všechny úšečky 3d modelu. 3d modelem myslím seznam bodů a plošek. Ploška (face) spojuje tři body jak je to běžné.

Zobrazení, o kterém mluvím se používá např. v CAD programech. Jsou vidět jen důležité obrysy, které charakterizují součástku a ne celý drátěný model.

Ukázka:

Drátěný model: http://www.caddepot.com/gfx/syc0195_skp_import_iv.gif
To co myslím: http://www.forbot.pl/forum/upload_img/obrazki/IMG_4ca7c33875c882807.jpg

Chtěl bych něco takového zobrazit, ale nevím jak na to ani jak se tomu říká.

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: