Difference between revisions of "User:Nikkidepree"
Nikkidepree (talk | contribs) |
|||
(40 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=Lab1: Measuring voltage, current and resistance= | =Lab1: Measuring voltage, current and resistance= | ||
Line 17: | Line 6: | ||
3,15 V | 3,15 V | ||
<gallery> | <gallery> | ||
− | Example.jpg| | + | Example.jpg| |
+ | File: measuring voltage 1.JPG | ||
</gallery> | </gallery> | ||
Line 25: | Line 15: | ||
File:schermafbeelding dc 2.png|Resistor 2 | File:schermafbeelding dc 2.png|Resistor 2 | ||
File:schermafbeelding dc 3.png|Resistor 3 | File:schermafbeelding dc 3.png|Resistor 3 | ||
+ | File:measuring resistance 1.JPG|Random | ||
</gallery> | </gallery> | ||
Line 30: | Line 21: | ||
* R1+R2+R3= 109,20 Ohm | * R1+R2+R3= 109,20 Ohm | ||
* 10.000+330+100.000= 110,33 Ohm | * 10.000+330+100.000= 110,33 Ohm | ||
+ | |||
+ | <gallery> | ||
+ | File: serie dc 1.JPG | ||
+ | </gallery> | ||
===Parallel resistance=== | ===Parallel resistance=== | ||
Line 40: | Line 35: | ||
* 318 Ohm | * 318 Ohm | ||
* Hij is lager omdat hij gedeeld wordt | * Hij is lager omdat hij gedeeld wordt | ||
+ | <gallery> | ||
+ | File:Parallel dc 1.JPG | ||
+ | File:Parallel dc 2.JPG | ||
+ | File:Parallel dc 3.JPG | ||
+ | </gallery> | ||
==Measuring Current== | ==Measuring Current== | ||
Line 54: | Line 54: | ||
I= 0,03:0,77=0,00009091 | I= 0,03:0,77=0,00009091 | ||
I=0,77:10.000=0,000077 | I=0,77:10.000=0,000077 | ||
+ | |||
+ | <gallery> | ||
+ | File:mvc dc 1.JPG | ||
+ | File:mvc dc 2.JPG | ||
+ | </gallery> | ||
+ | |||
+ | =Lab 2= | ||
+ | Bij dit lab experiment heb ik samen met een jongen uit de klas gewerkt. We hadden het de eerste keer niet helemaal goed vast gesoldeerd. De tweede keer maakte hij wel geluid en veranderde het led lichtje continue. | ||
+ | <gallery> | ||
+ | File:lab dc 1.JPG | ||
+ | File:lab dc 2.JPG | ||
+ | File:lab dc 3.JPG | ||
+ | </gallery> | ||
=Eigen Project= | =Eigen Project= | ||
− | + | ==Deconstructivisme== | |
Het deconstructivisme is een eigentijdse stroming in de architectuur die ervan uitgaat dat de maatschappij verwarrend en onzeker is. Men probeert dat ook in haar bouwwerken tot uiting te laten komen. Ook vinden zij dat de functie de sfeer van het gebouw bepaalt. | Het deconstructivisme is een eigentijdse stroming in de architectuur die ervan uitgaat dat de maatschappij verwarrend en onzeker is. Men probeert dat ook in haar bouwwerken tot uiting te laten komen. Ook vinden zij dat de functie de sfeer van het gebouw bepaalt. | ||
Deconstructivisme is een verzamelnaam voor een chaotisch ogende architectuur waarvan de afzonderlijke gebouwdelen een onsamenhangend geheel lijken te vormen. Het achterliggende idee is om de verwarring en onzekerheid in de maatschappij te vertalen naar bouwkunst. | Deconstructivisme is een verzamelnaam voor een chaotisch ogende architectuur waarvan de afzonderlijke gebouwdelen een onsamenhangend geheel lijken te vormen. Het achterliggende idee is om de verwarring en onzekerheid in de maatschappij te vertalen naar bouwkunst. | ||
+ | |||
===Oorsprong=== | ===Oorsprong=== | ||
Line 74: | Line 88: | ||
===Waarom?=== | ===Waarom?=== | ||
Het deconstructivisme vind ik zelf de indrukwekkendste en interessantste stroming binnen mijn opleiding Ruimtelijk Ontwerpen. Het chaotische in de gebouwen zorgt meestal voor een adembenemend beeld die je juist rust geeft. Je blijft naar het gebouw kijken, en nieuwe detailles en perspectieven ontdekken. Door het deconstructivisme te gebruiken in dit project geeft het me ook een soort hou vast. Ik ben zelf totaal onbekend met digital craft. En op deze manier zet ik het naar me eigen hand. Mij lijkt het interessant om deze twee begrippen met elkaar te combineren en hiermee een ontregelend object te creëren die een soort rust creëert bij de beleving. | Het deconstructivisme vind ik zelf de indrukwekkendste en interessantste stroming binnen mijn opleiding Ruimtelijk Ontwerpen. Het chaotische in de gebouwen zorgt meestal voor een adembenemend beeld die je juist rust geeft. Je blijft naar het gebouw kijken, en nieuwe detailles en perspectieven ontdekken. Door het deconstructivisme te gebruiken in dit project geeft het me ook een soort hou vast. Ik ben zelf totaal onbekend met digital craft. En op deze manier zet ik het naar me eigen hand. Mij lijkt het interessant om deze twee begrippen met elkaar te combineren en hiermee een ontregelend object te creëren die een soort rust creëert bij de beleving. | ||
+ | |||
+ | ===Routing=== | ||
+ | De routing in gebouwen is altijd erg belangrijk in gebouwen. De vorm en indeling van een gebouw duwt je in een bepaalde richting. Dit gebeurt meestal op een functionele manier. Bij het deconstructivisme die je vaak er een chaotische routing door de gebouwen heen is. Men gaat op een onnatuurlijke manier bewegen, en je wordt meestal expres alle kanten op gestuurd. Waarom? Omdat deze gebouwen continue bij beweging andere perspectieven heeft door de deconstructivistische bouwwijze. Dit geeft interessante standpunten aan een gebouw, en zo ziet elk stuk er anders uit. Door de onnatuurlijke manier van bewegen zie je dat mensen meer gaan leunen, steunen en struikelen om zichzelf te plaatsen. | ||
+ | <gallery> | ||
+ | File:routing dc 1.jpg| Daniel Libeskind | ||
+ | File:voorbeeld dc 6.jpg| Himmelb(l)au | ||
+ | File:routing dc 2.jpg| Peter Eisenmann | ||
+ | File:routing dc 3.jpg| Peter Eisenmann | ||
+ | </gallery> | ||
===website links=== | ===website links=== | ||
+ | |||
+ | <gallery> | ||
+ | File:voorbeeld dc 1.jpg| Sensai Select Spa | ||
+ | File:voorbeeld dc 2.jpg| Ring Installation | ||
+ | File:voorbeeld dc 3.jpg| 3D Theater | ||
+ | File:voorbeeld dc 4.jpg| Sculpture de Lumiere | ||
+ | File:voorbeeld dc 5.jpg| Passage of Wood Folly | ||
+ | File:voorbeeld dc 6.jpg| Architecture is Now | ||
+ | </gallery> | ||
[http://www.dezeen.com/2010/02/09/kanebo-sensai-select-spa-by-gwenael-nicolas/ Kanebo Sensai Select Spa by Gwenael Nicolas] | [http://www.dezeen.com/2010/02/09/kanebo-sensai-select-spa-by-gwenael-nicolas/ Kanebo Sensai Select Spa by Gwenael Nicolas] | ||
Line 90: | Line 122: | ||
===pinterest=== | ===pinterest=== | ||
− | + | https://nl.pinterest.com/nikkidepree/digital-craft/ | |
+ | <gallery> | ||
+ | File:Schermafbeelding pinterest.png | ||
+ | </gallery> | ||
+ | |||
+ | |||
+ | ==Digital craft model== | ||
+ | Voor het model voor Digital Craft ben ik ga nadenken wat ik graag zou willen leren, en hoe ik het deconstructivisme op een sterke manier zou kunnen weergeven. | ||
+ | |||
+ | Ik heb bij Iris station lessen in Processing gevolgd. Ik was hier niet mega goed in, maar vond het wel erg interessant. Ook is dit gaaf om te gebruiken binnen mijn studie. Ik ging bekijken hoe processing gebruikt wordt in de architectuur. Ik kwam erachter dat het vaak gebruikt wordt in combinatie met het hacken van een Kinect zodat je een interactieve installatie kan maken. Dit sprak me direct aan. | ||
+ | |||
+ | Ik kwam op het idee om een script te schrijven in processing, wanneer mensen voorbij de kinect lopen dat er een lijnenspel komt. Een lijnenspel werkt namelijk al snel ontregelend. En dit past goed bij het deconstructivisme. Dit lijnenspel wil ik projecteren op een model wat op schaal is gemaakt. Ik ga het namelijk niet voor elkaar krijgen om een 1:1 installatie op te bouwen. Het model wordt uit plexiglas gemaakt. Door het plexiglas krijg je verschillende kleuren en weerkaatsingen die nog ontregelender werken. | ||
+ | |||
+ | Ik heb veel moeite moeten stoppen in het maken van een script. Ik vond het erg moeilijk om te doen. Maar door goed door te onderzoeken, en hulp te vragen aan de juiste mensen is het me uiteindelijk gelukt. | ||
+ | |||
+ | ===Processing script: streep per persoon=== | ||
+ | |||
+ | Processing script: streep per persoon: | ||
+ | <code> | ||
+ | <nowiki> | ||
+ | /* -------------------------------------------------------------------------- | ||
+ | * SimpleOpenNI User Test | ||
+ | * -------------------------------------------------------------------------- | ||
+ | * Processing Wrapper for the OpenNI/Kinect 2 library | ||
+ | * http://code.google.com/p/simple-openni | ||
+ | * -------------------------------------------------------------------------- | ||
+ | * ---------------------------------------------------------------------------- | ||
+ | */ | ||
+ | |||
+ | import SimpleOpenNI.*; | ||
+ | |||
+ | SimpleOpenNI context; | ||
+ | color[] userClr = new color[]{ color(255,0,0), | ||
+ | color(0,255,0), | ||
+ | color(0,0,255), | ||
+ | color(255,255,0), | ||
+ | color(255,0,255), | ||
+ | color(0,255,255) | ||
+ | }; | ||
+ | PVector com = new PVector(); | ||
+ | PVector com2d = new PVector(); | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | size(640,480); | ||
+ | |||
+ | context = new SimpleOpenNI(this); | ||
+ | if(context.isInit() == false) | ||
+ | { | ||
+ | println("Can't init SimpleOpenNI, maybe the camera is not connected!"); | ||
+ | exit(); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | // enable depthMap generation | ||
+ | context.enableDepth(); | ||
+ | |||
+ | // enable skeleton generation for all joints | ||
+ | context.enableUser(); | ||
+ | |||
+ | background(255); | ||
+ | smooth(); | ||
+ | } | ||
+ | |||
+ | void draw() | ||
+ | { | ||
+ | |||
+ | background(255); | ||
+ | // update the cam | ||
+ | context.update(); | ||
+ | |||
+ | // draw depthImageMap | ||
+ | //image(context.depthImage(),0,0); | ||
+ | //image(context.userImage(),0,0); | ||
+ | |||
+ | // draw the skeleton if it's available | ||
+ | int[] userList = context.getUsers(); | ||
+ | for(int i=0;i<userList.length;i++) | ||
+ | { | ||
+ | /* | ||
+ | if(context.isTrackingSkeleton(userList[i])) | ||
+ | { | ||
+ | stroke(userClr[ (userList[i] - 1) % userClr.length ] ); | ||
+ | drawSkeleton(userList[i]); | ||
+ | } | ||
+ | */ | ||
+ | |||
+ | // draw the center of mass | ||
+ | if(context.getCoM(userList[i],com)) | ||
+ | { | ||
+ | context.convertRealWorldToProjective(com,com2d); | ||
+ | |||
+ | PVector jointPos = new PVector(); | ||
+ | |||
+ | println(jointPos); | ||
+ | |||
+ | stroke(0,255,100); | ||
+ | strokeWeight(1); | ||
+ | //fill(constrain(i*100, 0, 255), random(0, 255), random(0, 255), random(0, 255)); | ||
+ | if (i==0) fill(255,0,0); | ||
+ | if (i==1) fill(255,11,91); | ||
+ | if (i==2) fill(0,0,255); | ||
+ | if (1==3) fill(0,255,0); | ||
+ | if (1==4) fill(165,254,251); | ||
+ | if (1==5) fill(52,248,52); | ||
+ | if (1==6) fill(256,255,0); | ||
+ | |||
+ | rect(com2d.x, 0, 10, 480); | ||
+ | println(Integer.toString(userList[i]),com2d.x,com2d.y); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // draw the skeleton with the selected joints | ||
+ | void drawSkeleton(int userId) | ||
+ | { | ||
+ | // to get the 3d joint data | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_HEAD, SimpleOpenNI.SKEL_NECK); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_NECK, SimpleOpenNI.SKEL_LEFT_SHOULDER); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, SimpleOpenNI.SKEL_LEFT_ELBOW); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_ELBOW, SimpleOpenNI.SKEL_LEFT_HAND); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_NECK, SimpleOpenNI.SKEL_RIGHT_SHOULDER); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, SimpleOpenNI.SKEL_RIGHT_ELBOW); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_ELBOW, SimpleOpenNI.SKEL_RIGHT_HAND); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, SimpleOpenNI.SKEL_TORSO); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, SimpleOpenNI.SKEL_TORSO); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_TORSO, SimpleOpenNI.SKEL_LEFT_HIP); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_HIP, SimpleOpenNI.SKEL_LEFT_KNEE); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_KNEE, SimpleOpenNI.SKEL_LEFT_FOOT); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_TORSO, SimpleOpenNI.SKEL_RIGHT_HIP); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_HIP, SimpleOpenNI.SKEL_RIGHT_KNEE); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_KNEE, SimpleOpenNI.SKEL_RIGHT_FOOT); | ||
+ | } | ||
+ | |||
+ | // ----------------------------------------------------------------- | ||
+ | // SimpleOpenNI events | ||
+ | |||
+ | void onNewUser(SimpleOpenNI curContext, int userId) | ||
+ | { | ||
+ | println("onNewUser - userId: " + userId); | ||
+ | println("\tstart tracking skeleton"); | ||
+ | |||
+ | curContext.startTrackingSkeleton(userId); | ||
+ | } | ||
+ | |||
+ | void onLostUser(SimpleOpenNI curContext, int userId) | ||
+ | { | ||
+ | println("onLostUser - userId: " + userId); | ||
+ | } | ||
+ | |||
+ | void onVisibleUser(SimpleOpenNI curContext, int userId) | ||
+ | { | ||
+ | //println("onVisibleUser - userId: " + userId); | ||
+ | } | ||
+ | |||
+ | |||
+ | void keyPressed() | ||
+ | { | ||
+ | switch(key) | ||
+ | { | ||
+ | case ' ': | ||
+ | context.setMirror(!context.mirror()); | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | </nowiki> | ||
+ | </code> | ||
+ | |||
+ | ===Processing script meerdere strepen per persoon=== | ||
+ | |||
+ | <code> | ||
+ | <nowiki> | ||
+ | /* -------------------------------------------------------------------------- | ||
+ | * SimpleOpenNI User Test | ||
+ | * -------------------------------------------------------------------------- | ||
+ | * Processing Wrapper for the OpenNI/Kinect 2 library | ||
+ | * http://code.google.com/p/simple-openni | ||
+ | * -------------------------------------------------------------------------- | ||
+ | * ---------------------------------------------------------------------------- | ||
+ | */ | ||
+ | |||
+ | import SimpleOpenNI.*; | ||
+ | |||
+ | SimpleOpenNI context; | ||
+ | color[] userClr = new color[]{ color(255,0,0), | ||
+ | color(0,255,0), | ||
+ | color(0,0,255), | ||
+ | color(255,255,0), | ||
+ | color(255,0,255), | ||
+ | color(0,255,255) | ||
+ | }; | ||
+ | PVector com = new PVector(); | ||
+ | PVector com2d = new PVector(); | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | size(640,480); | ||
+ | |||
+ | context = new SimpleOpenNI(this); | ||
+ | if(context.isInit() == false) | ||
+ | { | ||
+ | println("Can't init SimpleOpenNI, maybe the camera is not connected!"); | ||
+ | exit(); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | // enable depthMap generation | ||
+ | context.enableDepth(); | ||
+ | |||
+ | // enable skeleton generation for all joints | ||
+ | context.enableUser(); | ||
+ | |||
+ | background(255); | ||
+ | smooth(); | ||
+ | } | ||
+ | |||
+ | void draw() | ||
+ | { | ||
+ | |||
+ | background(255); | ||
+ | // update the cam | ||
+ | context.update(); | ||
+ | |||
+ | // draw depthImageMap | ||
+ | //image(context.depthImage(),0,0); | ||
+ | //image(context.userImage(),0,0); | ||
+ | |||
+ | // draw the skeleton if it's available | ||
+ | int[] userList = context.getUsers(); | ||
+ | for(int i=0;i<userList.length;i++) | ||
+ | { | ||
+ | /* | ||
+ | if(context.isTrackingSkeleton(userList[i])) | ||
+ | { | ||
+ | stroke(userClr[ (userList[i] - 1) % userClr.length ] ); | ||
+ | drawSkeleton(userList[i]); | ||
+ | } | ||
+ | */ | ||
+ | |||
+ | // draw the center of mass | ||
+ | if(context.getCoM(userList[i],com)) | ||
+ | { | ||
+ | context.convertRealWorldToProjective(com,com2d); | ||
+ | |||
+ | PVector jointPos = new PVector(); | ||
+ | |||
+ | println(jointPos); | ||
+ | |||
+ | stroke(constrain(1*100, 0, 255), random(255, 0)); | ||
+ | strokeWeight(1); | ||
+ | //fill(constrain(i*100, 0, 255), random(255, 0), random(0, 255), random(0, 255)); | ||
+ | if (i==0) fill(255,0,0); | ||
+ | if (i==1) fill(0,255,0); | ||
+ | if (i==2) fill(0,0,255); | ||
+ | if (1==3) fill(255,11,91); | ||
+ | if (1==4) fill(165,254,251); | ||
+ | if (1==5) fill(52,248,52); | ||
+ | if (1==6) fill(256,255,0); | ||
+ | |||
+ | for (float x=com2d.x; x<width; x=x+200) { | ||
+ | rect(x, 0, 1, 480); | ||
+ | } | ||
+ | for (float x=com2d.x; x>0; x=x-200) { | ||
+ | rect(x, 0, 1, 480); | ||
+ | } | ||
+ | for (float x=com2d.x; x<width; x=x+80) { | ||
+ | rect(x, 0, 5, 480); | ||
+ | } | ||
+ | for (float x=com2d.x; x>0; x=x-80) { | ||
+ | rect(x, 0, 5, 480); | ||
+ | } | ||
+ | for (float x=com2d.x; x<width; x=x+100) { | ||
+ | rect(x, 0, 3, 480); | ||
+ | } | ||
+ | for (float x=com2d.x; x>0; x=x-100) { | ||
+ | rect(x, 0, 3, 480); | ||
+ | } | ||
+ | println(Integer.toString(userList[i]),com2d.x,com2d.y); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // draw the skeleton with the selected joints | ||
+ | void drawSkeleton(int userId) | ||
+ | { | ||
+ | // to get the 3d joint data | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_HEAD, SimpleOpenNI.SKEL_NECK); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_NECK, SimpleOpenNI.SKEL_LEFT_SHOULDER); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, SimpleOpenNI.SKEL_LEFT_ELBOW); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_ELBOW, SimpleOpenNI.SKEL_LEFT_HAND); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_NECK, SimpleOpenNI.SKEL_RIGHT_SHOULDER); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, SimpleOpenNI.SKEL_RIGHT_ELBOW); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_ELBOW, SimpleOpenNI.SKEL_RIGHT_HAND); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, SimpleOpenNI.SKEL_TORSO); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, SimpleOpenNI.SKEL_TORSO); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_TORSO, SimpleOpenNI.SKEL_LEFT_HIP); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_HIP, SimpleOpenNI.SKEL_LEFT_KNEE); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_KNEE, SimpleOpenNI.SKEL_LEFT_FOOT); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_TORSO, SimpleOpenNI.SKEL_RIGHT_HIP); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_HIP, SimpleOpenNI.SKEL_RIGHT_KNEE); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_KNEE, SimpleOpenNI.SKEL_RIGHT_FOOT); | ||
+ | } | ||
+ | |||
+ | // ----------------------------------------------------------------- | ||
+ | // SimpleOpenNI events | ||
+ | |||
+ | void onNewUser(SimpleOpenNI curContext, int userId) | ||
+ | { | ||
+ | println("onNewUser - userId: " + userId); | ||
+ | println("\tstart tracking skeleton"); | ||
+ | |||
+ | curContext.startTrackingSkeleton(userId); | ||
+ | } | ||
+ | |||
+ | void onLostUser(SimpleOpenNI curContext, int userId) | ||
+ | { | ||
+ | println("onLostUser - userId: " + userId); | ||
+ | } | ||
+ | |||
+ | void onVisibleUser(SimpleOpenNI curContext, int userId) | ||
+ | { | ||
+ | //println("onVisibleUser - userId: " + userId); | ||
+ | } | ||
+ | |||
+ | |||
+ | void keyPressed() | ||
+ | { | ||
+ | switch(key) | ||
+ | { | ||
+ | case ' ': | ||
+ | context.setMirror(!context.mirror()); | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | </nowiki> | ||
+ | </code> | ||
+ | |||
+ | ===Processing script: opvullen met strepen random=== | ||
+ | <code> | ||
+ | <nowiki> | ||
+ | /* -------------------------------------------------------------------------- | ||
+ | * SimpleOpenNI User Test | ||
+ | * -------------------------------------------------------------------------- | ||
+ | * Processing Wrapper for the OpenNI/Kinect 2 library | ||
+ | * http://code.google.com/p/simple-openni | ||
+ | * -------------------------------------------------------------------------- | ||
+ | * ---------------------------------------------------------------------------- | ||
+ | */ | ||
+ | |||
+ | import SimpleOpenNI.*; | ||
+ | |||
+ | SimpleOpenNI context; | ||
+ | color[] userClr = new color[]{ color(255,0,0), | ||
+ | color(0,255,0), | ||
+ | color(0,0,255), | ||
+ | color(255,255,0), | ||
+ | color(255,0,255), | ||
+ | color(0,255,255) | ||
+ | }; | ||
+ | PVector com = new PVector(); | ||
+ | PVector com2d = new PVector(); | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | size(640,480); | ||
+ | |||
+ | context = new SimpleOpenNI(this); | ||
+ | if(context.isInit() == false) | ||
+ | { | ||
+ | println("Can't init SimpleOpenNI, maybe the camera is not connected!"); | ||
+ | exit(); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | // enable depthMap generation | ||
+ | context.enableDepth(); | ||
+ | |||
+ | // enable skeleton generation for all joints | ||
+ | context.enableUser(); | ||
+ | |||
+ | background(255); | ||
+ | smooth(); | ||
+ | } | ||
+ | |||
+ | void draw() | ||
+ | { | ||
+ | |||
+ | //background(255); | ||
+ | // update the cam | ||
+ | context.update(); | ||
+ | |||
+ | // draw depthImageMap | ||
+ | //image(context.depthImage(),0,0); | ||
+ | //image(context.userImage(),0,0); | ||
+ | |||
+ | // draw the skeleton if it's available | ||
+ | int[] userList = context.getUsers(); | ||
+ | for(int i=0;i<userList.length;i++) | ||
+ | { | ||
+ | /* | ||
+ | if(context.isTrackingSkeleton(userList[i])) | ||
+ | { | ||
+ | stroke(userClr[ (userList[i] - 1) % userClr.length ] ); | ||
+ | drawSkeleton(userList[i]); | ||
+ | } | ||
+ | */ | ||
+ | |||
+ | // draw the center of mass | ||
+ | if(context.getCoM(userList[i],com)) | ||
+ | { | ||
+ | context.convertRealWorldToProjective(com,com2d); | ||
+ | |||
+ | PVector jointPos = new PVector(); | ||
+ | |||
+ | println(jointPos); | ||
+ | |||
+ | stroke(0,255,100); | ||
+ | strokeWeight(1); | ||
+ | fill(constrain(i*100, 0, 255), random(0, 255), random(0, 255), random(0, 255)); | ||
+ | rect(com2d.x, 0, 10, 480); | ||
+ | println(Integer.toString(userList[i]),com2d.x,com2d.y); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // draw the skeleton with the selected joints | ||
+ | void drawSkeleton(int userId) | ||
+ | { | ||
+ | // to get the 3d joint data | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_HEAD, SimpleOpenNI.SKEL_NECK); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_NECK, SimpleOpenNI.SKEL_LEFT_SHOULDER); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, SimpleOpenNI.SKEL_LEFT_ELBOW); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_ELBOW, SimpleOpenNI.SKEL_LEFT_HAND); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_NECK, SimpleOpenNI.SKEL_RIGHT_SHOULDER); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, SimpleOpenNI.SKEL_RIGHT_ELBOW); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_ELBOW, SimpleOpenNI.SKEL_RIGHT_HAND); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, SimpleOpenNI.SKEL_TORSO); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, SimpleOpenNI.SKEL_TORSO); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_TORSO, SimpleOpenNI.SKEL_LEFT_HIP); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_HIP, SimpleOpenNI.SKEL_LEFT_KNEE); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_KNEE, SimpleOpenNI.SKEL_LEFT_FOOT); | ||
+ | |||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_TORSO, SimpleOpenNI.SKEL_RIGHT_HIP); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_HIP, SimpleOpenNI.SKEL_RIGHT_KNEE); | ||
+ | context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_KNEE, SimpleOpenNI.SKEL_RIGHT_FOOT); | ||
+ | } | ||
+ | |||
+ | // ----------------------------------------------------------------- | ||
+ | // SimpleOpenNI events | ||
+ | |||
+ | void onNewUser(SimpleOpenNI curContext, int userId) | ||
+ | { | ||
+ | println("onNewUser - userId: " + userId); | ||
+ | println("\tstart tracking skeleton"); | ||
+ | |||
+ | curContext.startTrackingSkeleton(userId); | ||
+ | } | ||
+ | |||
+ | void onLostUser(SimpleOpenNI curContext, int userId) | ||
+ | { | ||
+ | println("onLostUser - userId: " + userId); | ||
+ | } | ||
+ | |||
+ | void onVisibleUser(SimpleOpenNI curContext, int userId) | ||
+ | { | ||
+ | //println("onVisibleUser - userId: " + userId); | ||
+ | } | ||
+ | |||
+ | |||
+ | void keyPressed() | ||
+ | { | ||
+ | switch(key) | ||
+ | { | ||
+ | case ' ': | ||
+ | context.setMirror(!context.mirror()); | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | </nowiki> | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ===Beweging=== | ||
+ | Om mijn model speelser te maken ben ik gaan kijken naar hoe men anders door de ruimte beweegt bij het deconstructivisme. Je ziet hierbij dat mensen sneller gaan leunen en steunen. Daarnaast zie je door de ontregeling ook dat mensen sneller struikelen. Deze houdingen heb ik geabstraheerd. Door middel van deze houdingen wou ik een model creëren. Zo worden dit een soort kernhoudingen in het model. Deze kernhoudingen wil ik goed terug laten komen in het model. | ||
+ | |||
+ | [[File:beweging dc.jpg|caption|500px]] | ||
+ | |||
+ | ===Model maken=== | ||
+ | De geabstraheerde kernhoudingen heb ik uit plexiglas gelasercut. Dit heb ik gedaan door het model in rhino te maken en vervolgens in illustrator te zetten. Ik heb voor plexiglas gekozen omdat je dan verschillende kleuren en weerkaatsingen krijgt die nog ontregelender werken. Ook heb ik het plexiglas random geplaatst net als de processing bestanden, om zo ook weer het deconstructivisme terug te laten komen. | ||
+ | |||
+ | [[File:Plexiglas dc.jpg|caption|500px]] |
Latest revision as of 07:29, 6 July 2016
Contents
Lab1: Measuring voltage, current and resistance
Dit zijn de eerste experimenten waar ik aan gewerkt heb. Ik heb samen gewerkt met Aaron. We hebben alle stappen in de experimenten netjes vastgelegd. Deze foto's staan er op dit moment nog niet bij. Foto's volgen snel.
Measuring Voltage
3,15 V
Measuring resistance
Series resistance
- R1+R2+R3= 109,20 Ohm
- 10.000+330+100.000= 110,33 Ohm
Parallel resistance
- 500 Ohm
- 1000:2= 500 Ohm
- Omdat hij halveert
- 333 Ohm
- 1000:3= 333
- Omdat hij halveert
- 318 Ohm
- Hij is lager omdat hij gedeeld wordt
Measuring Current
- 11,38 A
Measuring voltage and current in a series circuit
- 9V
- 1e: 7,71 V 2e: 0,03 V 3e: 0,77 V
- 1e: 7,74 V 2e: 0,08 V
- De eerste kruising heeft meer Voltage als de tweede kruising
- I= V:R
I= 7,71:100.000=0,0000771 I= 0,03:0,77=0,00009091 I=0,77:10.000=0,000077
Lab 2
Bij dit lab experiment heb ik samen met een jongen uit de klas gewerkt. We hadden het de eerste keer niet helemaal goed vast gesoldeerd. De tweede keer maakte hij wel geluid en veranderde het led lichtje continue.
Eigen Project
Deconstructivisme
Het deconstructivisme is een eigentijdse stroming in de architectuur die ervan uitgaat dat de maatschappij verwarrend en onzeker is. Men probeert dat ook in haar bouwwerken tot uiting te laten komen. Ook vinden zij dat de functie de sfeer van het gebouw bepaalt.
Deconstructivisme is een verzamelnaam voor een chaotisch ogende architectuur waarvan de afzonderlijke gebouwdelen een onsamenhangend geheel lijken te vormen. Het achterliggende idee is om de verwarring en onzekerheid in de maatschappij te vertalen naar bouwkunst.
Oorsprong
De term deconstructivisme werd al in de jaren '60 al geïntroduceerd door de filosoof Jacques Derrida. In de architectuur kreeg het allereerst in indirecte zin fysieke navolging via de postmodernistische Staatsgalerie in Stuttgart en het werk van de Amerikaanse architectengroep Sculpture In The Environment (SITE) in de jaren zeventig.
De groep noemde haar werk 'de-architectuur' vanwege het fragiele karakter van bijvoorbeeld een aantal filialen van de BEST-supermarktketen in de Verenigde Staten. De gevels leken los te zitten of af te brokkelen. Extra dramatisch effect werd toegevoegd met de aanleg van stapels 'gevallen' bakstenen aan de voet van de muren. De architectengroep SITE wilde hiermee inspelen op de beleving van de consument, die naar zijn oordeel te veel werd blootgesteld aan eenvormigheid en perfectie.
Tentoonstelling
Het deconstructivisme kreeg pas echt erkenning in 1988, toen de architecten Philip Johnson en Peter Eisenman de tentoonstelling 'Deconstructivist Architecture' organiseerden in het Museum of Modern Art. Verschillende architecten die deconstructivistisch bezig waren of elementen uit die stijl hanteerden, mochten hun werk komen exposeren in New York.
Zeven architectenbureaus, die ook later nog - deels in strijd met hun eigen overtuiging - tot het deconstructivisme gerekend zouden worden, waren op de tentoonstelling vertegenwoordigd: Coop Himmelb(l)au, Peter Eisenman, Frank O. Gehry, Zaha Hadid, Rem Koolhaas, Daniel Libeskind en Bernard Tschumi.
Waarom?
Het deconstructivisme vind ik zelf de indrukwekkendste en interessantste stroming binnen mijn opleiding Ruimtelijk Ontwerpen. Het chaotische in de gebouwen zorgt meestal voor een adembenemend beeld die je juist rust geeft. Je blijft naar het gebouw kijken, en nieuwe detailles en perspectieven ontdekken. Door het deconstructivisme te gebruiken in dit project geeft het me ook een soort hou vast. Ik ben zelf totaal onbekend met digital craft. En op deze manier zet ik het naar me eigen hand. Mij lijkt het interessant om deze twee begrippen met elkaar te combineren en hiermee een ontregelend object te creëren die een soort rust creëert bij de beleving.
Routing
De routing in gebouwen is altijd erg belangrijk in gebouwen. De vorm en indeling van een gebouw duwt je in een bepaalde richting. Dit gebeurt meestal op een functionele manier. Bij het deconstructivisme die je vaak er een chaotische routing door de gebouwen heen is. Men gaat op een onnatuurlijke manier bewegen, en je wordt meestal expres alle kanten op gestuurd. Waarom? Omdat deze gebouwen continue bij beweging andere perspectieven heeft door de deconstructivistische bouwwijze. Dit geeft interessante standpunten aan een gebouw, en zo ziet elk stuk er anders uit. Door de onnatuurlijke manier van bewegen zie je dat mensen meer gaan leunen, steunen en struikelen om zichzelf te plaatsen.
website links
Kanebo Sensai Select Spa by Gwenael Nicolas
Ring Installation by Arnaud Lapierre
3D Projection Theater by Ron Arad
Sculpture de Lumiere by James Turrell
Passage of Wood folly by architect is Praise of Shadow
Architecture is Now by Coop Himmelblau
https://nl.pinterest.com/nikkidepree/digital-craft/
Digital craft model
Voor het model voor Digital Craft ben ik ga nadenken wat ik graag zou willen leren, en hoe ik het deconstructivisme op een sterke manier zou kunnen weergeven.
Ik heb bij Iris station lessen in Processing gevolgd. Ik was hier niet mega goed in, maar vond het wel erg interessant. Ook is dit gaaf om te gebruiken binnen mijn studie. Ik ging bekijken hoe processing gebruikt wordt in de architectuur. Ik kwam erachter dat het vaak gebruikt wordt in combinatie met het hacken van een Kinect zodat je een interactieve installatie kan maken. Dit sprak me direct aan.
Ik kwam op het idee om een script te schrijven in processing, wanneer mensen voorbij de kinect lopen dat er een lijnenspel komt. Een lijnenspel werkt namelijk al snel ontregelend. En dit past goed bij het deconstructivisme. Dit lijnenspel wil ik projecteren op een model wat op schaal is gemaakt. Ik ga het namelijk niet voor elkaar krijgen om een 1:1 installatie op te bouwen. Het model wordt uit plexiglas gemaakt. Door het plexiglas krijg je verschillende kleuren en weerkaatsingen die nog ontregelender werken.
Ik heb veel moeite moeten stoppen in het maken van een script. Ik vond het erg moeilijk om te doen. Maar door goed door te onderzoeken, en hulp te vragen aan de juiste mensen is het me uiteindelijk gelukt.
Processing script: streep per persoon
Processing script: streep per persoon:
/* --------------------------------------------------------------------------
* SimpleOpenNI User Test
* --------------------------------------------------------------------------
* Processing Wrapper for the OpenNI/Kinect 2 library
* http://code.google.com/p/simple-openni
* --------------------------------------------------------------------------
* ----------------------------------------------------------------------------
*/
import SimpleOpenNI.*;
SimpleOpenNI context;
color[] userClr = new color[]{ color(255,0,0),
color(0,255,0),
color(0,0,255),
color(255,255,0),
color(255,0,255),
color(0,255,255)
};
PVector com = new PVector();
PVector com2d = new PVector();
void setup()
{
size(640,480);
context = new SimpleOpenNI(this);
if(context.isInit() == false)
{
println("Can't init SimpleOpenNI, maybe the camera is not connected!");
exit();
return;
}
// enable depthMap generation
context.enableDepth();
// enable skeleton generation for all joints
context.enableUser();
background(255);
smooth();
}
void draw()
{
background(255);
// update the cam
context.update();
// draw depthImageMap
//image(context.depthImage(),0,0);
//image(context.userImage(),0,0);
// draw the skeleton if it's available
int[] userList = context.getUsers();
for(int i=0;i<userList.length;i++)
{
/*
if(context.isTrackingSkeleton(userList[i]))
{
stroke(userClr[ (userList[i] - 1) % userClr.length ] );
drawSkeleton(userList[i]);
}
*/
// draw the center of mass
if(context.getCoM(userList[i],com))
{
context.convertRealWorldToProjective(com,com2d);
PVector jointPos = new PVector();
println(jointPos);
stroke(0,255,100);
strokeWeight(1);
//fill(constrain(i*100, 0, 255), random(0, 255), random(0, 255), random(0, 255));
if (i==0) fill(255,0,0);
if (i==1) fill(255,11,91);
if (i==2) fill(0,0,255);
if (1==3) fill(0,255,0);
if (1==4) fill(165,254,251);
if (1==5) fill(52,248,52);
if (1==6) fill(256,255,0);
rect(com2d.x, 0, 10, 480);
println(Integer.toString(userList[i]),com2d.x,com2d.y);
}
}
}
// draw the skeleton with the selected joints
void drawSkeleton(int userId)
{
// to get the 3d joint data
context.drawLimb(userId, SimpleOpenNI.SKEL_HEAD, SimpleOpenNI.SKEL_NECK);
context.drawLimb(userId, SimpleOpenNI.SKEL_NECK, SimpleOpenNI.SKEL_LEFT_SHOULDER);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, SimpleOpenNI.SKEL_LEFT_ELBOW);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_ELBOW, SimpleOpenNI.SKEL_LEFT_HAND);
context.drawLimb(userId, SimpleOpenNI.SKEL_NECK, SimpleOpenNI.SKEL_RIGHT_SHOULDER);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, SimpleOpenNI.SKEL_RIGHT_ELBOW);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_ELBOW, SimpleOpenNI.SKEL_RIGHT_HAND);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, SimpleOpenNI.SKEL_TORSO);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, SimpleOpenNI.SKEL_TORSO);
context.drawLimb(userId, SimpleOpenNI.SKEL_TORSO, SimpleOpenNI.SKEL_LEFT_HIP);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_HIP, SimpleOpenNI.SKEL_LEFT_KNEE);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_KNEE, SimpleOpenNI.SKEL_LEFT_FOOT);
context.drawLimb(userId, SimpleOpenNI.SKEL_TORSO, SimpleOpenNI.SKEL_RIGHT_HIP);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_HIP, SimpleOpenNI.SKEL_RIGHT_KNEE);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_KNEE, SimpleOpenNI.SKEL_RIGHT_FOOT);
}
// -----------------------------------------------------------------
// SimpleOpenNI events
void onNewUser(SimpleOpenNI curContext, int userId)
{
println("onNewUser - userId: " + userId);
println("\tstart tracking skeleton");
curContext.startTrackingSkeleton(userId);
}
void onLostUser(SimpleOpenNI curContext, int userId)
{
println("onLostUser - userId: " + userId);
}
void onVisibleUser(SimpleOpenNI curContext, int userId)
{
//println("onVisibleUser - userId: " + userId);
}
void keyPressed()
{
switch(key)
{
case ' ':
context.setMirror(!context.mirror());
break;
}
}
Processing script meerdere strepen per persoon
/* --------------------------------------------------------------------------
* SimpleOpenNI User Test
* --------------------------------------------------------------------------
* Processing Wrapper for the OpenNI/Kinect 2 library
* http://code.google.com/p/simple-openni
* --------------------------------------------------------------------------
* ----------------------------------------------------------------------------
*/
import SimpleOpenNI.*;
SimpleOpenNI context;
color[] userClr = new color[]{ color(255,0,0),
color(0,255,0),
color(0,0,255),
color(255,255,0),
color(255,0,255),
color(0,255,255)
};
PVector com = new PVector();
PVector com2d = new PVector();
void setup()
{
size(640,480);
context = new SimpleOpenNI(this);
if(context.isInit() == false)
{
println("Can't init SimpleOpenNI, maybe the camera is not connected!");
exit();
return;
}
// enable depthMap generation
context.enableDepth();
// enable skeleton generation for all joints
context.enableUser();
background(255);
smooth();
}
void draw()
{
background(255);
// update the cam
context.update();
// draw depthImageMap
//image(context.depthImage(),0,0);
//image(context.userImage(),0,0);
// draw the skeleton if it's available
int[] userList = context.getUsers();
for(int i=0;i<userList.length;i++)
{
/*
if(context.isTrackingSkeleton(userList[i]))
{
stroke(userClr[ (userList[i] - 1) % userClr.length ] );
drawSkeleton(userList[i]);
}
*/
// draw the center of mass
if(context.getCoM(userList[i],com))
{
context.convertRealWorldToProjective(com,com2d);
PVector jointPos = new PVector();
println(jointPos);
stroke(constrain(1*100, 0, 255), random(255, 0));
strokeWeight(1);
//fill(constrain(i*100, 0, 255), random(255, 0), random(0, 255), random(0, 255));
if (i==0) fill(255,0,0);
if (i==1) fill(0,255,0);
if (i==2) fill(0,0,255);
if (1==3) fill(255,11,91);
if (1==4) fill(165,254,251);
if (1==5) fill(52,248,52);
if (1==6) fill(256,255,0);
for (float x=com2d.x; x<width; x=x+200) {
rect(x, 0, 1, 480);
}
for (float x=com2d.x; x>0; x=x-200) {
rect(x, 0, 1, 480);
}
for (float x=com2d.x; x<width; x=x+80) {
rect(x, 0, 5, 480);
}
for (float x=com2d.x; x>0; x=x-80) {
rect(x, 0, 5, 480);
}
for (float x=com2d.x; x<width; x=x+100) {
rect(x, 0, 3, 480);
}
for (float x=com2d.x; x>0; x=x-100) {
rect(x, 0, 3, 480);
}
println(Integer.toString(userList[i]),com2d.x,com2d.y);
}
}
}
// draw the skeleton with the selected joints
void drawSkeleton(int userId)
{
// to get the 3d joint data
context.drawLimb(userId, SimpleOpenNI.SKEL_HEAD, SimpleOpenNI.SKEL_NECK);
context.drawLimb(userId, SimpleOpenNI.SKEL_NECK, SimpleOpenNI.SKEL_LEFT_SHOULDER);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, SimpleOpenNI.SKEL_LEFT_ELBOW);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_ELBOW, SimpleOpenNI.SKEL_LEFT_HAND);
context.drawLimb(userId, SimpleOpenNI.SKEL_NECK, SimpleOpenNI.SKEL_RIGHT_SHOULDER);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, SimpleOpenNI.SKEL_RIGHT_ELBOW);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_ELBOW, SimpleOpenNI.SKEL_RIGHT_HAND);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, SimpleOpenNI.SKEL_TORSO);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, SimpleOpenNI.SKEL_TORSO);
context.drawLimb(userId, SimpleOpenNI.SKEL_TORSO, SimpleOpenNI.SKEL_LEFT_HIP);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_HIP, SimpleOpenNI.SKEL_LEFT_KNEE);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_KNEE, SimpleOpenNI.SKEL_LEFT_FOOT);
context.drawLimb(userId, SimpleOpenNI.SKEL_TORSO, SimpleOpenNI.SKEL_RIGHT_HIP);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_HIP, SimpleOpenNI.SKEL_RIGHT_KNEE);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_KNEE, SimpleOpenNI.SKEL_RIGHT_FOOT);
}
// -----------------------------------------------------------------
// SimpleOpenNI events
void onNewUser(SimpleOpenNI curContext, int userId)
{
println("onNewUser - userId: " + userId);
println("\tstart tracking skeleton");
curContext.startTrackingSkeleton(userId);
}
void onLostUser(SimpleOpenNI curContext, int userId)
{
println("onLostUser - userId: " + userId);
}
void onVisibleUser(SimpleOpenNI curContext, int userId)
{
//println("onVisibleUser - userId: " + userId);
}
void keyPressed()
{
switch(key)
{
case ' ':
context.setMirror(!context.mirror());
break;
}
}
Processing script: opvullen met strepen random
/* --------------------------------------------------------------------------
* SimpleOpenNI User Test
* --------------------------------------------------------------------------
* Processing Wrapper for the OpenNI/Kinect 2 library
* http://code.google.com/p/simple-openni
* --------------------------------------------------------------------------
* ----------------------------------------------------------------------------
*/
import SimpleOpenNI.*;
SimpleOpenNI context;
color[] userClr = new color[]{ color(255,0,0),
color(0,255,0),
color(0,0,255),
color(255,255,0),
color(255,0,255),
color(0,255,255)
};
PVector com = new PVector();
PVector com2d = new PVector();
void setup()
{
size(640,480);
context = new SimpleOpenNI(this);
if(context.isInit() == false)
{
println("Can't init SimpleOpenNI, maybe the camera is not connected!");
exit();
return;
}
// enable depthMap generation
context.enableDepth();
// enable skeleton generation for all joints
context.enableUser();
background(255);
smooth();
}
void draw()
{
//background(255);
// update the cam
context.update();
// draw depthImageMap
//image(context.depthImage(),0,0);
//image(context.userImage(),0,0);
// draw the skeleton if it's available
int[] userList = context.getUsers();
for(int i=0;i<userList.length;i++)
{
/*
if(context.isTrackingSkeleton(userList[i]))
{
stroke(userClr[ (userList[i] - 1) % userClr.length ] );
drawSkeleton(userList[i]);
}
*/
// draw the center of mass
if(context.getCoM(userList[i],com))
{
context.convertRealWorldToProjective(com,com2d);
PVector jointPos = new PVector();
println(jointPos);
stroke(0,255,100);
strokeWeight(1);
fill(constrain(i*100, 0, 255), random(0, 255), random(0, 255), random(0, 255));
rect(com2d.x, 0, 10, 480);
println(Integer.toString(userList[i]),com2d.x,com2d.y);
}
}
}
// draw the skeleton with the selected joints
void drawSkeleton(int userId)
{
// to get the 3d joint data
context.drawLimb(userId, SimpleOpenNI.SKEL_HEAD, SimpleOpenNI.SKEL_NECK);
context.drawLimb(userId, SimpleOpenNI.SKEL_NECK, SimpleOpenNI.SKEL_LEFT_SHOULDER);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, SimpleOpenNI.SKEL_LEFT_ELBOW);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_ELBOW, SimpleOpenNI.SKEL_LEFT_HAND);
context.drawLimb(userId, SimpleOpenNI.SKEL_NECK, SimpleOpenNI.SKEL_RIGHT_SHOULDER);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, SimpleOpenNI.SKEL_RIGHT_ELBOW);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_ELBOW, SimpleOpenNI.SKEL_RIGHT_HAND);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, SimpleOpenNI.SKEL_TORSO);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, SimpleOpenNI.SKEL_TORSO);
context.drawLimb(userId, SimpleOpenNI.SKEL_TORSO, SimpleOpenNI.SKEL_LEFT_HIP);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_HIP, SimpleOpenNI.SKEL_LEFT_KNEE);
context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_KNEE, SimpleOpenNI.SKEL_LEFT_FOOT);
context.drawLimb(userId, SimpleOpenNI.SKEL_TORSO, SimpleOpenNI.SKEL_RIGHT_HIP);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_HIP, SimpleOpenNI.SKEL_RIGHT_KNEE);
context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_KNEE, SimpleOpenNI.SKEL_RIGHT_FOOT);
}
// -----------------------------------------------------------------
// SimpleOpenNI events
void onNewUser(SimpleOpenNI curContext, int userId)
{
println("onNewUser - userId: " + userId);
println("\tstart tracking skeleton");
curContext.startTrackingSkeleton(userId);
}
void onLostUser(SimpleOpenNI curContext, int userId)
{
println("onLostUser - userId: " + userId);
}
void onVisibleUser(SimpleOpenNI curContext, int userId)
{
//println("onVisibleUser - userId: " + userId);
}
void keyPressed()
{
switch(key)
{
case ' ':
context.setMirror(!context.mirror());
break;
}
}
Beweging
Om mijn model speelser te maken ben ik gaan kijken naar hoe men anders door de ruimte beweegt bij het deconstructivisme. Je ziet hierbij dat mensen sneller gaan leunen en steunen. Daarnaast zie je door de ontregeling ook dat mensen sneller struikelen. Deze houdingen heb ik geabstraheerd. Door middel van deze houdingen wou ik een model creëren. Zo worden dit een soort kernhoudingen in het model. Deze kernhoudingen wil ik goed terug laten komen in het model.
Model maken
De geabstraheerde kernhoudingen heb ik uit plexiglas gelasercut. Dit heb ik gedaan door het model in rhino te maken en vervolgens in illustrator te zetten. Ik heb voor plexiglas gekozen omdat je dan verschillende kleuren en weerkaatsingen krijgt die nog ontregelender werken. Ook heb ik het plexiglas random geplaatst net als de processing bestanden, om zo ook weer het deconstructivisme terug te laten komen.