Diale, Mauro D. (2021) Visualizador 3D interactivo de contenido académico / Interactive 3D viewer for academic content. Proyecto Integrador Ingeniería Nuclear, Universidad Nacional de Cuyo, Instituto Balseiro.
| PDF (Tesis) Español 12Mb |
Resumen en español
En el presente proyecto integrador se estudiaron e implementaron los componentes básicos de un visualizador 3D interactivo para contenido académico. Se desarrolló empleando el framework de Unity y la API de programación de Unity (en el lenguaje C#). Se propuso el desarrollo de este visualizador con el objetivo de crear una herramienta practica que sea de utilidad como instrumento complementario de enseñanza. Por lo que se emplearon modelos de interés académico para especialidades de Ingeniería Mecánica, Nuclear y Medicina. Se estudiaron patrones de diseño, métodos de instanciación de variables y clases para llevar a cabo una arquitectura flexible y desacoplada brindando modularidad y extensibilidad a la aplicación. Se empleo un sistema de eventos basado en el patrón observador, que permitió el desarrollo de distintas funcionalidades. Entre ellas se logró: - Manipulación de grupos de geometrías permitiendo seleccionarlas, trasladarlas, rotarlas y ocultarlas. - Manejo del movimiento de la cámara. - Un sistema de etiquetas que brinda descripciones informativas de las distintas geometrías. - El corte de geometrías mediante distintos planos predefinidos. - El inicio y pausa de animaciones en los modelos 3D. - Una función de despiece la cual permite un rápido desarme de piezas complejas. - Una función de reseteo a las posiciones originales de las geometrías. El proyecto desarrollado en Unity, junto con el visualizador para Linux y Windows se encuentran en Google Drive[2].
Resumen en inglés
In the present work, the basic components of an interactive 3D viewer for academic content were studied and implemented. It was developed using the Unity framework and the Unity programming API (in the C # language). The development of this viewer was proposed with the aim of creating a practical tool that is useful as a complementary teaching tool. Therefore, models of academic interest were used for specialties of Mechanical Engineering, Nuclear Engineering and Medicine. Design patterns, methods of instantiation and classes were studied to carry out a flexible and decoupled architecture providing modularity and extensibility to the application. An event system based on the observer pattern was used, which allowed the development of different functionalities. Among them it was achieved: - Manipulation of groups of geometries allowing them to be selected, moved, rotated and hidden. - Handling camera movement. - A label system that provides informative descriptions of the various geometries. - The cutting of geometries through different predefined planes. - The play and pause of animations in 3D models. - A disarm function which allows rapid disassembly of complex pieces. - A reset function to the original positions of the geometries. The Unity’s project, together with the 3D visualizer for Linux and Windows can be found in Google Drive[2].
Tipo de objeto: | Tesis (Proyecto Integrador Ingeniería Nuclear) |
---|---|
Palabras Clave: | Visualization (data); Visualización (datos); [Interactive 3D viewer; Academic content; Contenido académico; Framework; C language; Unity, Linux; Windows] |
Referencias: | [1] Ciclo de vida de la clase Monobehaviour. https://docs.unity3d.com/uploads/Main/monobehaviour_flowchart.svg. Accedido: 13 de diciembre de 2021. ix, 11 [2] Carpeta de Google Drive con el proyecto de Unity y el Visualizador 3D para Linux y Windows. https://drive.google.com/drive/folders/1oUPnduWP1b-keDypZxRIuNljRB2bi25b?usp=sharing. Accedido: 13 de diciembre de 2021. xv, xvii, 30 [3] Framework (entorno de trabajo) (Wikipedia). https://es.wikipedia.org/wiki/Framework. Accedido: 13 de diciembre de 2021. 5 [4] Motor de videojuegos (Wikipedia). https://es.wikipedia.org/wiki/Motor_de_videojuego. Accedido: 13 de diciembre de 2021. 5 [5] Renderizaci´on (Wikipedia). https://es.wikipedia.org/wiki/Renderizacion.Accedido: 13 de diciembre de 2021. 5 [6] Unity. https://unity.com/. Accedido: 13 de diciembre de 2021. 5 [7] Licencias de Unity. https://store.unity.com/#plans-individual. Accedido: 13 de diciembre de 2021. 6 [8] Documentaci´on de la clase Debug. https://docs.unity3d.com/ ScriptReference/Debug.html. Accedido: 13 de diciembre de 2021. 7 [9] Documentaci´on de la clase Transform. https://docs.unity3d.com/2021.1/ Documentation/Manual/class-Transform.html. Accedido: 13 de diciembre de 2021. 7 [10] Documentaci´on de la clase MeshFilter. https://docs.unity3d.com/ScriptReference/MeshFilter.html. Accedido: 13 de diciembre de 2021. 7, 16 [11] Documentaci´on de la clase MeshRenderer. https://docs.unity3d.com/ScriptReference/MeshRenderer.html. Accedido: 13 de diciembre de 2021. 7, 16 [12] Scripting API de Unity. https://docs.unity3d.com/ScriptReference/index.html. Accedido: 13 de diciembre de 2021. 9 [13] Monobehaviour. https://docs.unity3d.com/2020.2/Documentation/ScriptReference/MonoBehaviour.html. Accedido: 13 de diciembre de 2021. 9 [14] Método Update de la clase MonoBehaviour. https://docs.unity3d.com/ScriptReference/MonoBehaviour.Update.html. Accedido: 13 de diciembre de 2021. 10 [15] Discusión implementaci´on m´etodo Update() de la clase MonoBehaviour. https://answers.unity.com/questions/966269/ what-exactly-is-going-on-when-i-implement-update-a.html. Accedido: 13 de diciembre de 2021. 10 [16] Método Start de la clase MonoBehaviour. https://docs.unity3d.com/ ScriptReference/MonoBehaviour.Start.html. Accedido: 13 de diciembre de 2021. 10 [17] Método Awake de la clase MonoBehaviour. https://docs.unity3d.com/ScriptReference/MonoBehaviour.Awake.html. Accedido: 13 de diciembre de 2021. 10 [18] Método OnRenderImage de la clase MonoBehaviour. https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnRenderImage.html. Accedido: 13 de diciembre de 2021. 12 [19] Método OnGUI de la clase MonoBehaviour. https://docs.unity3d.com/ ScriptReference/MonoBehaviour.OnGUI.html. Accedido: 13 de diciembre de 2021. 12 [20] Método OnDisable de la clase MonoBehaviour. https://docs.unity3d.com/ ScriptReference/MonoBehaviour.OnDisable.html. Accedido: 13 de diciembre de 2021. 12 [21] Método OnDestroy de la clase MonoBehaviour. https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnDestroy.html. Accedido: 13 de diciembre de 2021. 12 [22] Clase ScriptableObject. https://docs.unity3d.com/Manual/class-ScriptableObject.html. Accedido: 13 de diciembre de 2021. 12 [23] Eventos de Unity. https://docs.unity3d.com/2021.2/Documentation/Manual/UnityEvents.html. Accedido: 13 de diciembre de 2021. 13 [24] Callbacks (Wikipedia). https://es.wikipedia.org/wiki/Retrollamada_(inform%C3%A1tica). Accedido: 13 de diciembre de 2021. 13 [25] Delegates (C# Programming Guide). https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/delegates/. Accedido: 13 de diciembre de 2021. 13 [26] Johansson, T. Job system & entity component system. En: Unity at GDC. 2018. URL https://www.youtube.com/watch?v=kwnb9Clh2Is. 13 [27] Multithreading (Wikipedia). https://en.wikipedia.org/wiki/Multithreading_(computer_architecture). Accedido: 13 de diciembre de 2021. 13 [28] Grupo de subprocesos (Wikipedia). https://en.wikipedia.org/wiki/Thread_pool. Accedido: 13 de diciembre de 2021. 14 [29] Cambio de contexto (multithreading) (Wikipedia). https://en.wikipedia.org/wiki/Context_switch. Accedido: 13 de diciembre de 2021. 14 [30] Condici´on de carrera (Wikipedia). https://es.wikipedia.org/wiki/Condicion_de_carrera. Accedido: 13 de diciembre de 2021. 14 [31] NativeContainer del C# Job System. https://docs.unity3d.com/Manual/JobSystemNativeContainer.html. Accedido: 13 de diciembre de 2021. 15 [32] Shaders. (Wikipedia). https://es.wikipedia.org/wiki/Sombreador. 15 [33] Render Pipeline (Wikipedia). https://en.wikipedia.org/wiki/Graphics_pipeline. Accedido: 13 de diciembre de 2021. 15 [34] Clase Shader. https://docs.unity3d.com/ScriptReference/Shader.html. Accedido:13 de diciembre de 2021. 17 [35] Lenguaje HLSL para shaders. https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl. Accedido: 13 de diciembre de 2021. 18 [36] Lenguaje ShaderLab de Unity. https://docs.unity3d.com/Manual/SL-Reference.html. Accedido: 13 de diciembre de 2021. 18 [37] Guia de programaci´on de Surface Shaders. https://docs.unity3d.com/Manual/SL-SurfaceShaders.html. 19 [38] Software Blender. https://www.blender.org. 19 [39] Clase AnimatorController. https://docs.unity3d.com/Manual/class-AnimatorController.html. 19 [40] Clase Animator. https://docs.unity3d.com/Manual/class-Animator.html.19 [41] M´etodo Physics.Raycast. https://docs.unity3d.com/ScriptReference/Physics.Raycast.html. 20 [42] Clase Collider. https://docs.unity3d.com/ScriptReference/Collider.html.20 [43] Clase MeshCollider. https://docs.unity3d.com/Manual/class-MeshCollider.html. 20 [44] Compilador Rozlyn .NET. https://github.com/dotnet/roslyn. Accedido:13 de diciembre de 2021. 21 [45] Microsoft, C# 8.0. https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8. Accedido: 13 de diciembre de 2021. 21 [46] Documentación Input System de Unity. https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/index.html. Accedido: 13 de diciembre de 2021. 22 [47] Twit del anuncio de Unity del nuevo input system. https://twitter.com/ unitygames/status/1222625671995908096. Accedido: 13 de diciembre de 2021. 22 [48] Introducción al modelo CSS Flexbox. https://css-tricks.com/snippets/css/a-guide-to-flexbox/. Accedido: 13 de diciembre de 2021. 24 [49] Clase Visua lElement del UI Toolkit. https://docs.unity3d.com/ ScriptReference/UIElements.VisualElement.html. Accedido: 13 de diciembre de 2021. 24 [50] VisualTree del UI Toolkit. https://docs.unity3d.com/Manual/UIE-VisualTree.html. Accedido: 13 de diciembre de 2021. 25 [51] Documentación de UI Builder. https://docs.unity3d.com/Packages/com.unity.ui.builder@1.0/manual/index.html. Accedido: 13 de diciembre de 2021. 25 [52] Método Load de la Clase Resources. https://docs.unity3d.com/ScriptReference/Resources.Load.html. Accedido: 13 de diciembre de 2021. [53] Formatos de modelos 3D soportados en Unity. https://docs.unity3d.com/2020.2/Documentation/Manual/3D-formats.html. Accedido: 13 de diciembre de 2021. 26 [54] Gamma, E., Johnson, R., Helm, R., Johnson, R. E., Vlissides, J., et al. Design patterns: elements of reusable object-oriented software. Pearson Deutschland GmbH, 1995. 29 [55] Nota sobre el rendimiento de la funci´on Update. https://blog.unity.com/ technology/1k-update-calls. Accedido: 13 de diciembre de 2021. 29 [56] Hipple, R. Game architecture with scriptable objects. En: Unite Austin 2017. 2017. URL https://www.youtube.com/watch?v=raQ3iHhE_Kk. 35 [57] Manual del paquete de PostProcesado del Built-in Render Pipeline. https://docs.unity3d.com/Packages/com.unity.postprocessing@3.1/ manual/index.html. Accedido: 13 de diciembre de 2021. 37 [58] Quick Outline, Asset Store de Unity. https://assetstore.unity.com/packages/tools/particles-effects/quick-outline-115488. Accedido: 13 de diciembre de 2021. 53 [59] Reactores de fusión (Wikipedia). https://es.wikipedia.org/wiki/Reactores_de_fusi%C3%B3n_nuclear#Tokamak. Accedido: 13 de diciembre de 2021. 62 [60] Mono. https://www.mono-project.com/docs/about-mono/. Accedido: 13 dediciembre de 2021. 71 [61] IL2CPP. https://docs.unity3d.com/2020.3/Documentation/Manual/IL2CPP |
Materias: | Informática |
Divisiones: | Aplicaciones de la energía nuclear > Tecnología de materiales y dispositivos > Mecánica computacional |
Código ID: | 1025 |
Depositado Por: | Tamara Cárcamo |
Depositado En: | 28 Abr 2022 10:29 |
Última Modificación: | 28 Abr 2022 10:29 |
Personal del repositorio solamente: página de control del documento