2. Marcoteórico Enesteprimercapítulosepresentalainformacióndelasherramientasqueutilicéparael desarrollodelosproyectosquemencionéenelcapítuloanterior,enlosqueparticipéenmilabor en el Departamento de Investigación y Desarrollo de la División de Educación continua y a DistanciadelaFacultaddeIngeniería. LamayorpartedelainformaciónqueconformaestecapítulotratasobreXNA,entornode trabajoenelquedesarrolléelproyectoprincipal,queeslaherramientadevisualizaciónde GeometríaAnalítica,conellobuscoexplicardeformasencillasufuncionamientogeneral.También incluíinformaciónsobrelasherramientasylibreríasconlasquedesarrollélosproyectosde Videoconferencia,elPaseoVirtualylapráctica1delnuevoLaboratorioVirtualdeGeometría Analítica. 2.1.XNA XNA es el framework utilizado para desarrollar la Herramienta de Visualización de GeometríaAnalítica. 2.1.1. DefinicióndeXNA XNAesunframeworkoentornodedesarrollocreadoporMicrosoftqueincluyeunaserie delibrerías.netdemicrosoftqueseutilizanparacrearjuegos.otroelementoqueformapartede lasoluciónesxnagamestudio,elcualesunaapiquepermitedesarrollarjuegosyaplicaciones utilizandoellenguajec#yelparadigmadeprogramaciónorientadoaobjetosparalassiguientes plataformas 2 : Windows Xbox360 Zune WindowsPhone LarazónporlaqueelegíXNAparaeldesarrollodelaherramientadegeometríaanalítica eslafacilidadparadesarrollaraplicacionesmultiplataformamedianteunconjuntodeapi so interfacesdeprogramacióndeaplicaciones,normalizadasentrelasplataformasmencionadas. 2.1.2. DefinicióndeFrameworkyAPI Unframeworkesunconjuntodecódigosolibreríasquetienenunafuncionalidadcomúny amalgamadaparaunadiversacantidaddeaplicaciones.unframeworkahorraeltiempoalno tenerqueescribirlalógicausadacomúnmenteendiferentesaplicacionesqueutilicenfunciones similares.ladiferenciaprincipalentreunframeworkyunalibreríaesqueéstaúnicamenteaporta unafunciónespecíficaymientrasqueelframeworkofrecevarias. 3 Página15
UnaAplicationProgramInterface(API)oInterfazdeProgramacióndeAplicacionesesun conjuntodereglasyespecificacionesqueunprogramapuedehacerusodelosserviciosyrecursos provistosporunprogramaparticularqueimplementaesaapi.básicamenteesunainterfazentre distintosprogramasdemaneraquefacilitasuinteracción.unaapipuedecontenerunoovarios framework. 4 2.1.3. Definiciónde.NET Elframework.NETeslaplataformadeMicrosoftparaprogramaraplicacionesqueconsiste enlosiguiente 5 : Rutinasdelenguajecomúnqueproveenunacapadeabstracciónsobreelsistema operativo. Libreríasdeclasesbaseocódigospreconstruidosparatareasdeprogramaciónde bajonivel. Frameworkytecnologíasdedesarrolloreusablesypersonalizablesparatareasde programaciónmayores..netseempleaendiversosframeworkyescompatibleconlamayoríadeloslenguajesde MicrosoftcomoVisualBasic,C,C++,C#,etcétera. Con ello tenía un framework suficientemente robusto para elaborar una aplicación educativadecalidad. 2.1.4. EstructuradeXNA LaestructurageneraldeXNAestádivididaenlassiguientescapas 6 : Plataforma Elnivelmásbajoyconsisteeninterfacesdebajonivelnativasyadministradassobrelas cualesseconstruyeelframeworkdexna.algunasinterfacessondirect3d9(encargadodelos gráficosen3d),xact(administraelaudioylosefectosdesonido),xinput(manejalaentradadel usuario),xcontent(administralacargadelcontenidorestante). Núcleo LaprimeracapadeXNAyproveelafuncionalidadbásicaquerequierenlasdemáscapas. LasáreasdefuncionalidadsonGráficos,Audio,Entrada,MatemáticasyAlmacenaje. Página16
Extensión EnestacapanosencontramosconelModelodeAplicaciónylaTuberíadeContenido(del ingléscontentpipeline). Juegos Estaeslacapasuperioryconsistedelcódigoycontenidodelaaplicaciónojuego.Aquíse manejanlasplantillasyloscomponentesdejuego. 2.1.5. CaracterísticasdeXNA LascaracterísticasprincipalesdeXNAsonlassiguientes 6 : Modelodeaplicación Elpropósitodedichomodeloeshacerqueelprogramadorseolvidedelaplataformaenla queejecutarásujuegoparaasíconcentrarseenlaconcretatareadeprogramarlaaplicación.así mismo el framework provee al desarrollador de un Componente de Gráficos que facilita la creación y manejo del Dispositivo Gráfico utilizado para la renderización tanto para la computadora,elxboxylosdispositivosmóviles.porsuparteelmodelodecomponentespermite agregaralaaplicacióndeunamanerasencillayrápidacomponentesdejuegolocualotorgaal programadorlacapacidaddecrearunalibreríadecomponentesquepuedereutilizarendiversos proyectos. Gráficos LosAPI sestánbasadosendirect3d9,peroadiferenciadeprogramarensutotalidaden Direct3D,unodelosbeneficioseselusodeunatuberíaderenderizaciónprogramableconshaders enlugardeunatuberíadefuncionalidadfija. UncomponentedeXNAdesumaimportanciaeselEfectoBásicooBasicEffect,elcuales unefectodefácilusoqueposeepropiedadescomoluces,texturas,transparencia,etc.utilizarel shaderoefectobásicodelframeworkpermitealosprogramadoresmostrardiversoselementosen pantallasintenerqueescribircomplejosshaders. Audio LainterfazdeaudioqueutilizaXNAestárealizadasobreXACTelcualesunaAPIde Microsoftmultiplataforma.LaventajadeutilizarXACTradicaenquelaherramientapermitecrear paquetes de efectos de sonido con propiedades como volumen, bucles, canales, etc. Para posteriormentecargarlosyagregarlosalproyectosintenerqueinicializarlosbuffersoadministrar losdatos. Página17
Entrada LasAPI sdeentradaestánconstruidasapartirdexinputelcualesunapimultiplataforma que funciona como driver del control de Xbox 360. La interfaz de Entrada ofrece un modo inmediato que no requiere inicialización, por lo que no hay que preocuparse por el reconocimientooliberacióndeldispositivo,elmodoparacompartirlo,etc.asímismoparala entradaespecíficaporplataformatenemoseltecladoparaxboxycomputadora,elmousepara computadorayparalosdispositivosmóvilesexistelaentradatáctilylosacelerómetros. Matemáticas LainterfazdeMatemáticasproveedatosdeprogramacióndejuegoscomovectoresen dos,tresyhastacuatrodimensiones,matricesyplanos.dentrodelalibreríadelasmatrices podemosencontrarútilesmétodosdecreacióndevistas,transformaciones,proyección,etc. AhorabienlascaracterísticasqueofreceXNAmepermitieronrealizarlasgeometríassin máscomplicacionesqueloscálculosmatemáticosmásóptimosparagenerarlas.yrealmentelo quefuemástardadodeelaborarfue:laaplicación,elcontroltáctilparalaversióndewindows Phone7yeldiseño. OtroelementoimportantequedebomencionardespuésdehabertrabajadoconXNAesel API de gráficos que utiliza el framework, el cuál es el más utilizado para crear gráficos en computadorasconsistemaswindows. 2.1.6. DefinicióndeDirect3D Direct3DdeMicrosoftesunAPIdegráficosdebajonivelquepermitemanipularmodelos visualesdeobjetostridimensionalesyhaceusodelaaceleraciónporhardware,comolastarjetas devideo. 7 Eltérminodeaceleraciónporhardwarebásicamenteesincrementarlavelocidaddeun procesodesoftwareconlaayudadelhardware.estoselograalincluirpartedelcódigode softwareenelhardware. XNA utiliza Direct3D para crear gráficos mediante pequeños códigos o programas denominadosshader. 2.1.7. DefinicióndeShader Unshaderescualquiercódigoescritoenunlenguajedesombreadoquesecompila independientemente. La traducción literal de shader es sombreador, la cual no se usa comúnmente,encambioseusalapalabraefectoparadescribirlosdebidoalhechoqueseutilizan principalmenteparacrearefectosespeciales. 8 Página18
Loslenguajesdesombreadosonlenguajesdeprogramacióndealtonivelqueseencargan derealizarcálculosdeiluminacióncomoindicasunombre.laprincipalventajadeutilizarloses quepermitenlaindependenciadehardware,esdecirliberanalprocesadoryaqueseprocesanen lastarjetasdevideo. 2.1.8. DefinicióndeHLSL EllenguajedesombreadoqueutilizaXNAesHLSLoHighLevelShaderLanguage(Lenguaje desombreadodealtonivel)demicrosoftqueutilizadirectxtambiéndemicrosoftqueesuna implementacióndedirect3d. 9 Lostiposdeshaderqueexistenseejecutanen3distintosprocesadoresqueseencuentran enlastarjetasdevideo,estosshadersson: Shaderdevértices.Realizatransformacionesencoordenadas,color,textura,vector normal,vectorbinormal,vectortangente,entreotros,deunvértice. Shaderdegeometrías.Encargadodegenerardinámicamenteomodificarprimitivas geométricasofigurasgeométricasbásicascomopuntos,líneasytriángulos. Shaderdepixelesyfragmentos.Elpixeleslaunidadhomogéneaencolormás pequeña de una imagen digital o raster. Es el que realiza transformaciones relacionadasconlaprofundidad,trabajarconlasunidadesdetexturadenominadas texel, calcular efectos de iluminación por pixel de alta precisión. Todos estos cálculosdeterminanelcolorquedeberáseraplicadoacadapixel. Paraconcluir,demanerasencillaunshaderesuncódigoconunconjuntodeinstrucciones queseránejecutadasporprocesadoresquecontienenlastarjetasdevideoparaobtenerefectos entiemporealyliberaralprocesadordedichasoperacionesyasísepuedaencargardeotros procesos. Deboaclararquerealicédosversionesdelaaplicación,laprincipalrazóndeestofueque laversióncasiterminadanoeracompatibleconlosdispositivosmóviles,debidoalamayoríade loscambiosaplicadosalasintaxisdellenguajec#enlanuevaversióndexna,sinembargoesano fuelaúnicarazóndelpequeñocontratiempo.laotrarazónfueelhechoqueseutilizaronshaders ajenosalefectobásicoincluidoenambasversionesdexnaconlasquesetrabajóydebidoalas restriccionesdehardwaredelosdispositivoscelularesymultimedia,setuvoquetrabajarconel efectopredeterminado. Paracontinuarconlaparteteóricadeloslenguajesdesombreadoesnecesariodefinirla palabrarenderizar,quevienedelinglésrender. Página19
2.1.9. Definiciónderenderización Renderizarorasterizareselprocesodeconvertirunmodelotridimensionalgeneradopor computadoraenunaimagenenelespaciodedosdimensiones.elresultadodelprocesode renderizadosedenominarasteroimagendigital. 1011 Existen2tiposderenderizado: Prerenderizado. Es el proceso computacionalmente más intensivo, se utiliza generalmenteparapelículasytienecomocaracterísticaserdemuyaltacalidad.los cálculos son realizados por el procesador. Para la animación de escenas en 3 dimensiones,losmovimientossonfijadosantesdelarenderizaciónysecalculan duranteella. Renderizadoentiemporeal.Utilizadoenjuegosdevideo.Seprocesaenlastarjetas devideooaceleración3d.adiferenciadelotrométodo,loscambiossecalculanen tiemporeal. 2.1.10.XNAGameStudio Si bien para elaborar la aplicación de geometría programé en XNA, un componente importantedelasoluciónesxnagamestudioquesedefinecomo: EntornodeprogramaciónquepermiteusarVisualStudioparacrearjuegosparaWindows Phone,laconsolaXbox360yequiposbasadosenWindows.XNAGameStudioincluyeXNA Framework,queesunconjuntodebibliotecasadministradasdiseñadasparaeldesarrollode juegosbasadoenmicrosoft.netframework2.0 DefinicióndelapáginaoficialdeXNAGame Studio4.0enMSDNenespañol. 12 LaversióndeXNAGameStudio4.0eslamásrecienteperolaversión3.1aúnseencuentra vigente. LasaplicacionesquesonejecutadasenloscelularesconWindowsPhone7sonlascreadas enlaversión4.0.ahorabienestasaplicacionestambiénsonejecutadasenwindowsyenlaxbox 360 así como las aplicaciones de XNA Game Studio 3.1. Los dispositivos multimedia Zune únicamenteejecutanprogramascreadosenlaversión3.1 Latotalidaddeversionesquehanexistidoson 13 : XNAGameStudioExpress XNAGameStudio2.0 XNAGameStudio3.0 XNAGameStudio3.1 XNAGameStudio4.0 XNAGameStudio4.0Refresh Página20
2.1.10.1. RequisitosdeSistema Paracomenzarconlaprogramacióndelaaplicaciónsetuvieronquecumplirlossiguientes requisitos: WindowsXP(conlaexcepciónquenosepuedendesarrollaraplicacionespara WindowsPhone7). WindowsVista(elcualdebesercuandomenosServicePack1). Windows7 EsimportantemencionarqueenWindowsVistay7serequierentenerpermisosde administradorparapoderinstalarelentorno. Los requisitos de hardware para ejecutar y programar juegos de XNA Framework se requieremínimounatarjetadevideoquesoporteshadermodel1.1ydirectx9.0cperose recomiendaquelatarjetasoportedirectx10parapoderprogramaraplicacionesparawindows Phone. 14 ElsoftwarequeserequiereparapoderprogramarenXNAGameStudio4.0escualquiera delasversionesdemicrosoftvisualstudio2010: VisualStudio2010ExpressforWindowsPhone. VisualStudio2010Ultimate VisualStudio2010Premium VisualStudio2010Professional VisualC#2010Express Paraprogramaraplicacionesconlaversiónanterior,esdecirXNAGameStudio3.1es cualquieradelasversionesdemicrosoftvisualstudio2008: VisualC#2008ExpressEdition VisualStudio2008StandarEdition VisualStudio2008ProfessionalEdition Losrequisitosmínimosdehardwareson: ComputadoraconsistemaoperativoWindowscontarjetaaceleradoradegráficosque soportecomomínimoshadermodel1.1ydirectx9. Serecomiendaunatarjetaaceleradoradegráficosquesoporteelmodelodeshader2.0 (ShaderModel2.0). Página21
ParaejecutarydepuraraplicacionesdeWindowsPhone7conelemulador,serequiere unatarjetaaceleradoradevideoquesoportecomomínimodirectx11. 2.1.10.2. Herramientasempleadas Para elaborar la herramienta de superficies geométricas hice uso de los siguientes elementos: SistemaoperativoWindows7de64bitsconpermisosdeadministrador. VisualStudioProfessional2008y2010,paralaversióndeXbox360/PCyWindows Phone7respectivamente. XNAGameStudio3.1paralaversióndeXbox360/PCy4.0paraprogramarpara WindowsPhone7. PhotoshopCS5paraeditarlasimágenes. Crazy Bump para obtener los mapas de normales y mapas de especularidad utilizadasporlosshadersenlaversióndexnagamestudio3.1. Softimagequeesunsoftwaredemodelado3D. SoftwaremultimediaZuneparatransferirlaaplicaciónalcelularconWindows Phone7.Unagranventajaesqueestandoconectadopermitelaejecuciónen mododedepuracióndeerrores. Software XNA Game Studio Connect para la consola Xbox 360 para poder transferirlaaplicaciónalaconsola,instalarlayejecutarlaenmododedepuración deerrores. Otros elementos que considero de gran importancia para la elaboración de ambas aplicacionesson: ConsoladevideojuegosXbox360. Control alámbrico de Xbox 360 / Windows para realizar pruebas tanto en la consolacomoenlacomputadora. CelularconsistemaoperativoWindowsPhone7pararealizarpruebas. CuentadeestudianteenlapáginadeinternetdeMSDNparaobteneraccesoala licenciadevisualstudioprofessionalyalalicenciadedesarrolladordexnagame Studio. LicenciadedesarrolladordejuegosconXNAparaXbox360,PC,WindowsPhone7 yzune. Página22
2.1.10.3. PerfilesdeXNA AdemásdeloscambiosobviosdesintaxisqueserealizaronentrelasversionesdeXNA,un aspecto muy importante que se añadió al framework, es la posibilidad de modificar la configuracióndelproyectodesdelaspropiedadesparaseleccionarunodedosperfilesdejuego 15 : Reach.Paradispositivosmóviles.Alcance. HiDef.ParaXbox360ycomputadora.AltaDefinición. Acontinuaciónlistolasprincipalesdiferenciasentreestosdosperfilesdeaplicación. Tabla21.TablacomparativadeperfilesdeXNA4.0 Plataformas Soportadas ModelodeShader (ShaderModel) Tamañomáximode textura Tamañomáximode mapacúbico(cubemap) Tamañomáximode texturavolumétrica Texturasnocuadradas Cubemapsno cuadrados Texturasvolumétricas nocuadradas Primitivasmáximas porllamadadedibujado Formatosdebufferde índices Formatosde elementosdevértices Reach HiDef WindowsPhone7,Xbox 360,cualquiercomputadoracon Windowsyunatarjeta aceleradoradevideoque soportedirectx9conshader model2.0. 2.0.WindowsPhoneno soportashaderspersonalizados. 2048pixeles 512pixeles Nohay. Si,sinembargonose puedeutilizarwrap,mipmaps,o compresióndxt. No No 65535 16bits Color,Byte4,Single, Vector2,Vector3,Vector4, Short2,Short4, NormalizedShort2, Xbox360,cualquier computadoraconwindowsy unatarjetaaceleradorade videoquesoportedirectx10. 3.0enadelante. (Xbox360manejashaders contipovfetchperonoson soportadosporwindows. 4096pixeles 4096pixeles 256pixeles Sí Sí Sí 1048575 16y32bits Todoslosformatos dereachmáshalfvector2y HalfVector4. Página23
Página24 NormalizedShort4 Formatosdetextura Color,Bgr565,Brga4444, NormalyzedByte2, NormalizedByte4,Dxt1,Dxt3, Dxt5 Todoslosformatos dereachmásalpha8,rg32, Rgba64, Rgba1010102,Single, Vector2,Vector4,HalfSingle, HalfVector2,HalfVector4.Las texturasdepuntoflotanteno soportanfiltrado. Formatosdevértices texturizados Texturizadodevértices noestásoportado Single,Vector2, Vector4,HalfSingle, HalfVector2,HalfVector4 Formatosdeobjetivos derasterizado Variable Variable Objetivosde rasterizadomúltiples No Hasta4.Debende tenerlamismaprofundidad enbits.soportamezcladode transparenciaymáscarasde escrituraindependientespor objetivo. Consultadeoclusión No Sí Mezclade transparenciaseparada No Sí Blend.SourceAlphaSat uration SoloparaSourceBlendy nodestinationblend Sí Flujodevértices máximo(vertexstreams) 16 16 Alcancemáximodel flujo(streamstride) 255 255 HiDefheredadeReachporlotanto,sisecorreunaaplicacióndeesteúltimoperfilenuna plataformadealtadefiniciónelframeworkseguiráaplicandolasreglasdereach. ElperfildealtadefiniciónnoutilizaDirectX10directamentesinoquerequiereunatarjeta aceleradoragráficaconmemoriadevideoyprocesadordegráficossuperioraunaquesoporte DirectX9. EstosperfilesseconfiguranenlaspropiedadesdelproyectodentrodeVisualStudioyse explicarálamaneraenlaqueserealizólaconfiguración. 2.2.UnrealDevelopmentKit UnrealDevelopmentKiteslaversióngratuitadelpoderosomotordejuegosUnrealEngine 3,comodiceelnombreeslaterceraiteracióndelmotorUnrealEngine. 16
Esteesunframeworkcompletodedesarrolloprofesionaldevideojuegosycontienetodas lasherramientasquesepuedannecesitarparacrearjuegos,simulaciones,recorridosvirtualesy demásaplicacionesvirtualesparalapcydispositivosmóvilescomoiphoneoipad. El objetivo principal de UDK permitir el uso gratuito de UnrealEngine3 para crear contenidoporestudiantes,desarrolladoresindependientes,universidades,investigadores,etc. Estagranherramientaesactualizadamesconmesconelfinagregarnuevoselementos, mejorarlosexistentesyremoverlosqueporestándaresdelaindustriasedejandeutilizar. Siendounmotordejuegoscuentacontodolonecesarioparadesarrollarunvideojuego sinmayoresfuerzo.entrelascaracterísticasqueincluyeestán: UnrealEditor.Unambientemuycompletodeedicióndeambientesoniveles. UnrealContentBrowser.Unnavegadordecontenido,quepuedeser:texturas, modelos,música,etc. UnrealMatine.Animaciónartísticadelosmodelosasícomocinemáticosyescenas visualmenteimpactantes. UnrealScript,elcualesunlenguajedeprogramacióndealtonivel. Físicareal. Iluminaciónysombreadoavanzado. Creacióndeterreno. ConectividadLANyporIP. Shadersentiemporeal. Audiotridimensionalysoportedegrancantidaddeformatos. Efectosdepartículas. Inteligenciaartificial. Ambientesdestruibles. 2.3.FlexyActionScript FlexesunframeworkgratuitodeAdobeutilizadoenlacreacióndeaplicacioneswebtanto parasistemasoperativosdecomputadoras,comoparadispositivosmóviles,porlotantotienela ventajadesersoportadoenvariasplataformas,reduciendoeltiempodeelaboracióndedichas aplicaciones. 17 ActionScriptesunlenguajedeprogramaciónorientadoaobjetosdeAdobeparaFlash tambiéndeadobe.actualmenteesutilizadoenadobeflashyflex. 18 Página25
2.3.1. FlashMediaServer FlashMediaServeresunservidordemediosdeAdobe,elcualpermitealmacenary ejecutaraplicacionesrealizadasenotrasplataformasdeadobe,estasplataformaspuedenser FlashyFlexentreotras. 19 Deigualmaneraesteservidorpermitelatransmisióndeaudioyvideoentiemporealpor loquepuedeserutilizadoparaaplicacionesdevideoconferenciaovideochatasícomochat sencilloentreotras. 2.4.Unity3 Unity3esunaherramientadedesarrollodevideojuegosmuycompletaquenoexige demasiadosrecursosdehardware.sibienesunmotordejuegosutilizadoparacrearvideojuegos yaplicacionesinteractivasaligualqueotrosproductos,estesecaracterizaporsermássencillo. 20 Esta herramienta permite desarrollar videojuegos para PC, consolas de videojuegos, dispositivosmóvilesconsistemaoperativoios,android,asícomoadiferenciadeotrosmanejaun reproductor web que permite ejecutar las aplicaciones directamente en los navegadores de internet. LascaracterísticasdeUnityson: Crearyeditarniveles. Cambioinstantáneoparadesarrolloentredistintasplataformas. Métododeiluminaciónmedianteelmapeadodelucesyoclusióndecaras. ScriptingconC#yJavaScript. Inteligenciaartificial. Físicareal. Conectividaddered. Creacióndeterreno. Shadersentiemporeal. LadesventajaquepresentautilizarUnityesquelaversióngratuitatienedesactivadas variascaracterísticas,incluyendolamásremarcable,elsombreado. Página26