Subido por Alba Yanin

DESCARGA DE PLUGIN PARA NETBEANS

Anuncio
DESCARGA DE PLUGIN PARA NETBEANS
PASO 1:
Descargar el plugin oficial de Java3D para Netbeans en la versión INSTALLER
PASO 2:
Ejecute el instalador: lee el acuerdo de licencia y haz clic en aceptar (accept)
PASO 3:
Espera que finalice y tendrás lista la librería dar clic en Terminar (Finish)
OPCION 2: AGREGAR ARCHIVOS JAR
PASO 1: Descarga el plugin oficial de Java3D para Netbeans en la versión ZIP y descomprime el
contenido.
PASO2 Elige el proyecto en Netbeans, haz clic derecho sobre la carpeta bibliotecas y elige Agregar
JAR/Carpeta…
PASO3 Navega hasta la carpeta donde descomprimiste el archivo ZIP, en la carpeta\j3d-re\ext y
selecciona todos los archivos, y haz clic en abrir, como se muestra a continuación
PASO 4: comprueba los resultados dando clic derecho sobre bibliotecas y deben aparecer los .jar
display()
Defino las caracteristicas del material que voy a usar :
GLfloat
GLfloat
GLfloat
GLfloat
mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
mat_diffuse[] = { 0.1f, 0.5f, 0.8f, 1.0f };
mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
mat_shininess[] = { 100.0f };
La función glClear nos permite borrar tanto buffer de color, como el de profundidad.
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Selecciono la matriz de modelado :
glMatrixMode (GL_MODELVIEW);
y la "limpio" con la matriz identidad :
glLoadIdentity ();
Roto el objeto 25 grados en torno al eje x.
glRotated(25.0, 1.0, 0.0, 0.0);
Lo vuelvo a rotar pero esta ves -30 grados en torno al eje y.
glRotated(-30.0, 0.0, 1.0, 0.0);
Aplico el material al objeto
glMaterialfv(GL_FRONT,
glMaterialfv(GL_FRONT,
glMaterialfv(GL_FRONT,
glMaterialfv(GL_FRONT,
GL_AMBIENT, mat_ambient);
GL_DIFFUSE, mat_diffuse);
GL_SPECULAR, mat_specular);
GL_SHININESS, mat_shininess);
Dibujo una "Tetera" de dimensiones 125.0, este objeto esta definido en GLUT.
glutSolidTeapot(125.0);
Fuerzo a dibujar el objeto.
glFlush();
reshape()
Definimos primero un viewport es un área rectangular de la ventana de visualización. Por defecto es la
ventana entera pero podemos variarlo a gusto. Se utiliza la funció :
void glViewport(GLint x, GLint y, GLsizei w, GLsizei h)
dónde (x,y) es la esquina inferior izquierda del rectangulo o viewport. Esta coordenada debe especificarse con
relación a la esquina inferior izquierda de la ventana. Claro está que w, h son la anchura y altura de nuestro
viewport dentro de la ventana. Todos los valores son enteros ya que se tratan de pixels.
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
En primer lugar tenemos decirle a OpenGL como debe proyectar nuestros gráficos en pantalla. Por ello y para
empezar le decimos que active la matriz de proyección :
glMatrixMode (GL_PROJECTION);
Procedemos a "limpiarla" para que no contenga ningún valor que pueda falsear los cálculos y por tanto nos
haga obtener resultados inexactos. Para ello cargamos a la matriz activa (proyeccion) con la matriz identidad :
glLoadIdentity ();
Tengo la matriz de proyección limpia, pero ahora tengo que decirle a OpenGL de que manera quiero que
proyecte mis gráficos en la ventana que he creado. Usaremos la función glOrtho(...). Así creo el volumen de
visualización. Todo lo que esté dentro de este volumen será proyectado de la forma más simple, eliminando
su coordenada Z, o de profundidad. Es la llamada proyección ortográfica y no permite que se distinga la
distancia de los objetos a la cámara :
glOrtho (-200, 200, -200, 200, -200, 200);
glOrtho()
Se utiliza para especificar una proyección
ortográfica. Este tipo de proyección define un
volumen de vista rectangular, concretamente
define un paralelepípedo de tamaño infinito, este
hecho nos lleva a definir una serie de planos de
corte para detallar con exactitud el volumen de
vista. OpenGL define la sentencia como:
glOrtho(xmin, xmax, ymin, ymax, cerca,
lejos);
Estos seis argumentos definen la ventana de
visualización y los planos de corte tanto cercano
como lejano. Para definir la ventana de
visualización es suficiente definir las
coordenadas de dos esquinas de la ventana, con
estos dos valores queda totalmente definida. Los
valores de cerca y lejos representan el plano
cercano y el plano lejano. Hay que tener en
cuenta que el objeto a visualizar debe
encontrarse dentro de ambos planos, si
sobrepasan estos dos planos el objeto se
recortará automáticamente.
Ya hemos terminado con la matriz de proyección. El sistema ya sabe como debe proyectar en pantalla. Ahora
pasemos a la matriz de modelado/visionado, o sea, la matriz que rota/escala/traslada....Dado que queremos
operar sobre ella la seleccionamos con :
glMatrixMode (GL_MODELVIEW);
Procedemos a "limpiarla" con la matriz identidad.
glLoadIdentity();
keyboard()
Esta funcion termina la aplicacion si es presionada la tecla Esc
void keyboard(unsigned char key, int x, int y)
{
switch (key)
{
case 27: exit(0);
break;
}
}
Código Fuente del ejemplo
Codigo fuente (ejemplo1.zip 4kb)
/* Este programa utiliza proyeccion ortografica para
* visualizar una "Tetera", este objeto esta definido
* en GLUT, se crea una fuente de luz, y un material */
//Incluimos las librerias
#include <GL/glut.h>
#include <stdlib.h>
void init(void)
{
// Ubicamos la fuente de luz en el punto (1.0, 1.0, 1.0)
GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };
// Activamos la fuente de luz
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
// Queremos que se dibujen las caras frontales
// y con un color solido de relleno.
glPolygonMode(GL_FRONT, GL_FILL);
}
void reshape(int w, int h)
{
if (!h)
return;
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
// Activamos la matriz de proyeccion.
glMatrixMode(GL_PROJECTION);
// "limpiamos" esta con la matriz identidad.
glLoadIdentity();
// Usamos proyeccion ortogonal
glOrtho(-200, 200, -200, 200, -200, 200);
// Activamos la matriz de modelado/visionado.
glMatrixMode(GL_MODELVIEW);
// "Limpiamos" la matriz
glLoadIdentity();
}
// Aqui ponemos lo que queremos dibujar.
void display(void)
{
// Propiedades del material
GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
GLfloat mat_diffuse[] = { 0.1f, 0.5f, 0.8f, 1.0f };
GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat mat_shininess[] = { 100.0f };
// "Limpiamos" el frame buffer con el color de "Clear", en este
// caso negro.
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode( GL_MODELVIEW_MATRIX );
glLoadIdentity();
// Rotacion de 30 grados en torno al eje x
glRotated(25.0, 1.0, 0.0, 0.0);
// Rotacion de -30 grados en torno al eje y
glRotated(-30.0, 0.0, 1.0, 0.0);
// Dibujamos una "Tetera" y le aplico el material
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);
glutSolidTeapot(125.0);
glFlush();
}
// Termina la ejecucion del programa cuando se presiona ESC
void keyboard(unsigned char key, int x, int y)
{
switch (key)
{
case 27: exit(0);
break;
}
}
// Main del programa.
int main(int argc, char **argv)
{
// Inicializo OpenGL
glutInit(&argc, argv);
// Activamos buffer simple y colores del tipo RGB
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
// Definimos una ventana de medidas 300 x 300 como ventana
// de visualizacion en pixels
glutInitWindowSize (300, 300);
// Posicionamos la ventana en la esquina superior izquierda de
// la pantalla.
glutInitWindowPosition (0, 0);
// Creamos literalmente la ventana y le adjudicamos el nombre que se
// observara en su barra de titulo.
glutCreateWindow ("Teapot");
// Inicializamos el sistema
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMainLoop();
// ANSI C requiere que main retorne un valor entero.
return 0;
}
Descargar