Documente Academic
Documente Profesional
Documente Cultură
UntutorialoriginalmentedestinadoaestudiantesdelITP,suplementarioalmaterialdelcurso "IntroductiontoComputationalMedia","ProgrammingforNonProgrammers",y"CodeandMe" Idiomas:Espaol,English,Japanese,Korean ProfessordelTaller JoshNimoy contacto:jn429[at]nyu[dot]edu pginaweb TraduccinalJapanesade HironobuFujiyoshiandAyako Takabatake contacto:hf[at]cs[dot]chubu[dot] ac[dot]jp TraduccinalCoreanode KooChulLee contacto:kclee[at]phya[dot]snu [dot]ac[dot]kr TraduccinalEspaolde GeraldKogleryAngelaPrecht contacto:geraldo[at]yuri[dot]at CreadoresdelSoftware Processingesunproyecto abiertoiniciadoporBenFryy CaseyReas
Descripcin Processingesuncontextoparaexplorarelespacioconceptualemergentequenosentreganlosmedios electrnicos.Esunentornoparaaprenderlosfundamentosdelaprogramacininformticadentrodel contextodelasarteselectrnicasyesunblocdenotaselectrnicasparadesarrollarideas. www.processing.org ElentornodeProcessingeselmsfcilcompiladordeJava/entornodeprogramacinmultimediay grficoconocidoporelhombre.Elsistemapuedeserusadoparaproducirpiezasquearrancan localmente,comotambinAppletsdejavaincrustadosenlaweb.Deliberadamente,elprogramaest diseadoparahacerunpuenteentrelaprogramacingrficaeducacional,yeljava"real".Processing puedeserutilizadocomoruedadeentrenamiento,peronotieneporqusereso. ElpropsitodeestemanualesintroduciralosusuariosdeFlashMacromediayDirectoralentornode Processingatravsdelacomparacinyelcontrastedelossistemas.Lateoradicequeel conocimientoadquiridoatravsdelasherramientasdeMacromediapuedeserfcilmentetransferido, reduciendolacantidaddeclasesnecesarias.Seasumequetienesunconocimientobsicodealguno delosproductosdeMacromedia.Haciaelfinaldeestemanualdeberassercapazdeproducirtus propiaspiezasdeProcessing(Java). ndice Introduccin ObtenerelsoftwaredeProcessing Unpaseoporlainterfaz Manipulacindemediosabajonivel Estructurasintctica Grfica2Desttica Tiempoymovimiento Ratn&teclado Presentacin/Exportar Dibujararchivosdeimagen Formas3D Pxeles Tipografa Elfuturo Introduccin Actualmente,enclasesinteractivasdediseodigital,elvehculoeducativodominantehasidoFlasho Director.Losestudiantesestnempezandoarealizartrabajosgeomtricamentedinmicosy algortmicamentemscomplejosinfluenciadosportrabajosrealizadosenentornosdiferentesalos suyos.EnITP,atestigunexperimentoenunaclase(claro,quedesdeentoncesestnusando Processing).EnmediodelaenseanzadeDirectorLingo,unintensivodeunasemanaala programacinenJavaintroducealosalumnosaunlenguajediferenteaLingoconlaesperanzaque adquieranunavisinmsdiversadedistintossistemasdeprogramacin.Selesentregunaplantilla yellossimplementecambiaronelcdigo.Luegodeunasemanadeconfusinalgunosdelos estudiantesquedaronconunasensacindevaco,anhelandosabermsdeJava.Nohubomanerade
go.yuri.at/p5/tutorial/
1/16
7/4/13
estudiantesquedaronconunasensacindevaco,anhelandosabermsdeJava.Nohubomanerade explicarlesqueuncursodeJavapromedioenunaescuela,frecuentementetetienetrabajandoenuna consoladetextoyquetienepocoonadaderelacincongrficadeAppletsalmenosqueseaun cursoespecficamenteenfocadoparaenseareso.Enlaleccinsiguiente,esperohacerunpuente sobreestehuecoacadmicoconlaayudadelentornodeProcessing.Noestpensadocomoun reemplazoaaquelloscursosdeJavasinounsuplementoquesepreocupadelalogstica,sin profundizarenlosmaticessintcticos.Adems,ProcessingyJavanosonpresentadoscomoel siguienteniveldespusdeMacromedia,tampococomounsistemadenivelinferior.Sonsimplemente unaalternativacapazdehacercosasdemododistinto.SiactualmenteasistesauncursodeJava,es posiblequeusesProcessingentustrabajos,dependiendodelaflexibilidaddetuprofesor.Este manualesunamezclaentremiredaccineimgenesyotrasencontradasenelsitiodeProcessing quemantienenCaseyReasyBenFry.Tefamiliarizarsconestosnombresenlamedidaquetehagas usuariodeProcessing.
Obtenerel softwarede Processingeslibre(librecomolacervezagratis,librecomolalibertaddeexpresin,librecomoun Processingpaslibre)ytodavaendesarollo.Seguirsiendolibreinclusodespusdeserterminado.Este softwareestactualmenteenlafaseBETA.Loserroresestnsiendoreparadosyotrosaspectosestn siendoagregados.Paradescargarteelprogramadeinstalacindemultiplataforma,puedesmandarun emailalosdesarrolladoresparaunirtealacomunidaddetesteo.EnlapginadeProcessing,pincha Downloadparamsinstrucciones.Ademshayunfluidosistemademensajesentrelostesteadores. Esaltamenterecomendablequetecreesunaidentificacindeentrada(login)paratimismo.La comunidadquesehacreadoasualrededoreslamejormaneraderecibirayudaencualquiermateria, deotrosmiembrosdelacomunidaddetesteo,delosmismosautoresydeotrosempollones informticoscomoelautordeesteartculo.Esimportantesealarqueestacomunidadenlneaayuda adesarrollarProcessingatravsdeladiscusindeaspectosenlosforos.EnlapginadeProcessing pincha Discourse .TantolapginadeProcessingcomoelsoftwareestnconstantementesiendo actualizados.Verevisandopornuevasactualizacionesyversionesdelsoftware.Justamenteahoraes unmomentomuyemocionante! Unpaseopor lainterfazLasiguienteimagenfuesacadadewww.processing.org.Paraverlaencontextopincha Reference y luego Environment .
Probablementeestspensando:Jo,qusimpleestainterfaz.Cmopuedesertanpotentecomo DirectoroFlash?Ambos,DirectoryFlash,poseentodotipodeinterfasesdeimportacinyedicin demedios,basadosenfuncionescomunesdemultimediacomercial.EnProcessingtodoestosehace ousandootroprogramaoprogramandoenJava.Porejemplo,FlashtienesupropiominiIlustrator, mientrasDirectorvieneconsupropiominiPhotoshop.Enconsecuencia,unlargotrozodeltrabajo realizadoenambosprogramashaasemejadolasrestriccionesdesuseditoresintegrados.En Processing(yenJava),tuproveestupropialistadegrficasvectorialesoarchivosGIF,ylos interpretasusandoprogramacin.Ereslibreparausartuspropiasformasyestructuras,usandoel lenguajeparacontrolarlospxelesenlapantallamsdirectamente.Paraaquellosquegustande experimentarydeseanproducirnuevasformasdemaneraindependienteodelantedelstatusquoy susherramientasdeautomatizacin,Processingpuedesermsconveniente. Aquhayunaintroduccindeseisbotonesdelcostadoizquierdodelaventana.
go.yuri.at/p5/tutorial/
2/16
7/4/13
detenertuprograma.
Creaun nuevo(new)archivo.Processinglosllamasketches(bosquejos).los puedesllamartambinApplets,programasopiezasinteractivas.DirectoryFlash losllamanmovies( pelculas). Abre (open)unsketchpreexistente.Unmenaparecerypodrselegirdentro detupropiacoleccin,guardadaenlacarpetaespecialdeProcessingquete ensearmsadelante.Tambinpuedeselegirdentrodeunaampliagamade ejemplosdesketchesrealizadosporfamososdiseadores/artistasdenuevos medios,paraaprenderdeellosyusarloscomocdigodereferencia. Guarda (save)ensketchactualdentrodelacarpetadesketchesdeProcessing. Siquieresdarleunnombredistintoveteaguardarcomo(saveas)enelmende archivo( File). Exporta (export)elsketchalacarpetadesketchdeProcessing,estavezcomo unAppletdejava,completoconsupropioarchivohtml.Estapropiedadser tratadaconmsprofundidadmsadelante.
ParamayorymsdetalladainformacinacercadelentornodeProcessing,verlareferenciade EntornodeProcessing.
Manipulacin demediosa EnDirector,unoimportaocreamediosdentrodeunreparto,luegoloarrastrahaciaunescenario bajoniveldondeexistircomounactor.EnFlash,unotambinimportaocreamediosdentrodeunalibreray luegolosinstanciacomoclipsdepelculasaunescenariosimilar.EnProcessing(yenJava)esta importacindemediasestrealizadaencdigo,demanerasimilarcomotrabajaHTML. Adicionalmente,cualquiermediopersonalizadoquetuinventas(sistemadevectores,datosDNA, muestrasdecoloresdeunapelcula)todospuedenserinsertadoscomopartedelcdigoJava.De hecho,noestsrestringidoatenercualquierimagenexternaosonidossiquieresmantenertodoen unarchivoordenado,porqueelpxeldetuimagentambinpuedeconvertirseparaserpartedetu cdigo,ylosdatosdesonidostambinpuedenseralmacenadoscomounlargoarraydedatos.El beneficiodeunalibreraorepartoesparatenermayorcontrolsobreelformato,paraahorrarespacio eneldisco/memoria,ytambinparaagregarcaractersticasapuntables&cliqueableshaciaun metafricosistemadearchivocomn.Elbeneficiodelactorodelapelculaesqueunobjetovisibley tangiblepuedeestarenlapantallayserunamanerafcilparaquelagentecreebotones,video juegos,caracteres,elementosindividualesgrficosyotroselementosvisualesycontrolablesde espaciopositivo.Detodasmaneras,creandogruposdecooperacindeelementosyobjetosqueno sonnideespacionegativonipositivo,estametforasehaconvertidoencargaparaalgunos.En Processing,estacomplicadacapanoexistehaysoloteclado,ratnyunaseriedeeventosen conjuncinconrutinasbsicasdedibujo.Unoseocupaderedibujarlaescenarepetidasvecespara introducircambiosytiempo.Enestamateria,esturesponsabilidadelescribirtupropiosistemade actoropelcula,peronotelorequerirn.Inventaotrametforaquesermstilparaticomo artista.Tambincontribuirsparadiversificarconprofundidadlaestticadeaquellostrabajosen cualesusualmentevemoslainfluenciadeMacromedia. Enlassiguientesseccionesdeestagua,introducirmtodospararenderizarlaimagineraala pantalla.Luegointroducirunaanimacin.Finalmente,temostrarecomoagregaranimacinconel ratn,tecladoyelpuertoserial.Estossonlospilaresbsicosparacualquiercosaquequierashacer conlasherramientasdemayornivel.SerscapazdehacerlosenJavasitefocalizasenconstruirlos tumismo. Estructura ParalosqueusanFlashMXestoesunrepaso.LosiguentesellamaStatementsCommentsenlos sintcticaejemplos. //Statements&Comments //byREAS //Statementsaretheelementsthatmakeupprograms. //The""isusedtoendstatements.Itiscalledthe"statementterminator." //Commentsareusedformakingnotestohelppeoplebetterunderstandprograms. //Acommentbeginswithtwoforwardslashes("//"). //Created1September2002 //The sizefunctionisastatementthattellsthecomputer //howlargetomakethewindow. //Eachfunctionstatementhaszeroormoreparameters. //Parametersaredatapassedintothemethod //andusedasvaluesforspecifyingwhatthecomputerwilldo. size (200,200)
go.yuri.at/p5/tutorial/
3/16
7/4/13
Pinchareproducir(play)yves eso:
0 1 2 3
PersonasqueusenFlash:Nohaynadacomovar.Paramayorinformacindevariables,consultarla guaoficialdelenguajeJava. Aquestlapartedelavariables. Quocurreconifthen? inta=1 intb=2 if(a==b){ println("same") }else{ println("different") } Pinchareproducir(play)yves eso: different
for(inti=0i<5i++){ println(i) }
Pinchareproducir(play)yves eso:
0 1 2 3 4
Noejecutesesteprograma!
:)
Dibujo2D esttico
size(200,100)
go.yuri.at/p5/tutorial/
4/16
7/4/13
background(0,0,0) stroke(255,0,0) point(50,50) stroke(0,255,0) point(100,50) stroke(0,0,255) point(150,50)
Permtenosdescomponerestecdigolneaporlnea.
size(200,100) Nombrandolafuncindetamao( size ),permiteeltamaodellienzoa200pxelesdealtura,100 pxelesdeancho.Sinodefinesestoalinicioquedardeterminadocomo100x100. background(0,0,0) Llamandolafuncindefondo( background)tepermitecambiarelcolordetodoellienzo.En Directorestoeselcolordelescenario.EnFlash,estoeselcolordefondodeldocumento.0,0,0 significanegro.Sinuncallamasnegroalfondo,quedarpredeterminadocomogris. stroke(255,0,0) Llamarlafuncindetrazo( stroke )tepermitecambiarelcolordeldibujoactualdetalmaneraque cadacomandodecolorllamadoluegoserdibujadousandoesecolor.255,0,0significarojo.Sinunca llamastrazoenProcessing,pordefinicinsernegro. point(50,50) Llamarlafuncindepunto( point )fijarelpixelen50,50alcolordellienzoactual.Enestecaso, rojo. stroke(0,255,0) point(100,50) Estecdigohaceunpuntoverdeenelcentro. stroke(0,0,255) point(150,50) Estecdigodibujaelpuntoazulaladerecha. Comopuedesver,estoessimilara draw()enLingo,oaquellosmtodosdedibujoenActionScript. Tcontrolaslapantallacomosifueraunlienzoqueentiendeciertasoperacionesdedibujos. Permtenosdesarrollarformasmscomplejas.
Aquestoydibujandodoslneas.La primerablancaylasegunda, amarilla. Enlalneadefunciones,losdos primerosparmetrossonlasprimeras coordenadasylosltimosdos parmetrossonlassegundas coordenadasx,y.Lalneasedibuja desdelaprimeracoordenadaala segunda.
Aquhayunasformasprefabricadas.
go.yuri.at/p5/tutorial/
5/16
7/4/13
triangle (tringulo)dibujarunpolgonodetrespuntas.Tieneseisparmetros.Parmetros1y2son losprimerascoordenadasX,Y.Parmetros3y4sonlassegundascoordenadasX,Y.Losparmetros5 y6sonlastercerascoordenadasX,Y. triangle(x1,y1,x2,y2,x3,y3) quad(cuadrado)dibujarunpolgonode4puntas.Laestructuradelosparmetrosessimilaralas deltringulo,peroestavezuncuartopardeparmetrosseagreganparaespecificarunacuarta coordenadaX,Y. quad(x1,y1,x2,y2,x3,y3,x4,y4) rectdibujarunrectngulo.Elprimerysegundoparmetroespecificarnlaposicin,mientrasqueel terceroyelcuartoloharnconlaalturayelancho. rect(x,y,width,height) ellipse dibujarunvalo.Susparmetrostrabajandelamismamaneraquelosderect. ellipse(x,y,width,height) Ahoramodificarelprogramaparamostrartealgonuevo.Elnuevocdigo estmarcado.
go.yuri.at/p5/tutorial/
6/16
7/4/13
curvatura.Processingproveeambosmtodos,curve()(curva)ylacurvadebezier().
curve(84,91,68,19,21,17,32,100)
curve(10,26,83,24,83,61,25,65)
curve(x1,y1,x2,y2,x3,y3,x4,y4) bezier(x1,y1,x2,y2,x3,y3,x4,y4) Paralafuncinde curve(),elprimerysegundoparmetroespecificaelpuntodelacurvaylosdos ltimosparmetrosespecificanelsegundopuntodelacurva.Losparmetrosdeenmedioestablecen lospuntosparadefinirlaformadelacurva. Paralafuncin bezier(),losprimerosdosparmetrosespecificanelprimerpuntodelacurvaylos dosltimosparmetrosespecificanelltimopunto.Losparmetrosdeenmediootorganelcontexto paradefinirlaformadelacurva. Enlosejemplosde bezier()dearriba,laslineasnaranjasrevelanlospuntosdecontrolescondidos delascurvas. ApesarqueProcessingotorgaestosprimitivosrpidos,ereslibreparaconstruirtuspropiasformas. Usandolosmtodosde beginShape()yel endShape()sonlallaveparacrearformasms complicadas. beginShape()empiezaregistrandovrticesparaunaformay endShape()termina eseregistro.Elcomando beginShape()requiereunparmetroparadecirlequtipodeformapara creardesdelosvrticesotorgados.Losparmetrosdisponiblespara beginShape()sonLINES, LINE_STRIP,LINE_LOOP,TRIANGLES,TRIANGLE_STRIP,QUADS,QUAD_STRIP,yPOLYGON. Luegodedarelcomando beginShape(),unaseriedecomandos vertex()(vrtices)debenseguir. Paradejardedibujarlaforma,usaelcomando endShape().Loscomandos vertex()condos parametrosespecificanlaposicin2Dyloscomandos vertex()contresparmetrosespecificanla posicinen3D.Cadaformaserdelineadaconsucorrespondientecolordetrazoyllenadaconel colordellenado(verlaseccindeColorparamsinformacin. AquhayalgunosejemplosdeProcessing.org beginShape(LINE_LOOP) vertex(30,20) vertex(85,20) vertex(85,75) vertex(30,75) endShape()
go.yuri.at/p5/tutorial/
beginShape(TRIANGLES)
7/16
7/4/13
beginShape(TRIANGLES) vertex(30,75) vertex(40,20) vertex(50,75) vertex(60,20) vertex(70,75) vertex(80,20) vertex(90,75) endShape()
noFill() beginShape(TRIANGLE_STRIP) vertex(30,75) vertex(40,20) vertex(50,75) vertex(60,20) vertex(70,75) vertex(80,20) vertex(90,75) endShape() noStroke() fill(153,153,153) beginShape(TRIANGLE_STRIP) vertex(30,75) vertex(40,20) vertex(50,75) vertex(60,20) vertex(70,75) vertex(80,20) vertex(90,75) endShape()
noStroke() fill(102) beginShape(POLYGON) vertex(38,23) vertex(46,23) vertex(46,31) vertex(54,31) vertex(54,38) vertex(61,38) vertex(61,46) vertex(69,46) vertex(69,54) vertex(61,54) vertex(61,61) vertex(54,61) vertex(54,69) vertex(46,69) vertex(46,77) vertex(38,77) endShape()
go.yuri.at/p5/tutorial/
8/16
7/4/13
beginShape(LINE_STRIP) curveVertex(84,91) curveVertex(68,19) curveVertex(21,17) curveVertex(32,100) endShape()
Tiempoy movimientoEnDirectorhayunmarcador.Teasignanunacabezalectoraymtodostweeningparaactores.Cosas comoelvdeo,incrustacionesdeFlash,QTVRsysonidoparecenanimarensupropioespaciotiempo. Sitrabajasenalgomsqueunaanimacindinmicapuedesutilizarunfotogramaycdigoen respuestaaunevento ExitFrame o PrepareFrame .EnFlash,tedanunalineadetiempoyun soportedetweeningmscomplejoqueenDirector.Aquellosqueeligentrabajarcompletamenteen ActionScriptcomnmenteusandosmarcosunoparaajustaryparallamarunmarcoderepeticiny otropararepetirparasiempre.Actionscripttambintepermiteresponderencdigoconun onClipEvent(enterFrame).Processingnotienelneadetiempo,marcadoromtodosdetweening, amenosquedecidasestructurartucdigoas.ComoLingoyActionscript,Processingtepermite responderauneventodeprogresindefotogramascontupropiarutinadedibujo.Hastaahoratehe mostradoelcdigodeProcessingen ModoBsico,queesparaimgenesestticas.Esunlistade elementosvisuales.Processingtienetresmodosdeoperacin:bsico,estndaryavanzado. Modo JavaesJavaconvencional,sinlasruedasdeentrenamiento.Paracomenzarcontiempoy movimientoiremosa ModoContinuo.Sihasestadopinchandolosenlacesdeestetexto,debes habervistounoodosprogramasenmodoestndarProcessing.Aquhayunejemplosimple: intx=0 voidsetup(){ noStroke() } voiddraw(){ background(190) rect(x,0,5,100) x=x+1 } Enesteejemplo,unrectnguloblanco semuevedeizquierdaaderechaslo unavez. UnGIFanimadomuestraeste movimientoaladerecha.
Unaseccin setup()opcionalarrancacunadoelprogramaempieza.Laseccindebucle draw() arrancaparasiemprehastaqueterminaelprograma.EnLingo setup()essimilaral beginSprite o startMovie y draw()essimilara ExitFrame o PrepareFrame .EnFlash,setup()essimilaral primermarcodeanimacinquesloseejecutaunavez,luegollamaalbucle. setup()y draw() sonambas funciones.Tambinpuedesescribirtuspropiasfuncionesparaorganizaciny encapsulacindecomplejidad.Paramayorinformacinsobrecomoescribirfuncionespersonalizadas enJava,miraeltutorialdelenguajedeJavaImplementingMethodssection. UnavezquehayasescritolaprimerafuncinenProcessing,eseprogramacambiarautomticamente almodoestndar.Cualquierdeclaracinfueradesufuncinquenoseavariabledeiniciono funcionarmscuandopresionesplay.Puedesmoverestecdigohaciasetup()odraw().Siquieres
go.yuri.at/p5/tutorial/
9/16
7/4/13
Estonoesunejemplomuybonitoperoesfcildeentender.Paraejemplosdetiempomsbonitos(y complejos)miraMilliseconds,deREAS.Paramsejemplosdemovimientoanimado,vase losejemplos MotiondeProcessing. Ratn& tecladoElaccesoalratnyeltecladosonsimilaresalmodoquelohacenFlashyDirector.EnLingo,el ratnesdireccionablecon themouseLoc, themouseH,y themouseV .Ademshaytambin manejadoresdesucesoderatncomo onmouseDown.EnFlash,hay onClipEvent(mouseDown), etc.EnProcessing,lafuncin mousePressed()sellamacadavezqueelratnespresionadoyel mtodo mouseReleased()esllamadocadavezqueelratnesliberadoodejadodepresionar.Lo quedebeshaceresagregarlafuncinatucdigo,ascomoen draw(). voiddraw(){ background(190) rect( mouseX 5, mouseY5,10,10) } voidmousePressed(){ fill(0) } voidmouseReleased(){ fill(255) }
Paramsinformacinderatn,miralareferenciadelratondeProcessing,ynoteolvidesderevisar estosejemplos Mouse deProcessing. LaentradadeltecladoesigualaFlashyDirector. voiddraw(){ if( keyPressed){ fill(102,0,0) }else{ fill(204,102,0) } rect(30,20,55,55) }
Laentradadeltecladotambinpuedeserdistribuidacomouneventhandlingfunction.
go.yuri.at/p5/tutorial/
10/16
7/4/13
intx=50 inty=50 voiddraw(){ background(190) rect(x,y,10,10) } voidkeyPressed(){ if( key =='w'|| key =='W'){ y }elseif( key =='s'|| key =='S'){ y++ }elseif( key =='a'|| key =='A'){ x }elseif( key =='d'|| key =='D'){ x++ } }
EnFlashyDirector,haycontrolesenlasteclasefuncionesenel menquepuedenseleccionarseparaarrancartuprograma,deun modoqueusatodalapantallaycubretodolosornamentospresentes enunsistemaoperativo.Lamodalidaddepantallacompletaesmuy tilparalainstalacinypresentacin.EnProcessing,puedesescogeren elmen Sketch>Present ,opuedesapretarCtrl+P( +Penun Mac).Ademsintentaapretarelbotndeplaymientraspresionas SHIFT.Lapantallacompletairagrisoscuroyverstucreacinenel medio.Paravolveralosnormal,presionasESC.Sinofuncionahayun botndedeteneralaesquinafinalizquierda.
CualquierprogramadeProcessingpuedeserpublicadocomounappletdeJava.Primero asegratequeelbosquejo(sketch)estsalvado,luegoescoge File>Export ,opresionaCtrl+E (opresionaelbotndeexportar).VerselreademensajesdeProcessingdiciendo"Exporting..." porunmomentoyluegodir"DoneExporting."Paratenerlosarchivosdelaweb,entraala carpeta debosquejosdeProcessing.Buscalacarpetaconelnombredetubosquejoybrela.Enesacarpeta versotrallamada applet .Estacarpetapuedesersubidaalaweb.Recomiendoaltamenteeditarel index.htmlpredeterminadoquesegeneradesdeProcessing.Debesmantenertodoslosarchivos relativosalHTMLenestacarpetaapplet,yaqueestnrelacionadasdeunmodoqueningunaotro medioHTMLestrelacionado. sketches/ your_sketch_name / applet/ your_sketch_name .java your_sketch_name .class your_sketch_name .jar index.html save()andsaveFrame() Sinecesitasexportarformatosnointeractivos,esposiblehacerarchivos.tifdelaventanade Processingusandolafuncin saveFrame()(guardarfotograma).Ubicandoestemtodoalfinaldel bucle draw()guardarlaimagenenlapantalla.Si saveFrame()esllamadonumerosasveces, crearunasecuenciadeimgenescomolasiguiente:screen0001,screen0002,screen0003,etc. Usando save()(guardar)tepermitirelegirunnombredearchivo.Essimpleimportarestas imgenesalQuicktimeyotroprogramadevdeoparahacerunadocumentacinanimadadeun programadeProcessing.AunqueProcessingtieneincorporadoestafcilfuncindeguardarimgenes, tambinesposibleexportarotrosformatosconunpocomsdetrabajo.Porejemplo,aquhayun programadeProcessingqueexportaaAdobeIllustrator. Dibujar archivosde PonerunaimagendentrodeunbosquejodeProcessingessimple.Processingacepta.gif,.jpg,.tga,y imagen.png(amenosquequierashacertrabajoextra).Puedesponerlaimagendentrodetubosquejo usandoelsistemadearchivosyunpardelneasdecdigo.Primeroguardaelbosquejo.Luego puedesencontrarelarchivodelbosquejochequeandoenlacarpetadebosquejosdefinidaenlas preferencias( File>Preferences).Allencontrarsunacarpetallamada sketches(librode bosquejos).Allprobablementeencontrarslacarpetaconelmismonombrequetubosquejo.Dentro encontrarsotracarpetallamada data .Aqueslacarpetadondedebesubicartuarchivodeimagen paraunProcessingmsfcil.Aqu,otramaneradedecirlo:
go.yuri.at/p5/tutorial/
11/16
7/4/13
go.yuri.at/p5/tutorial/
12/16
7/4/13
PImage esunobjetoquemantendrtuarchivocargadohastaquelodibujes. beselnombreque escoj. image()esloquedibujalaimagenalapantalla. image(PImage,x,y,width,height) Tambinpuedeselegirelomitirelanchoyaltoylaimagensedibujaraescalanormal. Importararchivosnosonelnicocamino,tambinfuncionanlosURLs. Paramayorinformacindeimgenes,consultaelmanualdeProcessing.Aquestlaparteexplicando cargandoymostrandoimagenes.Construiratravsdeesteconocimiento,tambinesposible mostrarimagessequenciales(videofootage).Paramsinformacinmiralosejemplos Image de Processing. Formas 3D Hahabidomuchapreocupacinyquejasporintroducir3Da entornosde2D.EnFlash,muchasherramientasdeterceraspartes hansidodesarrolladas.EnDirector,unactorgrficode3Dvectorial seintrodujorecientemente.Elsistemaestancomplejoquemuchos handesistidoinclusodeaprenderlo. EnProcessing,3Dslosignificadefinirunrendering3Dyagregar unaejez.
box(size) box(width,height,depth) sphere(size) Processingactualmentetienetres modosderendering.Sinoespecificamosningnmodoenla funcinsize()comohechoentodoslosejemploshastaahorausamoselelrenderingdeJava2D. Parausarfuncionesde3Dhacefaltaespecificarelrenderingdelasiguientemanera: size(100,100,P3D)//P3Ddefineelmododerenderingpara3D Estemodotambindasoporteatodaslasfuncionesde2Dyademssuponesermsrpidaqueel rendering2D.AdemsexisteotromododerenderingllamadoOpenGL.Msinformacinsobreellos modosderenderingencuentrasenestapginadeProcessing.
size(100,100,P3D) noFill()
go.yuri.at/p5/tutorial/
13/16
7/4/13
Nteseque box (caja)y sphere (esfera)notepidenqueespecifiquescoordenadas.Enestos ejemplos,esnecesariousar translate y rotate .Tambinhay scale ,yunpardefuncionesllamadas pushy popquetepermitenmarcartustrasladosenunamodamuyorganizada.Paramayor informacinverlareferenciadetransformacionesdeProcessingylosejemplos Transform de Processing.Sinoteimportanestastransformaciones,siemprehayunasolucin. Nteseelusode lights()y noLights().Usarlucesrenderizarnlaforma3Ddeunmodoque sugerirsombreado.Paramsinformacin,miralareferenciadeluzesdeProcessing. "Qu?Estoespara3D?" Sicreesqueestonoessuficiente3Dparapermitirtehacercosasinteresantes,entoncesmiralas cosasquehanhechoenlaexposicindeProcessing.Yestoessloelcomienzo.
Pxeles ElcontrolsobrelospxelesestactualmentelejosdeFlash. SetPixely GetPixelrecinhansido aadidosaFlashyDirector(yunconocidoartistainteractivo,amantedeDirectorhaadoptadoel apododeSetPixel).EstudiantesdelITPvanauncursodictadoporDannyRozinllamadoElMundo PxelporPxel,(TheWorldPixelbyPixel),ycontinanprogramandoenCporqueeslanicamanera suficientementerpidaparaalcanzarlasmetasconceptuales(SiendoActionscript,LingoyMAXlas nicasalternativas).EscomnentreestosestudiantesdeITPprepararseparaelcursodeDanny's yendoauncursoC.TrabajarenpxelesdeProcessingesconsiderablementemsrpidoqueenLingo, ymuchomenoscomplejo.AunqueJavanosecomparaalavelocidaddeC,prontolosestudiantesde DannypodrnexplorarlaposibilidadusandoProcessingparaacelerarlacurvadeaprendizaje. get(x,y)//Returnsaninteger set(x,y,color) pixels[index]//Arraycontainingthedisplaywindow
go.yuri.at/p5/tutorial/
14/16
7/4/13
Ossaldrunerrordiciendoquenopuedeencontrar BodoniItalic.vlw.Estoesporquenohas importandoanlafuenteatucarpetadedata.(laseccindeimagendeestemanualtienems informacindelacarpetadedata).Usalafuncindecreacindefuentesdelmenu Tools>Create Font... paracopiarfisicamenteelarchivodefuentesatucarpetadata.Ahoraelprogramaarrancar bienluegodehaberhechoeso. PFontf=loadFont("BodoniItalic.vlw" )cargaesafuentedentrodelavariablef. textFont(f,size)determinalafuenteactualysutamaoantesdedibujareltexto. text("handglove",x,y)renderizaeltextoenellugar. Esteejemploincorporarotacin,yunsimplebucle for.
size(200,100) noStroke() PFontf=loadFont("Univers66.vlw") textFont(f,50) fill(#FFFFFF) ellipse(50,55,150,150) fill(#CC6600) for(inti=0i<20i++){ rotateZ(0.2) text("dizzy",90,0) }
Sinoteinteresaestoporquenotevaelrollodetipografahayunmodomssimplificado.Si necesitasalgocomouncampodeentradadetextoestilqueescribastupropio.Muchoswidgetsde usuariosdeinterfacesnosondifcilesdeagregaralproyectosipiensasdeelloscomoejercicios pequeos,modulareseinteractivosmsquealgoqueelsistemaoperativoproveerexclusivamente. Loqueganaseselcontrolltimosobreeldiseo.Paramsreinvencionesdeinterfasesvernaculares miralosejemplos GUIdeProcessing. Miralosfantsticosejemplos Typography deProcessing.Processingvienedeungrupodegente preocupadaporlaestticaylacomputacin.Nuevasformasdetipografaesunadelascosasquepor lasqueesteMITMediaLabresearchgroupesfamoso.
go.yuri.at/p5/tutorial/
15/16
7/4/13
JoshNimoy segraduenel InteractiveTelecommunications ProgramdelaNewYork University'sTischSchoolofthe Arts.Creayexhibeobras digitalesrelacionadascon interactividad,naturalezay sistemastipogrficos experimentales.Tambindicta clasesenDesignandMedia ArtsenlaUCLASchoolofArts andArchitecture,especializado enculturasdigitalesy tecnologas.Joshhasido investigadorvisitanteenelMIT MediaLaboratoryen1999enel AestheticsandComputation Group,lideradoporJohn Maeda,dondetrabajconBen FryyCaseyReas. website
BenFry sedoctorenel AestheticsandComputation GroupenelMITMedia Laboratorydondeinvestig mtodosdevisualizacinde grandescantidadesdedatos dinmicos.Sutrabajoactual estadivididoentreconsultasy lavisualizacindedatos genticosparaEricLanderen elEli&EdythBroadInstitute deMIT&Harvard. website
CaseyReassegraduen MediaArtsandSciencesenel MITMediaLaboratorydonde fuemiembrodelAesteticsand ComputationGroupdeJohn Maeda.Despusfueprofesor fundadordelInteractionDesign InstituteIvreaenItalia. Actualmenteejercecomo profesorasistenteenel departamentodeDesign& MediaArtsenUCLA.Ensus clasesprocuraentregarbases paralareflexinde ordenadoreseinternet,como unmediodeexploraciny definirunaestructurapara crearunasntesisavanzadade cultura,tecnologayesttica. website
ltimaactualizacin30deMayo,2006
go.yuri.at/p5/tutorial/
16/16