2013. augusztus 9., péntek

waffle modell készítés 3.

Negyedik feladatunk: 

síkbeli kép megalkotása és leforgatása nyomtatáshoz

Ahhoz, hogy megkapjuk a síkbeli, nyomtatható, zárt vonalláncát a metszeteknek, nem kell sokat tennünk.
Először is az előző bejegyzésben létrehozott szelvényeket középen [EVALUAT BOX] egy síkkal [XZ vagy XY] elmetsszük [BREP/PLANE].
Ilyesmit fogunk kapni:



Itt most kicsit neki kell állni matekozni és gondolkozni. Ki kell szűrni a túl apró szeleteket, mert vannak olyan picik is ami kivágásra alkalmatlan. (Ezek valójában hulladékok, a illesztési hézagok kivágásakor keletkező, lehulló csücskök, illetve szerencsétlen helyre kerülő mini szeletkék.)
A frissen kapott görberendszerünket mérjük meg. Mekkora a területe. Ezt a számot összemérjük egy általunk meghatározott minimális nagysággal. Jelen esetben az alapforma nagyobbik oldalsíkjának (xz vagy yz) 0,1% kiszűri a hulladékot. Ehhez vesszük az alapforma x és y oldalvonalát, megmérjük a hosszát [LENGHT] majd egy [MAX] függvénnyel megkapjuk a nagyobbat. Egy szorzással megkapjuk a területet. Növeljük 0,1 százalékkal a kapott értéket és egy kisebb/nagyobb függvénnyel hasonlítsuk össze a metszett görbénk területével [AREA]. Ez nem pontos mérés és nem pontos eredmény. DE a feltűnően apró szeleteket kiszűri. A [CULL PATTERN] segítségével a meglévő [SEC] listánkból [FLATTEN is kell] létrehozzuk a csökkentett görbelistánkat.

Az így kapott CURVE-öket most leforgatjuk az [ORIENT] segítségével. Cél az [XY] sík. Forrás pedig a metszősíkok [XZ vagy YZ]. duplázzuk meg a korábban elkészített [CULL PATTERN] függvényeinket, és szűrjük ki velük a felesleges metsző síkokat is. Az így kapott listát használjuk forrás-síkoknak.
Ne ijedjünk meg elég ronda lesz. Győződjünk meg róla, hogy a görbék bevitele le van "lapítva" [FLATTEN]. Úgy még rondább. :]
Most ezeket a leforgatott görbéket "egyesével" kirakjuk egy táblázatba (rácsháló). Az elrendezés tetszés szerinti (1-2-100 oszlop), én ezt az egy oszlopos megoldást találom a legkezelhetőbbnek.
Hozzunk létre egy hálót [RECGRID]. Ki kell számolni, hány szeletünk van. Ez alapján fogjuk a táblázat celláiba illeszteni. Minden elemhez egy saját cellát rendelünk. [Ey] legyen tehát a szeletek száma. [Sx] legyen a maximális szelvényszélesség ([MAX] alapforma X vagy Y oldaléle]) [Sy] pedig az alapforma Z oldaléle.

 Kezdjük az elemek megszámlá
lásával. [LIST LENGTH] az xz és yz irányú szeleteket külön kezeljük. Először kezdjük az xz-vel. Hozzunk létre egy tartományt [DOMAIN] melynek [A] értéke [0], [B] értéke pedig a [listánk hossza-1]
A RECGRID-ünk hálópontjaiból [P] kiválasztunk annyit, amennyi xz irányú metszetünk van. Ehhez [SUB LIST] függvényt használunk, melybe a hálópontokat bekötjük és [FLATTEN]-re állítjuk.
Az yz irányban annyival térünk el, hogy onnan akarjuk folytatni az elemek feltöltését, ahol az xz-t abbahagytuk. Ezért a hozzá tartozó tartomány [A] értéke legyen az [xz lista hossza], [B] értéké pedig az [xz lista hossza + yz lista hossza -3]. majd ismét sub list függvényt használunk.
Mozgassuk el a szeleteinket a hálópontjukhoz. Keressük meg a szeletek [BOX CORNERS]->[A] pontját és a kilistázott hálópontjaink között hozzunk létre egy vektort [VEC2Pt]. Ez lesz a mozgatási irányunk [MOVE]

Ekkor már kész is lennénk, azonban még egy kis segítséget csináljunk magunknak.


Ötödik feladatunk: 

Feliratozzuk a szelvényeinket, hogy könnyebben összerakhassuk a modellünket vágás után.


A felirat elhelyezése modelltől függhet, és igénytől, én szeretem ha bele kerül a szelvénybe így nem kell ráírogatni utána. Van amelyik kicsúszik majd a görbéből, de ezeket majd manuálisan helyre rakhatjuk.
Hozzunk létre egy sorozatot [SERIES]: [S] = 1 [N] = 1 [C] = [LIST LENGTH] (amely a szelvényeink számát hozza). Az így kapott számot egésszé formázzuk [INT] függvénnyel, majd a [CONTACT] függvénnyel egyesíteni fogjuk a szelvény irányának betűjelével [B]=[x] ezeket egy [3D TEXT TAG] segítségével meg is jelenítjük.



Nincs más hátra mint megsütni a kész szelvényeket és feliratokat. [BAKE]

Ezek után úgy rendezzük a szelvényeket ahogy jól esik. Én szoktam rajzolni egy a/4es méretű téglalapot és abba helyezem a metszeteket, hogy gazdaságos legyen.



UTOLSÓ feladatunk: 

Nyomtassunk, daraboljunk!
A nyomtatást gondolom nem kell részleteznem Rhinóból.
Nyomtassunk sima papírra. Tegyük alá az indigós papírt, és kézzel, kényelmesen rajzoljuk át a kartonunkra. Ne felejtsük el a feliratozást! Én mikró hullámkartont használtam. Feketét. Ilyen hulladékom volt. A barna jobb választás, jobban fotózható és látható. Az első posztban láthattátok a másik modellemet is. De jó választás lehet a habkarton, sima hullámkarton is. Nagyobb modellekhez használjunk vastagabb kartont.
A kivágást nagyon éles sniccerrel végezzük. Esetleg hegyes modellező pengével. Illesszük össze a számozás alapján.

KÉSZ



definíció: waffle_tutorial.gh




waffle modell készítés 2.

Harmadik feladatunk: 

illesztési hézagok létrehozása



legutóbb vastagságot adtunk a szeleteinknek, most illesztési hézagokat fogunk rajta létrehozni. Ehhez azonban először a sík szeleteket vegyük kézbe.

Hozzuk létre a metszésvonalukat. [BREP/BREP] Ne feledjük, hogy a  [planar surf] síkjainkat használjuk most. Az egyik beviteli nod-ot e kell "butítanunk" [FLATTEN] , hogy az összes metszett görbét megkapjuk.
Hozzunk létre a görbénk végpontján egy négyzetet [RECTANGLE] melynek X és Y értékét az anyagvastagság függvényében határozzuk meg. [itt megjegyzem érdemes egy kicsit megnövelni az értékeket 1%-10% között, hogy a szilárd test művelet sikeres legyen]. A létrehozott négyzet középpontja essen egybe végponttal. Mozgassuk el ha szükséges.
A metszetgörbéink feléig [CRV LENGTH/2] extrudáljunk pálcákat. zárjuk is le őket [CAP]. [megjegyzés: a méretet ismét érdemes megnövelni Z irányban: egy 10% legalább kell mindkét irányban. SCALE vagy az EXTRUDE értékeinek manipulálásával. Ez azért kell, mert ahogy említettem a görbe felületet teljesen át akarjuk metszeni, és metszetgörbéink csak egy pontból hozzák a hossz értékeket.]
Mozgassuk el a pálcáinkról egy másolatot azok aljáig: a két pálca találkozik, fölül és alul 10%-kal kilóg az alapformából.
Az XZ irányú síkokból az egyik (felső) pálcahalmazt az YZ irányúból pedig a másik (alsó) pálcákat vágjuk majd ki.
 Ezeket egyszerű szilárd test művelettel végezzük [SDIFF] mindkét beviteli adatot "lapítani" kell. [FLATTEN]



waffle modell készítés 1.

A tutorial nem kezdőknek készül, de ők is megbirkózhatnak vele, ha egy kicsit önállóan böngészik a grasshoppert. A lecke során megemlítem az alapvető problémát majd a megoldást kifejtem, de minden részletet nem fogok a szádba rágni, gondolkozni is kell, hogy tanulj. A tutorial végén természetesen közzéteszem a kész algoritmust, hogy ellenőrizd a munkád, vagy segítségnek használhasd.

Nekem is ez lesz az első, ezért megjegyzéseket, kívánságokat, problémákat szívesen fogadok. Ha valami nem tiszta, nyugodtan lehet kérdezni. Én is tanulás végett készítem ezeket a leckéket, nem vagyok profi. Úgy remélem együtt tanulhatunk valamit.

Szükségünk lesz: rhino+grasshopper; nyomtató; 2-3 nyomtatópapír; 1db indigó; éles sniccer/penge/szike
és nem utolsó sorban TÜRELEM.


Alapformának én ezt a  3db zárt curve-ből loft-tal előállított modellt választottam. [A textúrát az ívesség jobb megjelenítése végett tettem a modellre.]
Ebből próbálunk meg létrehozni egy makettet, ami a végén így fog kinézni:




Essünk hát neki

Nyissuk meg a grasshoppert. Rendeljük az alapformánkat egy [GEOMETRY] node-ba.


Első feladatunk: 

szeleteljük fel a modellt két, egymásra merőleges [XZ,YZ] síkban.


Itt két féle irányban mehetünk neki a feladatnak. Vagy fix távolságonként (paraméter) készítünk szeleteket vagy fix mennyiségű (paraméter) szeleteket akarunk létrehozni. Én úgy gondolom, a megadott számú szeletekkel biztonságosabban hozhatjuk létre a modellünket. Kisebb az esély hogy nyomorék szeletet kapunk a modell szélén és azok kiszűrésével  így nem kell szarakodnunk. A szeletek számának változtatásával pedig kedvünkre sűríthetjük a modell osztását, de pontos és x-y irányban azonos távolságot nem fogunk kapni.
Ha fix távolsággal szeretnéd folytatni tovább, annyi segítség, hogy egy hálót hozz létre x-y síkban a modell alatt.
Én viszont az osztások számát határozom meg.
Hozzuk létre a modellünk befoglaló dobozát [BOUNDING BOX]
A tégla sarkaiból összekötjük a megfelelőeket, hogy megkapjuk a kiválasztott pontból kiinduló X Y és Z éleket.[BOX CORNER+LINE] Ezek segítenek a tájékozódásban, illetve szükség is lesz rájuk.
Az x és y oldalt felosztjuk a szükséges szeletek száma +1 szakaszra [DIVIDE CRV(N=N+1)]
Az így kapott osztópontokra készítünk metsző síkokat. A kezdő és végpontot azonban el kell hagynunk. Ha egy derékszögű testet használnánk alapformának, pl.: kocka, akkor annak oldallapjából is kapnánk egy szeletet.
Hozzunk létre egy tartományt [DOMAIN] melyet az osztópontok száma alapján hozunk létre. Lecsapjuk az első értéket, illetve az utolsót. Az [A] érték legyen [1] a [B] érték pedig [[LIST LENGHT]-2]. Ezt könnyű belátni, mert listaként értelmezzük az osztópontokat, és a lista a 0-ik helyen kezdődik. Létrehozzuk ezután az "allistát". [SUB LIST].
Hozzuk létre ezekbe a pontokba a metszősíkainkat: [YZ;XZ] Ezekkel a síkokkal fel is osztjuk a modellünket [SEC BREP/PLANE]
itt tartunk eddig:





Második feladatunk: 

Határozzuk meg a felhasznált anyag vastagságát [térbeli modell létrehozása]


A létrehozott szeleteinket extrudálnunk kell. Eldönthetjük mi a jó nekünk, ha egy kicsit kiborul az egyensúlyból a modellünk és anyagvastagságnyival "kihúzzuk" a megfelelő XZ vagy YZ síkban vagy előbb 0,5 anyagvastagsággal az ellenkező irányba mozdítjuk, majd ezután húzzuk ki. Így a helyén marad az elem.
Egy problémát itt fel kell hozni. Mivel egy görbülő formáról van  szó a szeletünk kihúzása után nem fog tökéletesen illeszkedni a formánkhoz. Ha a felület ívesen emelkedik akkor egyik oldalon magasabb másik oldalon alacsonyabb lesz a valós formához képest. Ezt le kell nyelni. Kisebb problémát is okoz az illesztési hézagok létrehozásánál, de orvosolható egy kis trükkel.


Lépjük hát meg az előző feladatokat: definiáljunk egy slidert, amely az anyagvastagságot képviseli.
Az XZ síkban álló szeleteinket mozgassuk el [MOVE] az Y egységvektor [UNIT Y]segítségével. Az egységvektorba kössük bele a sliderünket és az expression segítségével osszuk el kettővel az értékét. YZ síkban egyértelműen az X egységvektorral dolgozunk.
Ezek után "húzzuk" ki a síkból [EXTRUDE]a szeleteket az ellenkező irányba [UNIT Y + REVERSE], teljes anyagvastagsággal.



A következő bejegyzésben folytatjuk az illesztési hézagok elhelyezésével.
Az algoritmus eddigi definíciója: waffle_step2.gh

2013. július 22., hétfő

amorf formák waffle modellezése (DIY)

Az amorf, íves és organikus formák modellezése régóta gondot okoz. Erre ad (olcsó) megoldást a waffle módszer. Persze a lézervágás, a 3d nyomtatás és cnc marás nagy divat, de ez nem mindenki számára elérhető (anyagilag).


Ha létrehozunk egy nekünk tetsző építményt digitálisan, a kétszeresen görbült felületek teljes, tömör modellezése szabad kézzel szinte lehetetlen. Ezért egyszerűsítünk. A modell csak egy benyomást kelt az épület tömegéről. Ez egy nekünk elég is lehet, hogy terepmodellbe illesszük, ellenőrizzük a léptékeket, arányokat.



A modellünket felszeleteljük, lenyomatukat pedig kinyomtatjuk. Kivágjuk a formákat és összeillesztjük a számozás alapján.



A következő bejegyzésben megmutatom, hogyan kell egy ilyen modellt létrehozni. Grasshopperben létrehozzuk az algoritmust. Kinyomtatjuk a szelvényeket, majd hullámkartonra varázsoljuk és kivágjuk.


2013. június 30., vasárnap