• No se han encontrado resultados

DE INVERNADEROS 3D

N/A
N/A
Protected

Academic year: 2023

Share "DE INVERNADEROS 3D"

Copied!
193
0
0

Texto completo

Esta aplicación del mundo de la infografía puede estar enfocada, por ejemplo, a poder visualizar y recorrer construcciones artificiales antes de crearlas. El desarrollo de este proyecto pretende cubrir un área casi inexplorada dentro del mundo de la agricultura en Almería: la visita virtual a un invernadero 3D construido por el usuario.

Anteproyecto: ‘Diseño y visita virtual de invernaderos 3D’

  • Objetivos
  • Metodología y métodos
  • Planificación a seguir
  • Bibliografía básica

Para ello, el alumno utiliza alguna de las bibliotecas o herramientas actuales, como OpenGL, Direct3D, Blender, etc. Por tanto, la cámara nunca podrá salir de la estructura que delimita el invernadero, pero si el alumno lo desea, puede mover a través de objetos entrar en el invernadero.

Estudio de la estructura del invernadero

  • Ventajas del uso del invernadero
  • Evolución del invernadero
  • Invernadero tipo parral
  • Invernadero multitúnel

La razón definitiva de la hegemonía de Almería en el mundo agrícola se debió al uso de invernaderos. En general, se desarrollan en estructuras sencillas y sin sistemas de climatización, por lo que el crecimiento y desarrollo de los cultivos está sujeto a la merced de la evolución del clima local, dando lugar a acumulaciones productivas y grandes variaciones en calidad y cantidad. de los cultivos

Estudio de las tecnologías 3D actuales

  • Blender
  • Engines 3D
  • OpenGL
  • Direct3D
  • Blitz3D
  • VRML
  • Decisión final

Es muy deseable que el recorrido virtual del invernadero 3D se desarrolle de la mejor manera posible, por lo que cualquier mejora en el rendimiento de la aplicación es bienvenida. La pega es que hay que programarlo todo desde cero: cargar objetos 3D en el formato deseado, cambiar la forma del objeto, etc.

Plan de proyecto

Configurar el método de trabajo

Además, en el desarrollo de cualquier trabajo final de grado, siempre hay aspectos o ideas en la tubería que se pueden agregar en trabajos posteriores, y por lo tanto, la versión final de mi proyecto podría considerarse mi última versión, pero al usar este desarrollo de software modelo, su funcionalidad siempre podría incrementarse en trabajos posteriores. Aunque en mi proyecto solo tengo que modelar un tipo de invernadero, una extensión obvia sería agregar varios tipos nuevos, por ejemplo, y por lo tanto, el modelo en espiral para el desarrollo de software ofrece un enfoque muy realista para el desarrollo de mi aplicación.

Detectar los elementos de información básicos que hacen falta para desar-

En el caso de mi proyecto, el grupo de trabajo estará formado únicamente por mí, ya que desarrollaré todo el trabajo sin la ayuda de otros programadores. Al desarrollar el software, seguiré el modelo en espiral propuesto por Boehm, que es una mezcla del modelo lineal secuencial y el modelo de construcción de prototipos.

Fijar las fuentes de información a utilizar

Delimitar el ámbito del software a desarrollar

Hay cierta complejidad algorítmica, especialmente en la parte del recorrido virtual sobre el movimiento de la cámara a través del mundo tridimensional. La memoria de la PC también será importante, ya que la estructura del invernadero debe almacenarse en memoria dinámica durante la visita virtual.

Descomposición funcional del sistema

Cargue la imagen BMP desde el disco. b0 Agregar canal de transparencia alfa a la textura en BMP.. c0 Asignar las texturas a los polígonos.. a0 Dibujar la consola de texto para capturar comandos. b0 Calcular el número de imágenes por segundo. c0 Dibujar el logo de la UAL. Esto sucede, como veremos en capítulos posteriores con la detección de colisiones, que no es una tarea tan sencilla como había estimado originalmente.

Estimaciones basadas en puntos de función y líneas de código

El número de puntos de función conseguidos es de 148, y el número de líneas de código en lenguaje C++ es de 5098. Por tanto, este dato es solo indicativo, ya que podré conseguir muchas más líneas de código, o incluso muchas menos.

Modelo COCOMO básico

La duración mínima del proyecto depende del esfuerzo y no del número de personas que trabajan en el proyecto. La calificación de esfuerzo incluye un valor promedio de vacaciones, capacitación y ausencias por fuerza mayor.

Modelo COCOMO intermedio

Tiempo de respuesta requerido: dado que este será un sistema interactivo, lo configuré en un valor normal. Uso de herramientas de software: lo he configurado en un valor intermedio para que no afecte el factor de ajuste del esfuerzo.

Modelo Putnam

Planificación temporal

Este paso debe realizarse para cada fotograma de la animación. Luego incluyo todas las bibliotecas necesarias para implementar los métodos de clase.

Metodología y primeros pasos 67

Formatos de archivos 3D

También tiene toda la información que necesito para mi proyecto: coordenadas de posición de vértice, mapeo de texturas y polígonos triangulares con sus tres vértices cada uno. Como ya he comentado, ASC es un formato de intercambio de 3D Studio, y ya que estaría usando Autocad para crear los modelos y eso, aunque el Departamento de Idiomas e Informática tiene una licencia de 3D Studio, por lo que pude comprobar que no exportado a ASC, tuve que buscar en Internet convertidores de formato de modelo 3D.

Primeras ideas para detectar colisiones

Este paso solo se debe realizar una vez, al inicio de la visita virtual. Dibujo: El punto grueso es la posición de la cámara y el punto más pequeño es el punto al que mira la cámara.

Colisión esfera-triángulo

Y luego todas sus coordenadas se distribuyen sobre el módulo: .. vN ormal.x=vN ormal.x/modulo vN ormal.y=vN ormal.y/modulo vN ormal.z=vN ormal.z/modulo. D=−(vN normal.x∗V ertice1.x+vN normal.y∗V ertice1.y+vN normal.z∗V ertice1.z) c) Con esto ya hemos obtenido el valor de D, y ahora que podemos sustituir las coordenadas del centro de nuestra 'esfera imaginaria' en la ecuación del plano para obtener la distancia entre ellos.

Rotaciones de la cámara - Rotación sobre un eje arbitrario

Se rota el objeto de manera que el eje de rotación coincida con uno de los ejes de coordenadas (en la explicación usaré el eje Z). Ahora, se puede establecer la matriz de rotación u alrededor de X, que rota el vector unitario alrededor del eje X en el plano xz.

Reducción del número de polígonos del modelo 3D

  • Primer modelo tridimensional
  • Modelo 3D definitivo

Era uno de los puntos que tenía que revisar, ya que las 3 tiras simples tenían casi la misma cantidad de polígonos que el resto del modelo. Para ello, en lugar de los casi 100 polígonos que ocupaban las 2 barras curvas (en otra optimización había eliminado la tercera, como hice antes con los polos), las 2 ahora ocupaban 4 polígonos.

Creación de los modelos 3D con Autocad

  • Descripción de los objetos 3D
  • Aplicación de texturas con Autocad
  • Exportación a 3DS y conversión a ASC

Estas coordenadas forman parte de la información que proporciona el formato ASC de cada uno de los vértices del objeto tridimensional. Tercero, seleccione la esquina superior izquierda para la coordenada V, es decir, la altura de la imagen de la estructura.

Creación de texturas

Integración de Visual C++ con OpenGL y SDL

  • Trabajando con Visual C++ 6.0 y OpenGL
  • Usando la librería adicional SDL

Un aspecto a tener en cuenta es el archivo SDL.dll incluido en la distribución de la biblioteca. Además, capturo eventos del mouse en la clase 'Cámara' para verificar sus rotaciones.

Engine 3D: diseño e implementación 111

Descripción general del código

Para la mayoría de los atributos, agrego una breve descripción dentro de la clase. Estos archivos comienzan de la misma manera que su equivalente .h con una descripción de clase.

Clase Interfaz

  • Descripción inicial de la interfaz
  • Funcionalidad principal de la interfaz
  • Eventos del teclado
  • Limitación del ratón
  • Dibujando la forma del invernadero
  • Transformación del polígono 2D al invernadero 3D - Cuadrículas completas 125

Pero para esto lo primero que necesito es encontrar los cuatro puntos de techo de cada fila. Una vez que tenga los 4 puntos o bordes de cada techo, el siguiente paso es ajustar la forma básica del techo construido en Autocad a esos puntos.

Clase objeto

  • Carga de objetos ASC y dibujo del mismo

Sin embargo, esta tarea es un poco complicada, ya que obtengo los 4 puntos de los techos de la interfaz inicial en 2D donde el tamaño de las cuadrículas es pequeño, y luego necesito transformar ese punto a su equivalente en el mundo 3D y con distancias mayores (para poder cambiar el techo virtual). La determinación de la forma de las cubiertas se realiza una sola vez, justo cuando se cierra el polígono de la interfaz y antes de iniciar el recorrido virtual.

Clase Vector

En el formato ASC, los vértices del objeto están al principio del archivo y las caras después. Teniendo esto en cuenta, y como conozco el número total de vértices y caras, busco las cadenas de texto adecuadas y cargo todos los datos del objeto tridimensional.

Clase textura

  • Crear texturas semitransparentes a partir de un BMP
  • Mapeado de texturas

Es necesario indicar para cada vértice de un objeto qué posición de la textura le corresponde. Este método se basa en una prueba realizada sobre el valor del componente alfa que estamos evaluando.

Clase fuente

  • Matrices en OpenGL: modelado y proyección
  • Trabajando con la matriz de proyección

Una vez que tenemos las coordenadas de la escena definidas con respecto a la cámara, este código primero selecciona la matriz de proyección con la que trabajar.

Clase cámara

  • Posicionando la cámara
  • Movimiento hacia delante y hacia atrás
  • Movimiento lateral
  • Vuelo de la cámara
  • Rotación de la cámara
  • Frames por segundo
  • Detección de colisiones

Por lo tanto, tengo que aplicar todas las transformaciones al punto donde mira la cámara. En la figura siguiente se muestra este eje de giro: como se puede observar forma 90º con respecto a los ejes de 'orientación' y 'vista', es decir, es perpendicular al plano formado por ambos vectores (desde el punto de vista de la perspectiva, es ' se aleja' en el eje Z de la imagen).

Clase esfera

Así que primero muevo la cámara al lugar apropiado, sin importar si choca o no. Aunque muevo la cámara, todavía no dibujo la escena, así que si hubiera una colisión, movería la cámara a su posición original y luego dibujaría para que parezca que no se ha movido.

Clase consola

Solo realizo la detección de colisión cuando la cámara se está moviendo, hacia adelante, hacia atrás o hacia los lados, y no la considero cuando está volando o girando (que no se está moviendo). Si hay una colisión con la pared, simplemente deshago el movimiento que hice para que, como aún no lo había dibujado en la escena, parezca que la cámara no se ha movido.

Clase Engine3D

  • Inicializando OpenGL y SDL
  • Manejo de eventos de teclado
  • Visita virtual
  • Creación de paredes
  • Modificación dinámica de la distancia entre pilares
  • Cambio de las cubiertas del invernadero

Estas variables se modifican a través de la consola de texto cuando el usuario selecciona una u otra portada. Y dependiendo de su estado, se mapeará una u otra textura, todas cargadas al inicio del recorrido virtual.

Clase listas

Este era otro de los requisitos del proyecto: que se pudiera modificar la cubierta que cubre la estructura del invernadero. Para cambiar el techo, lo que hago es cambiar la textura mapeada de los polígonos exteriores (techo y paredes), de tal manera que mantengo variables internas del tipo 'booleano' que almacenan el estado actual del mundo, es decir. la textura utilizada.

Resumen

Microsoft Visual Studio 6.0: en mi caso utilicé Visual C++ como lenguaje base de programación. Cuadros por segundo: una medida de rendimiento que equivale a la velocidad de la animación, es decir, la cantidad de cuadros o imágenes que se muestran en un segundo por pantalla.

Resultados y conclusiones 157

Funcionamiento del sistema y requisitos

En cuanto a la tarjeta gráfica, lógicamente, cuantos más polígonos pueda mover, mejor rendimiento. En mi caso, desarrollé un proyecto con una tarjeta gráfica bastante antigua: NVIDIA RIVA TNT2 Model 64, 32 MB.

Experiencia aportada a nivel profesional

Aprendí a fondo a manejar herramientas como Visual C++ y OpenGL, que actualmente son las líderes en el mundo de la infografía. Me permitió adentrarme en el mundo de la agricultura, que es mucho más complejo de lo que pensaba y muy interesante.

Programas utilizados

Experimentos y resultados

Trabajos futuros y conclusiones

Además, existen otras dos teclas especiales (F1 y F2) que se utilizan para aumentar o disminuir la velocidad de la cámara a través del mundo 3D. El renderizado utiliza potencia informática debido a los cálculos necesarios según el número de objetos, luces y efectos en la escena y según el ángulo de visión de la cámara.

  • OpenGL
  • Engines 3D
  • Autocad
  • Visual C++
  • Blender
  • Blitz3D
  • Direct3D
  • VRML
  • Invernaderos

Eberly - 3D Games: Real-Time Rendering and Software Technology by Alan Watt & Fabio Policarpo - Game Architecture and Design: New Edition by Andrew Rollings & Dave Morris. Microsoft Visual C++ 6.0 Programmer's Guide, Beck Zaratian - Microsoft Visual C++ 6.0 Reference Library, Microsoft Corporation - Microsoft Visual C++ 6.0, Don Gosselin.

Páginas web

  • OpenGL
  • Engines 3D - Programación de videojuegos
  • Autocad
  • Visual C++
  • Blitz3D
  • Blender
  • VRML
  • Invernaderos

Referencias

Documento similar

La caliza es disuelto por agua ácida y la acidez del agua depende normalmente de la La caliza es disuelto por agua ácida y la acidez del agua depende