Generisanje “waffle” strukture iz uvezenih obj. fajlova, i priprema za 2d sečenje- III deo

5.2

Korak 1: Priprema modela

Biranje modela

Modele možemo izabrati i skinuti sa bilo koje od brojnih besplatnih biblioteka (Free3D, cgtrader… neke zahtevaju registraciju).Iz iskustva zaključili smo da model bi trebao da bude u obj. formatu, “polygon mesh” geometrije po mogućnosti ispod 10.000 poligona (game ready, low poly), i sastavljen od što manje zasebnih mesh-ova (3D printable ready). Takođe treba napomenuti da modeli iz softveras “blender” i “zbrush” su se pokazali lakim za rad.

U ovoj vežbi smo koristili modele koje ispunjavaju i ne ispunjavaju sve ove kriterijume da bi pokazali i moguće probleme u radu i probali da time unapredimo algoritam.

Korišćeni modeli:

  1. https://free3d.com/3d-model/diplodocus-v1–471374.html
  2. https://free3d.com/3d-model/american-paint-horse-nuetral-v1–575385.html
  3. https://free3d.com/3d-model/low-poly-tree-96065.html
  4. https://www.cgtrader.com/3d-models/furniture/chair/le-bambole-armchair-bb-italia

Uvoženje modela

Kad skinemo sa nekog od sajtova rar. datoteku i iz njega izvučemo obj. fajl modela, najjednostavnije da ga prevučemo u prozor otvorenog rhnoceros-a i idemo: import file>nothing; import OBJ objects (čekiraj)>ok.

Model proveriti, obrisati ako ima neki element viška. Proveriti merne jedinice: Tools>Options>Units i podesimo po želji. Takođe proveriti skalu i podesiti. Ako model ima previše poligona, moguće je dosta bezbedno smanjiti broj sa Mesh>Mesh Edit Tools> Reduce (izaberemo procenat).

Zbog načina na koji ćemo praviti algoritam nije neophodno da model bude centriran na presek osa (nultu tačku), ali je bitno da bude uspravan.

Korak 2: Smišljanje algoritma

Osnova algoritma6,0

Trebamo da ima mesto za uvoženje modela (mesh) i kutiju (box) formiranu u odnosu na model.Kutiji ćemo takođe dati mogućnost rotacije (Rotate) i skaliranja (Scale). Ona će nam poslužiti kao mali koordinantni sistem u odnosu na koji ćemo sve pozicionirati i menjati dalje u algoritmu, pa ćemo je sa komandom DeBrep rastaviti na potrebne delove. Posle bilo koji od elemenata biramo sa definiciom Item, index elementa biramo sa NumberSlider-om. Ovo će nam dati mogućnost da ne moramo precizno postavljati model da bi radili sa njim i takođe omogućava rad sa više modela istovremeno.

Pozicioniranje preseka7,0

Treba odrediti osu (zapravo duž) u odnosu na koju sečemo model, broj preseka kao i njihov raspored ako je moguće.

Ose uzimamo sa naše osnovne kutije iz prethodnog koraka. Broj preseka treba da bude podesiv i nalazimo ga tako što dužinu ose (tj osu) delimo sa željenim brojem (NumbSlid+PFrames) da bi našli dužinu segmenta između preseka. Rasporedom smo manipulisali na način, umesto da ostavimo duž sa ravnima preseka (isti onaj NumbSlid+PFrames) (ravni su upravne na duž), i te ravni da seku model (PlOrigin>Sec), mi smo tu duž zakrivili (End;A+B;Item>Cat) (podesivo je). Ako stavimo da ortogonalni preseci na zakrivljenoj duži seku (PCX) pravu duž, (sa istim početnim i krajnjim tačkama) dobićemo novi raspored presečnih tačaka, povećane gustine u centralnoj zoni. Takođe moguće je fino podesiti preseke “levo-desno” tj “napred-nazad”(Move) proporcionalno po dužini ose.

*Iako postoji comanda contour, koja je jednostavnija za pripremu, konstantnije rezultate preseka smo dobijali sa mesh/plane (sec) komandom.

Uređivanje preseka8,0

Pri operaciji mesh/plane(sec) može doći do određenih problema i neželjenih rezultata kao što su neželjeni preseci, otvorene linije ili prekomplikovane konture.

Neželjene preseke ćemo rešiti ručnim otklanjanjem, čekiranjem (ValueList>Item). Otvorene linije rešavamo pronalaženjem njihovih krajeva i spajanjem (Crv>End>Line>Join). Prekomplikovane ili oštre konture se rešavaju direktno komandama RedPLine i SmoothPLine.

*Postoje situacije kada imamo 2 ili više preklapajućih koplanarnih kontura a željeni rezultat je njihova unija tada koristimo komandu RUnion, ali često ume da se ponaša na nepredvidiv način. Ovo zahteva ručno prespajanje algoritma.

Zasecanje preseka

9,0

Da bi zasekli preseke moramo prvo da im damo debljinu (extr). Pre extruzije ćemo pomeriti presek za polovinu dužine u suprotnom pravcu vektora pomeranja (Move sa expresiom -(x/2)). Vektor pomeranja pravimo od krajnjih tačaka (end) jedne od horizontalnih linija iz naše kutije na početku i komande Vec2Pt. Rezultat ćemo podeliti (A/B) sa dužinom prvobitne horizontalne duzi (End>Ln>Len) da bi doboli jedinični vektor koji je lakši za rad. Ovo je deo kad se 2 stabla algoritma spajaju. Ukrštamo preseke sa komandom BBX, nepravilnosti ispravljamo sa BBox i pomeramo ih za polovinu dužine elemenata po Z osi u oba smera, ovde smo opet razdvojili algoritam. Radi sigurnosti skaliramo elemente minimalno i sa SDiff komandom volumene štapova oduzmemo od preseka.

*Kod štapova koji imaju kratke prekide desi se da komanda BBox zanemari prekid i što bi trebalo da bude 2 iliviše kolinearna štapa pretvori u 1. Ovo nekad znači da dođe do potpunog otsecanja elemenata od celine, i bivaju neupotrebljivi. Ovo za sad ispravljamo prosto nalaženjem boljih preseka, ali bi trebalo naći bolje rešenje.

Prostiranje preseka po površini10,0

Da bi model pripremili za 2d sečenje, od dobijenih zasečenih tvorevina (preseka) trebamo da uzmemo odgovarajuće konturne (Item>Plane) linije i da ih prostremo (Orient) po željenoj površini, koju uzmemo odakle želimo, organizovane u tabelu pomoću komande RecGrid. Na kraju smo numerisali preseke (Points) radi lakšeg raspoznavanja pri sklapanju.

*Način organizacije preseka bi trebalo možda jednostavnije uraditi.

Rezultat rada za jedan model

11,0

Published
Categorized as Opšte

Generisanje “waffle” strukture iz uvezenih obj. fajlova, i priprema za 2d sečenje- II deo

Proces rada i mogući problemi

Presentation2U dijagramu je dat postojeći proces dobijanja waffle strukture i željeni pojednostavljeni proces kome težimo. Zapremine predstavljaju uloženo vreme (ne potpuno proporcionalno).

Novi proces

Korak 1: Priprema modela

Možda najveća ušteda vremena se može postići ovde. Umesto smišljanja oblika za obradu, i njegove materijalizacije modelovanjem (što su 2 relativno složena i vremenski zahtevna mentalna procesa), mi samo trebamo da izaberemo oblik koji nam se sviđa i uvezemo ga u program. Uvozimo iz jedne od brojnih besplatnih 3D biblioteka (Free3D, TURBOSQUID, cgtrader, Clara.io, GRABCAD, Sweet Home 3D itd…) Ovaj korak iako ne mora da bude, je zapravo jedna nagodba (tradeoff) željene preciznosti izvedbe za vreme.

Mogući problemi

  • Nepodržani format modela
  • Veliki broj poligona
  • Komplikovana geometrija

Ove osobine modela trebamo izbegavati pri selekciji, ali takođe trebamo se sa njima što bolje izneti i u narednom koraku, smišljanja algoritma, jer se prenose i na njega.

 Korak 2: Smišljanje algoritma

Algoritam nam ubrazava već ustanovljeni proces (proces u Rhnoceros-u)  pravljenja waffle strukture na osnovu izabranog modela. U zavisnosti koliko smo loši i spori ili dobri i brzi u korišćenju programa (Rhnoceros), algoritam će nam (Grasshopper) uštedeti više ili manje vremena.  :D

Mogući problemi

  • Pozicioniranje modela
  • Postavljanje pravca i broja preseka
  • Regulacije nepravilnosti u presecima
  • Davanje debljine presecima
  • Zasecanje preseka
  • Prostiranje preseka po izabranoj površini

Ovo su samo očigledni problemi, svaki od njih će imati određene kompleksnosti o kojima ćemo pričati u završnom postu, a verovatno će biti i nekih neočekivanih.

Korisni linkovi u pripremi za rad (pogledati datim redosledom)

  1. https://www.youtube.com/watch?v=NbAt-SioOp4
  2. https://www.youtube.com/watch?v=KtKNuogoYKc
  3. https://www.youtube.com/watch?v=G4R2SKG6xhs
Published
Categorized as Opšte

Generisanje “waffle” strukture iz uvezenih obj. fajlova, i priprema za 2d secenje- I deo

Waffle strukrure su zanimljiv način aranžiranja elemenata, vizuelno neobične, strukturno imaju osobinu da dobro nose silu u skoro svim pravcima, i mogu u zavisnosti od osobina njihovih intersekcija da se spljošte u 2 pravca i da smanje svoj realni, funkcionalni volumen. Takođe u opštem slučaju su relativno jednostavne za izradu. Sa ovim osobinama mogu biti rešenja na brojna pitanja u raznim sferama dizajna i nosećih konstrukcija te imaju realni potetencijal i atraktivna su tema za istraživanje.

Želja studenta ovde je da se ubrza proces generisanja, i pripreme za sečenje “waffle” struktura u programu Rhnoceros.

b_730_d0c28d182a724b149e805316d33661c0Lagani uvod u proces pravljenja ovih struktura u sledecem postu… :)

 

Published
Categorized as Opšte