BK4070 - Informatica Large Workshop 3 - Scenario’s & scripten
Technisch Ontwerp en Informatica
Eenvoudig model opzetten
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Eenvoudige volumes in maya opzetten - ga uit van schaal 1:500 - gevelopeningen zonder kozijnen e.d. - simpel meubilair t.b.v. het gebruik van de ruimte
Technisch Ontwerp en Informatica
2/42
Vectorrender maken
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Vectorrender naar .ai - Render using > Maya Vector - Common tab > Image format > Adobe Illustrator (ai) - Maya Vector tab > Fill Objects > uit - Maya Vector tab > Include Edges > aan - Camera Background Color > wit
Meer info > TOI-Pedia > Maya Vector Render to Illustrator Technisch Ontwerp en Informatica
3/42
Opwerken in Illustrator
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
‘Inkleuren’ met Live Paint Bucket
Technisch Ontwerp en Informatica
4/42
Opwerken in Photoshop
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Schaduwpartijen aangeven in Photoshop
Technisch Ontwerp en Informatica
5/42
Combineren
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Photoshop schaduwen naar Illustrator d.m.v. ‘place’
Technisch Ontwerp en Informatica
6/42
Aankleden
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Verder aankleden om ‘gezelligheid’ te creëren
Technisch Ontwerp en Informatica
7/42
Aankleden
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
It’s not exact sience!!!!
Technisch Ontwerp en Informatica
8/42
Opdracht •
Maak 2 scenario’s
•
Timely:
•
Meer info:
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Minimaal 1 interieur, de andere eventueel een exterieur
Dag van de tussenpresentatie vóór 9:00uur
- TOI-Pedia - TOI website > Bsc4 - @hok
Technisch Ontwerp en Informatica
9/42
Data exchange •
•
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Zorg voor duidelijke afspraken!!
Bestand structuur Layer gebruik Schriftelijke omschrijving
Reference!!
AutoCAD naar AutoCAD (teken alleen wat je moet tekenen) MAYA naar MAYA AutoCAD naar MAYA Gebruik TOI-pedia voor uitleg!
Technisch Ontwerp en Informatica
10/42
Je eigen tool in maya
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Uitbreiden van de functionaliteit van Maya Maya is een zeer uitgebreid softwarepakket met een boel ‘features’, maar de grootste feature is misschien wel de flexibiliteit. Deze flexibiliteit geeft de mogelijkheid Maya aan te passen of uit te breiden voor specifieke doeleinden en situaties. Technisch Ontwerp en Informatica
11/42
Je eigen tool in maya
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Technisch Ontwerp en Informatica
12/42
Je eigen tool in maya
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Voorbeelden if (`window -exists trapwindow`) deleteUI -window trapwindow; string $window= `window -t “Steektrap” -w 400 -h 100 -mxb 0 -rtf 1 trapwindow`; columnLayout -columnAttach “left” 0; separator -height 10 -st none; floatSliderGrp -l “Hoogte Trap in meters” -field true -changeCommand “maten” -minValue 0.1 -maxValue 8.0 -fieldMinValue 0.1 -fieldMaxValue 8.0 -value 2.8 hoogte; floatSliderGrp -l “Breedte Trap in meters” -field true -changeCommand “maten” -minValue 0.8 -maxValue 10.0
Technisch Ontwerp en Informatica
-fieldMinValue -0 -fieldMaxValue 10.0 -value
13/42
Je eigen tool in maya
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Script Editor
Technisch Ontwerp en Informatica
14/42
Je eigen tool in maya
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Script Editor •
Nadelen: - wanneer Maya crasht ben je het script kwijt - niet erg overzichtelijk
•
Oplossing: - scripts extern aanmaken en bewerken bijvoorbeeld in Crimson Editor
Technisch Ontwerp en Informatica
15/42
Je eigen tool in maya
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Crimson Editor Gratis te downloaden op http://www.crimsoneditor.com/ Script opslaan als ****.mel kleurcodering van verschillende onderdelen van het mel script
Technisch Ontwerp en Informatica
16/42
Je eigen tool in maya
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Alles is gescript Create > Polygon Primitives > Cube
Alles wat je doet wordt getoont in de Script Editor, in de ‘Command History’
Technisch Ontwerp en Informatica
17/42
Computers zijn dom
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Voordat we het scripten induiken eerst een waarschuwing:
Computers hebben strikte regels nodig om een script te kunnen begrijpen! - alles is hoofdlettergevoelig - elk ‘command’ wordt afgesloten met een ; aan het eind - opmerkingen worden vooraf gegaan met // - opmerkingen over meerdere regels worden geplaatst
tussen /*[opmerking]*/
Technisch Ontwerp en Informatica
18/42
Commands
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Commands zijn acties die je wilt uitvoeren
het command ‘polyCube;’ genereert bijv. een Polygon Cube
een overzicht van de commands vind je onder: help > MEL command reference http://toi.bk.tudelft.nl/maya/help/docs/Maya2008/en_US/Commands/index.html
Technisch Ontwerp en Informatica
19/42
Flags
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Flags zijn opties voor commands
‘polyCube -w 1 -h 2 -d 3;’ genereert bijv. een Polygon Cube van 1 x 2 x 3 units i.p.v. 1 x 1 x 1 units
een overzicht van de flags per command vind je ook in de command reference http://toi.bk.tudelft.nl/maya/help/docs/Maya2008/en_US/Commands/index.html
Technisch Ontwerp en Informatica
20/42
Een eerste voorbeeld
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
polyCube; polyCube -w 1 -h 2 -d 1; move -r 2 0 0; polyCube -w 1 -h 3 -d 1; move -r 4 0 0;
Technisch Ontwerp en Informatica
21/42
Variabelen: int, float, string
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Een variabele geeft je de mogelijkheid een naam te geven voor een bepaalde waarde 3 soorten: int $heel_getal = 1; float $dec_getal = 0.15; string $tekst = “Dit is voor een tekst”; Een variabele moet je altijd eerst declareren (aangeven of het een int, float of string is). Het is wel mogelijk om direct een waarde toe te kennen bij het declareren (zoals hierboven).
Technisch Ontwerp en Informatica
22/42
Het voorbeeld met variabelen
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
int $width = 1; int $height = 1; int $depth = 1; int $distX = 2; polyCube -w $width -h $height -d $depth; polyCube -w $width -h (2* $height) -d $depth; move -r $distX 0 0; polyCube -w $width -h (3* $height) -d $depth; move -r (2*$distX) 0 0;
Technisch Ontwerp en Informatica
23/42
Variabelen: int[], float[], string[]
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Naast een gewone variabele voor een enkele waarde, is er de ‘array’ voor meerdere waarden wederom 3 soorten: int $hele_getallen[] = {1,2,3}; float $dec_getallen[] = {0.15,0.25,0.35}; string $teksten[] = {“Jan”,”Kees”,”Piet”}; $hele_getallen[0] = 1 $hele_getallen[1] = 2 $hele_getallen[2] = 3
Technisch Ontwerp en Informatica
24/42
Het voorbeeld met een array
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
int $afm_cube[] = {1,1,1}; int $distX = 2; polyCube -w $afm_cube[0] -h $afm_cube[1] -d $afm_cube[2]; polyCube -w $afm_cube[0] -h (2* $afm_cube[1]) -d $afm_cube[2]; move -r $distX 0 0; polyCube -w $afm_cube[0] -h (3* $afm_cube[1]) -d $afm_cube[2]; move -r (2*$distX) 0 0; Technisch Ontwerp en Informatica
25/42
Controle structuren
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Controle structuren geven de mogelijkheid condities vast te stellen waaronder commands worden uitgevoerd We behandelen vandaag 2 controle structuren: •
for
•
if...else if...else Technisch Ontwerp en Informatica
26/42
Controle structuren: for
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Met de controle structuur ‘for’ maken we een loop for (initialisatie; conditie; verandering) { .....; } - initialisatie: startwaarde van de loop - conditie: wordt bij elke iteratie gecontroleerd. Wanneer
de conditie ‘waar’ is wordt de loop uitgevoerd. Is de conditie ‘onwaar’ wordt de loop beëindigd en gaat het script onder de loop verder. - verandering: vernadering van de conditie
Technisch Ontwerp en Informatica
27/42
Het voorbeeld met een for-loop
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
int $afm_cube[] = {1,1,1}; int $distX = 2; for ($i = 0; $i < 3; $i = ($i + 1)) { polyCube -w $afm_cube[0] -h (($i+1)*$afm_cube[1]) -d $afm_cube[2]; move -r ($i*$distX) 0 0; }
Technisch Ontwerp en Informatica
28/42
Met een dubbele for-loop
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
int $afm_cube[] = {1,1,1}; int $distX = 2; int $distZ = 2; for ($j = 0; $j <3; $j++) { for ($i = 0; $i < 3; $i = ($i + 1)) { polyCube -w $afm_cube[0] -h (($i+1)*$afm_cube[1]) -d $afm_cube[2]; move -r ($i*$distX) 0 ($j*$distZ); } }
Technisch Ontwerp en Informatica
29/42
Met een dubbele for-loop
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Technisch Ontwerp en Informatica
30/42
Controle structuren: if...else if...else
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Met de controle structuur ‘if..else if...else’ stellen we voorwaarden waaraan voldaan moet worden if ($x > 10) { .....; } else if ($x > 5){ .....; } else { .....; }
Technisch Ontwerp en Informatica
31/42
Het voorbeeld met if...else if...else
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
int $afm_cube[] = {1,1,1}; int $distX = 2; for ($i = 0; $i < 3; $i = ($i + 1)) { if ($i > 1) { polySphere -r 1; } else { polyCube -w $afm_cube[0] -h (($i+1)*$afm_cube[1]) -d $afm_cube[2]; } move -r ($i*$distX) 0 0;
Technisch Ontwerp en Informatica
} 32/42
Procedures
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Procedures maken het mogelijk je eigen functies te schrijven. Wanneer je eenzelfde stuk script meerdere malen nodig hebt is het gebruik van functies zeer handig. global proc return_type procedure_name ( arguments ) { functie }
Technisch Ontwerp en Informatica
33/42
Voorbeeld met een procedure
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
global proc makeCubes() { int $afm_cube[] = {1,1,1}; int $distX = 2; for ($i = 0; $i < 3; $i = ($i + 1)) { polyCube -w $afm_cube[0] -h (($i+1)*$afm_cube[1]) -d $afm_cube[2]; move -r ($i*$distX) 0 0; }
Technisch Ontwerp en Informatica
} 34/42
Objectnamen
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Objectnamen zijn handig wanneer je een specifiek object later in het script verder wilt bewerken. Je kunt wanneer je een object aanmaakt een specifieke naam toekennen, er zit echter een addertje onder het gras.
Technisch Ontwerp en Informatica
35/42
Objectnamen
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
De oplossing is de objectnaam in een variabele op te slaan. string $mijnCurve = `curve -d -p 0 0 0 -p 1 0 0`; string $mijnKubus[] = `polyCube`; let op: ` dit is een backtick (het knopje boven tab)
Technisch Ontwerp en Informatica
36/42
Objectnamen
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
De variabele werkt als het ware als een envelop. Als we zorgen dat we weten in welke envelop de objectnaam zit, weten we genoeg. $mijnCurve = curve3 $mijnKubus[0] = pCube2, $mijnKubus[1] = polyCube5
Technisch Ontwerp en Informatica
37/42
Voorbeeld met objectnamen
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
string $curve1 = `curve -d 1 -p 0 0 0 -p 0 0 10`; string $curve2 = `curve -d 1 -p -10 10 0 -p -10 10 10`; loft $curve1 $curve2 ;
Technisch Ontwerp en Informatica
38/42
Interface
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
if ( `window -exists mijnWindow` ) { deleteUI mijnWindow; } window -title “mijnWindowTitel” -w 400 mijnWindow; columnLayout; floatFieldGrp -label “floatFieldGrp” mijnFloatFieldGrp; showWindow mijnWindow;
Technisch Ontwerp en Informatica
(meer info over interfaces in de TOI-Pedia) 39/42
De uitvoering
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
if ( `window -exists mijnWindow` ) { deleteUI mijnWindow; } window -title “mijnWindowTitel” -w 400 mijnWindow; columnLayout; button -l “Create” -c “makeCubes()”; showWindow mijnWindow; global proc makeCubes() { int $afm_cube[] = {1,1,1}; int $distX = 2; for ($i = 0; $i < 3; $i = ($i + 1)) { polyCube -w $afm_cube[0] -h (($i+1)*$afm_cube[1]) -d $afm_cube[2]; move -r ($i*$distX) 0 0;
Technisch Ontwerp en Informatica
} } 40/42
Opdracht
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
De opdracht bestaat uit 4 delen: 1. Zet op papier een stroomschema van het script waaruit blijkt hoe het script is opgezet. 2. Voorzie het script van duidelijk commentaar zodat zichtbaar is dat je het script begrijpt. 3. Voeg een extra invoerveld toe in de interface waar de hoogte van de stammen aangpast kan worden. 4. Na uitvoeren van het script staan er in de script editor 2 gegevens. Beide staan op 0. Zorg ervoor dat hier de juiste waarden komen te staan.
Technisch Ontwerp en Informatica
41/42
Opdracht •
Scenario’s & Scripten Workshop 4 Informatica L - BK4070
Download het script van: TOI website >BK4070 >downloads & links >TOI_bsc4_script
•
Stroomschema en aangepast script
Lever het stroomschema en het script met de drie aanpassingen in.
•
Timely:
•
Meer info:
Dag voor de volgende lezing
- TOI-Pedia - TOI website > Bsc4 - @hok
Technisch Ontwerp en Informatica
42/42