Entradas

Mostrando las entradas etiquetadas como OpenGL

OpenGL par_shapes.h

Imagen
En este tutorial veremos un pequeña biblioteca llamada par_shapes.h la cual nos ayuda a generar diversas figuras geométricas 3D, está escrita en C99 y no requiere dependencia alguna, además de generar figuras también nos permite aplicarles transformaciones y realizar diversas operaciones sobre ellas, calcular sus normales, por ejemplo.

Tutorial OpenGL uso de ImGui

Imagen
Construcción de interfaces gráficas de usuario con la biblioteca externa IMGUI para aplicaciones gráficas 3D creadas con la API OpenGL Moderna, aunque IMGUI es compatible con otras APIs gráficas como DirectX o Vulkan. Esta biblioteca cuenta con un gran número de controles, ventanas y menús que podemos utilizar de una manera sencilla y muy eficiente, es posible utilizar fuente TTF y además es posible cambiar el diseño de las ventanas y los controles. En tutoriales anteriores vimos la biblioteca AntTeweakBar que es otra alternativa a la hora de crear GUI en aplicaciones gráficas.

Cargar modelos 3D en formato binario (3DS)

Imagen
Anteriormente aprendimos a cargar modelos 3D  almacenados en archivos de texto en formato OBJ ,  ahora vamos a cargar archivos binarios en formato 3DS, los archivos binarios son cargados más rápidamente ya que nos es necesario la conversión de texto a número, estos archivos también ocupan menos espacio en disco.

OpenGL en Java (LWJGL)

Imagen
Para acceder a la librería OpenGL desde Java 8 primero debemos descargar LWJGL versión 3, este nos proveerá del acceso a la API Nativa OpenGL, para este tutorial usaremos el IDE Netbeans 8, primero creamos un proyecto Java Application, como este:

GLSL Variables Uniform

Las variables de tipo uniform permiten la comunicación entre la CPU y la GPU, estas variables mantienen su valor durante la ejecución del shader, las variables son declaradas usando la palabra reservada uniform , el shader no puede cambiar el valor de estas variables, sin embargo si es posible asignarle un valor inicial.

GLSL Vertex Attibute

Imagen
El vertex shader es la primera etapa programable en el OpenGL pipeline, es el encargado de procesar y transformar la geometría de una figura, se ejecutara una vez por cada vértice que compone dicha figura, antes de comenzar la ejecución del vertex shader primero debemos establecer los datos de entrada, podemos tener de dos tipos: vertex attibute y uniform variable .

Tutorial Sintaxis GLSL

En este tutorial veremos la sintaxis de GLSL, nos enfocaremos en el uso de la versión 3.3 como mínimo, en el Tutorial Introducción a GLSL vimos todos los detalles teóricos que debemos conocer antes de empezar, veamos nuestro primer fragmento de código.

Introducción a la Programación GLSL

Imagen
OpenGL Shading Language (GLSL) está basado en ANSI C, muchas de las características de C están presentes en GLSL con algunas diferencias que los hacen más simple, por ejemplo no contamos con punteros y se añaden nuevos tipos de datos para el manejo de vectores, matrices y texturas.

SkyBox Utilizando Cube Maps

Imagen
En el tutorial OpenGL anterior aprendimos a generar un terreno , aplicando correctamente diversas texturas, iluminación, mapas de relieve, etc., podemos lograr efectos realistas, sin embargo si miramos al horizonte veremos el color usado para limpiar el frame, en el mundo real vemos el cielo, sol, nubes, etc., un sky box es una caja que rodea la escena, aplicando las texturas adecuadas generamos el efecto deseado.

Generación de Terreno

Imagen
Generación de terreno utilizando un mapa de elevación, crearemos un terreno plano y usaremos un mapa de altura para establecer la elevación de cada uno de los vértices que componen el terreno, finalizamos aplicando una textura al terreno para darle un aspecto más realista, la textura puede contener rocas, nieve, fango, arena, y otros con lo que se logran efectos muy realistas.

Mapeo de Sombras

Imagen
Anteriormente veíamos como dar efectos de iluminación a las escenas 3D, para completar un efecto realista en nuestras escenas debemos agregar sombras, ya en el mundo real siempre que tengamos luz se genera una sombra, aprenderemos a utilizar el Frame Buffer Object (FBO) para almacenar un mapa de profundidad que será utilizado para crear la sombra de los objetos en la escena 3D.

Normal Map

Imagen
Un normal map es una textura que es usada para almacenar las coordenadas del vector normal, una textura regularmente almacena las componentes de color RGB, en un normal map se almacenaran las coordenadas XYZ que serán utilizadas para definir el vector normal, a esta técnica se le conoce como: normal mapping o en ocasiones como bump mapping.

Materiales e Iluminación

Imagen
Los materiales son usados para definir el aspecto de los objetos en escena 3D, estos describen las propiedades físicas de los objetos con respecto a cómo los mismos reflejan la luz que incide sobre ellos, anteriormente habíamos definido las propiedades de la fuente de luz por lo que toda la escena es iluminada del mismo modo, definiendo por separado las propiedades de cada objeto logramos que cada una de ellos responda de manera diferente a la iluminación.

Texturas e Iluminación

Imagen
En el tutorial OpenGL anterior aprendimos a modificar las propiedades de los materiales para obtener diferentes resultados cuando el objeto es iluminado por una fuente de luz, si deseamos obtener resultados más realistas debemos recurrir al uso de texturas para establecer de manera más precisa el color de cada pixel, veremos cómo utilizar texturas para definir las componentes ambiental, difusa y especular de un objeto.

GUI en OpenGL (AntTweakBar)

Imagen
AntTweakBar es una librería diseñada para crear interfaces gráficas de usuario (GUI) en aplicaciones gráficas, funciona tanto en OpenGL como en Microsoft DirectX, es bastante fácil de usar y muy potente, sobre OpenGL se puede usar en conjunto con las librerías de manejo de ventanas más utilizadas, como: GLFW (la que usamos en esta serie de tutoriales OpenGL moderno), la clásica GLUT y su versión más moderna FREEGLUT, SDL, entre otras.

Tutorial OpenGL - Cámara

Imagen
En este tutorial OpenGL moderno aprenderemos a crear una cámara móvil, que nos permitirá navegar libremente por una escena 3D, anteriormente para visualizar una escena usamos una cámara estática que nos permitía ver el objeto desde un único punto de vista, esta nueva cámara cambiara su posición al presionar determinadas teclas y cambiara su dirección de visión con el ratón.

Open Asset Import Library (ASSIMP)

Imagen
Assimp es una librería que nos servirá para cargar modelos o escenas 3D almacenados en gran variedad de formatos, como: Collada (*.dae; *.xml), Blender (*.blend), 3D Studio Max 3DS (*.3ds), Wavefront Object (*.obj ), y muchos más, Assimp puede cargar información de vértices, coordenadas de textura, normales, materiales, animación, y otros.

Iluminación - Tipos de Luces

Imagen
En este tutorial OpenGL veremos tres tipos de luces que podemos implementar, ya aprendimos como utilizar el modelo de iluminación phong en el tutorial anterior, ahora utilizaremos los conceptos aprendidos para crear varios tipos de luces, como: luz direccional, luz puntual y luz focal.

Modelo de Iluminación Phong - Tutorial OpenGL

Imagen
En la programación de gráficos 3D existen distintos modelos de iluminación que intentan simular cómo se comporta la luz al iluminar la superficie de un objeto tridimensional, uno de esto es el modelo de iluminación Phong , lo podemos aplicar por vértice ( Gouraud shading ) o por pixel ( Phong shading ). 

Dibujar Texto en OpenGL

Imagen
Dibujar texto en una aplicación gráfica es una tarea común, sin embargo OpenGL no cuenta con funciones para esta tarea, cuando deseemos mostrar texto tenemos varias opciones, las más comúnmente utilizadas como: usar una imagen generada a partir de una fuente determinada, o cargar una fuente TrueType, generar la imagen y mostrarla como una textura.

Temas relacionados