ebook img

Desarrollo de aplicaciones para múltiples plataformas y uso de realidad virtual con Unity 3D PDF

136 Pages·2017·31.41 MB·Spanish
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Desarrollo de aplicaciones para múltiples plataformas y uso de realidad virtual con Unity 3D

Escuela Técnica Superior de Ingeniería Informática Universitat Politècnica de València Desarrollo de aplicaciones para múltiples plataformas y uso de realidad virtual con Unity 3D Proyecto Final de Carrera Ingeniería informática Autor: Alejandro Selma García Director: Manuel Agustí Melchor 14 de junio de 2017 Índice general 1. Introducción y objetivos 4 1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3. Alternativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4. Estructura de la memoria . . . . . . . . . . . . . . . . . . . . 7 2. Descripción general de Unity 9 2.1. Presentación y características principales . . . . . . . . . . . . 9 2.2. Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2.1. Entorno de trabajo . . . . . . . . . . . . . . . . . . . . 10 2.2.2. Portabilidad . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2.3. Documentación . . . . . . . . . . . . . . . . . . . . . . 13 2.2.4. Asset Store e importación de recursos . . . . . . . . . . 14 3. Comparativa entre licencias y plataformas soportadas 15 3.1. Licencias de uso . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2. Plataformas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2.1. Windows, MacOS y GNU/Linux . . . . . . . . . . . . 17 3.2.2. WebGL . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2.3. iOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2.4. Android . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2.5. Windows Store Apps para Windows Phone y HoloLens 18 3.2.6. Dispositivos de realidad virtual . . . . . . . . . . . . . 20 3.2.7. Tizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2.8. Fire OS . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2.9. Videoconsolas . . . . . . . . . . . . . . . . . . . . . . . 21 3.2.10. Android TV . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.11. tvOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.12. Samsung SMART TV . . . . . . . . . . . . . . . . . . 22 1 4. Desarrollo de una aplicación 3D con Unity 24 4.1. Creación de un nuevo proyecto . . . . . . . . . . . . . . . . . . 24 4.2. Objetos y sistemas de coordenadas . . . . . . . . . . . . . . . 25 4.3. Construcción del escenario . . . . . . . . . . . . . . . . . . . . 27 4.4. Iluminación de la escena . . . . . . . . . . . . . . . . . . . . . 29 4.4.1. Organizando la jerarquía de objetos . . . . . . . . . . . 30 4.5. Incorporando al jugador . . . . . . . . . . . . . . . . . . . . . 31 4.5.1. Mirando alrededor . . . . . . . . . . . . . . . . . . . . 32 4.5.2. Movimiento del jugador por el escenario . . . . . . . . 38 4.6. Implementación de las mecánicas principales . . . . . . . . . . 41 4.6.1. Enemigos móviles . . . . . . . . . . . . . . . . . . . . . 41 4.6.2. Disparos enemigos y detección de daño . . . . . . . . . 43 4.6.3. Golpeando enemigos . . . . . . . . . . . . . . . . . . . 49 4.6.4. Regeneración de enemigos . . . . . . . . . . . . . . . . 54 4.7. Interfaz de usuario (HUD) . . . . . . . . . . . . . . . . . . . . 56 4.7.1. Pantallas de victoria y fin de juego . . . . . . . . . . . 60 5. Mejora del aspecto gráfico y efectos de sonido 66 5.1. Materiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.2. Texturas basadas en sprites . . . . . . . . . . . . . . . . . . . 67 5.2.1. Texturas del cielo . . . . . . . . . . . . . . . . . . . . . 68 5.3. Modelos 3D personalizados . . . . . . . . . . . . . . . . . . . . 69 5.3.1. Importación de modelos con Blender . . . . . . . . . . 70 5.3.2. Importación de modelos de la Asset Store . . . . . . . 72 5.4. Efectos de partículas . . . . . . . . . . . . . . . . . . . . . . . 74 5.5. Sonidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.5.1. Reproducción de sonidos por eventos . . . . . . . . . . 77 5.6. Menú de opciones . . . . . . . . . . . . . . . . . . . . . . . . . 78 6. Evolución de la Realidad Virtual y opciones disponibles en Unity 83 6.1. Definición e historia . . . . . . . . . . . . . . . . . . . . . . . . 83 6.2. Plataformas actuales de realidad virtual y soporte en Unity . . 86 6.2.1. Oculus Rift . . . . . . . . . . . . . . . . . . . . . . . . 86 6.2.2. Google Cardboard . . . . . . . . . . . . . . . . . . . . 88 6.2.3. Daydream . . . . . . . . . . . . . . . . . . . . . . . . . 89 6.2.4. Steam VR/HTC Vive . . . . . . . . . . . . . . . . . . . 90 6.2.5. PlayStation VR . . . . . . . . . . . . . . . . . . . . . . 91 6.2.6. Samsung Gear VR . . . . . . . . . . . . . . . . . . . . 92 6.2.7. Microsoft HoloLens . . . . . . . . . . . . . . . . . . . . 93 6.3. Soporte en Unity para plataformas de realidad virtual . . . . . 95 2 ÍNDICE GENERAL 7. Adaptación de la aplicación a dispositivos de Realidad Vir- tual 97 7.1. Importación del SDK Google VR . . . . . . . . . . . . . . . . 97 7.2. Adaptación al visor Cardboard . . . . . . . . . . . . . . . . . 98 7.2.1. Cambios en las mecánicas . . . . . . . . . . . . . . . . 99 7.2.2. Visión estereoscópica . . . . . . . . . . . . . . . . . . . 105 7.2.3. HUD y menú de opciones para visores Cardboard con gatillo . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 7.2.4. Compilación y despliegue en dispositivo . . . . . . . . . 109 7.3. Adaptación a visor con controlador . . . . . . . . . . . . . . . 111 7.3.1. HUD y menú de opciones para versión en RV con con- trolador . . . . . . . . . . . . . . . . . . . . . . . . . . 117 7.3.2. Compilación y despliegue . . . . . . . . . . . . . . . . . 117 8. Generación de ejecutables para otras plataformas 121 8.1. PC, MacOS y GNU/Linux . . . . . . . . . . . . . . . . . . . . 121 8.2. Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 8.3. iOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 8.4. WebGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 9. Conclusiones y trabajos futuros 127 3 Capítulo 1 Introducción y objetivos 1.1. Introducción Unity es una de las herramientas de desarrollo de videojuegos y aplica- ciones interactivas más utilizadas en la actualidad [1]. Uno de los principales motivos de su rápida aceptación es que ofrece soporte para una gran cantidad de plataformas, de manera que tras el desarrollo de cualquier aplicación es posible generar ejecutables para todas ellas sin tener que replantear el tra- bajo para cada una. Sin embargo, en el proceso de trasladar un videojuego o aplicación a otros dispositivos, es recomendable considerar sus características particulares para optimizar la experiencia a nivel de control o de rendimien- to, entre otros. Asimismo, Unity también da soporte a plataformas de realidad virtual, donde es especialmente interesante explorar la adaptación de aplicaciones existentes y probar con nuevas formas de control, según las posibilidades de cada dispositivo. En este proyecto se discutirán las distintas plataformas soportadas por Unity, así como sus principales características como herramienta. Se abor- dará el desarrollo de una aplicación en 3D que pueda servir como base para un videojuego, y su distribución en varias plataformas, así como su posterior adaptación a dispositivos de realidad virtual. El concepto de realidad virtual puede referirse a un conjunto de tecnolo- gías bastante amplio, pero en este caso la adaptación estará especialmente enfocada a dispositivos móviles que se puedan emplear como visores que si- mulen un entorno tridimensional, con el que el usuario pueda interactuar de 4 CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS diversas maneras. Una de las plataformas que hacen uso de esta tecnología es Google Cardboard, que permite emplear un teléfono móvil y un soporte de cartón, o visores de coste relativamente bajo, para acceder a la realidad virtual de una forma muy asequible. Esto contrasta con el coste de otros dis- positivos mas avanzados, que utilizan computadores tradicionales o hardware específico para realizar el procesamiento necesario, y que tienen un coste ha- bitualmente mas elevado. Figura 1.1: Visores Cardboard. Fuente: vr.google.com. 1.2. Objetivos Los principales objetivos de este proyecto son los siguientes: Introducir Unity como herramienta de desarrollo y sus plataformas so- portadas, haciendo hincapié en el método de trabajo con esta herra- mienta y en sus ventajas, destacando su portabilidad. Mostrar el desarrollo paso a paso de una aplicación 3D que pueda servir como base para un videojuego, centrándose en la funcionalidad y consi- derando su rendimiento en dispositivos móviles. El objetivo es mostrar cómo se desarrollan los elementos principales de un videojuego con Unity, que consistirá en una escena en 3D en la que el jugador ten- drá que derrotar a enemigos que recorren el escenario, evitando sus disparos. La finalidad no será obtener un juego con un acabado que permita su distribución inmediata en el mercado, sino centrarse en el propio desarrollo y en que pueda ser adaptado posteriormente a otras 5 CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS plataformas, especialmente dispositivos móviles y visores de realidad virtual, y experimentar con sus posibilidades y métodos de control. Es- to también condicionará el apartado gráfico, que no empleará modelos y texturas con un gran nivel de detalle, para evitar posibles problemas de rendimiento en dispositivos con menor capacidad de procesamiento u otras limitaciones. Otras posibles mejoras, como aumentar el núme- ro de niveles de juego o modos multijugador en red, quedarán fuera del ámbito del proyecto y se dejarán como futuras ampliaciones que se podrían abordar. Adaptar la aplicación desarrollada a dispositivos móviles que hagan uso de realidad virtual, especialmente a través de la plataforma Cardboard (figura 1.1). Se partirá de una versión de escritorio que pueda ser ejecu- tada en ordenadores personales, y a partir de ella se desarrollarán otras versionesparacubrirmúltiplesplataformas.Concretamente,ademásde la versión de escritorio, se implementará una versión para dispositivos móviles que haga uso de un acelerómetro, otra versión adaptada a la realidad virtual para visores de cartón Cardboard con un sólo gatillo, y otra para visores de realidad virtual que pueda manejarse con un controlador independiente. Mostrar el proceso de compilación y despliegue en varias plataformas distintas, así como evaluar la ejecución de la aplicación probándola en estas plataformas. 1.3. Alternativas Se han considerado otros motores de desarrollo de videojuegos como al- ternativasaUnity,siembargoesteúltimotienealgunasventajasquelohacen el más indicado para el ámbito de este proyecto. Los motores considerados son Unreal Engine 4, desarrollado por Epic Ga- mes [2] (figura 1.2a) y CryEngine, desarrollado por Crytek [3] (figura 1.2b). Ambos tienen varios puntos en común, por ejemplo los dos son herramientas especialmente enfocadas al desarrollo de videojuegos con gráficos en 3D, y disponen de opciones más avanzadas en este aspecto para conseguir resulta- dos más realistas y un mejor rendimiento en hardware de última generación. Unity, por otra parte, está centrado en un método de desarrollo más ágil, basado en el uso del editor y scripts en C# que permiten hacer cambios y probarlos rápidamente, y por tanto tiene una curva de aprendizaje menos 6 CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS (b) (a) Figura 1.2: Logotipo de Unreal Engine 4 (a) y de CryEngine (b). pronunciada. En cuanto a las plataformas soportadas, actualmente los tres motores so- portan tanto videoconsolas como PC, dispositivos móviles y realidad virtual, aunque en sus primeras versiones Unreal Engine y CryEngine estaban diri- gidos principalmente a PC y videoconsolas. El coste de las licencias de uso también se ha tenido en cuenta. CryEngine es actualmente una herramienta de código abierto y usarla es completamente gratuito. Unity y Unreal Engine también son gratuitos para un uso personal o académico, pero son de pago si se hace un uso profesional o se perciben ganancias por el software desarrollado. En el próximo capítulo se discutirán con más detalle las distintas licencias y plataformas disponibles en Unity. 1.4. Estructura de la memoria A continuación se hará un resumen de los capítulos de los que consta esta memoria de proyecto, que cubrirán los objetivos planteados: Descripción general de Unity En este capítulo se presenta el motor de videojuegos Unity3D, sus características principales y método de desa- rrollo. Comparativa entre licencias y plataformas Se analizan las licencias de desarrollo disponibles para trabajar con Unity y todas las plataformas actualmente soportadas. Desarrollo de una aplicación 3D con Unity Aquí se aborda el desarro- llo de la versión de escritorio de la aplicación, que servirá como base 7 CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS para el resto de versiones. Se muestra el desarrollo paso a paso, deta- llando las operaciones en el editor, manipulación de objetos y scripts empleados. Al final del capítulo se obtiene una versión con todos los elementos jugables que definen el juego, y una interfaz visual (HUD) con indicadores que muestran información acerca de la partida. Se usan formas geométricas básicas, sin materiales ni texturas. Mejora del aspecto gráfico y efectos de sonido Se añaden texturas y materiales a ciertos elementos del juego, además de modelos 3D im- portados de herramientas externas (Blender) y de la Asset Store de Unity. También se incorporan sonidos, música, y un menú de pausa que permite ajustar algunas opciones. Evolución de la realidad virtual y opciones disponibles En este ca- pítulo se hace un repaso de la evolución de la realidad virtual a lo largo de la historia y se presentan las plataformas disponibles en la actualidad. Adaptación de la aplicación a dispositivos de realidad virtual Enes- te capítulo se parte de la aplicación original para adaptarla a dispositi- vos Cardboard de realidad virtual. Se desarrollan dos nuevas versiones: una para visores de cartón con un sólo gatillo, y otra pensada para ser utilizada con un controlador con varios botones. Se exploran los cam- biosnecesariosenlapropiaaplicaciónparaadaptarseanuevosmétodos de control en cada una de estas versiones, además de la utilización del SDK Google VR de Unity para lograr el efecto de inmersión de realidad virtual. Generación de ejecutables para otras plataformas Se detalla el pro- ceso de compilación y ejecución de la aplicación en varias plataformas, y se genera otra versión que utiliza como método de control el aceleró- metro de un dispositivo Android o iOS. Conclusiones y trabajos futuros En el capítulo final se hace un repaso general del trabajo realizado y de cómo se han cumplido los objetivos planteados,asícomoposiblesampliacionesquesepodríanabordarpara continuar con el proyecto en el futuro. 8 Capítulo 2 Descripción general de Unity 2.1. Presentación y características principa- les Unity es un motor de videojuegos multiplataforma desarrollado por Unity Technologies (figura 2.1), que permite desarrollar para videoconsolas, PC, Mac, GNU/Linux, todo tipo de dispositivos móviles, la web, TV y dispositi- vos de realidad virtual (RV). En un principio la propia herramienta fué anunciada únicamente para el sistema operativo OS X, sin embargo desde su lanzamiento en 2005 ha au- mentado su soporte a más de 25 plataformas [4]. Por este motivo, además de otros que se mencionarán a continuación, Unity es una de las herramientas de desarrollo de videojuegos más utilizadas en la actualidad. Figura 2.1: Logotipo de Unity. Al ser un motor de videojuegos, Unity proporciona un conjunto de com- ponentesyherramientascomuneslistasparaserutilizadas,comoporejemplo shaders, simulación de físicas o efectos de iluminación, entre otros. Esto pue- de facilitar considerablemente la implementación respecto a un videojuego o aplicación desarrollada "desde cero", ya que no es necesario invertir tiempo enla preparaciónde estos componentes,que puedensernecesarios ono según 9

Description:
puede utilizar las APIs gráficas Direct3D, OpenGL y Vulkan a partir de la dream. La API utilizada es OpenGL. Figura 3.3: Android 7.1 Nougat.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.