[Problema] Java 3D

Iniciado por adeur, 8 Mayo 2013, 07:26 AM

0 Miembros y 1 Visitante están viendo este tema.

adeur

Hola a todos.. llevo un par de meses aprendiendo el lenguaje en java.. por lo que soy novato aun 
=(.. el asunto es que me han dejado como PROYECTO hacer un programa que me genere un OBJETO EN 3D a partir de 3 vistas (frontal, perfil y superior) que yo mismo debo dibujar, osea debo de dibujar una figura frontal, una de perfil y una superior y que al presionar un boton me genere el objeto en 3D basado en las 3 vistas (figuras) anteriores. Lo "bueno" es que los dibujos deben ser hechos con lineas rectas osea, no debo usar curvas.

Por lo pronto ya he estado leyendo la parte de java2D para crear lineas y figuras, pero no se cómo puedo combinar las 3 vistas para generar el objeto en 3D.

Espero que puedan responder a mi interrogante.. sugerirme algun texto que me ayude a solucionar mi problema o cualquier cosa.. se los agradeceria mucho.

Saludos y gracias por prestarme su atencion =)


DarkSorcerer

#1
Podrias investigar acerca de la API Java 3D

MidBifroid

ayudaaaaa!!!!

e avanzado un poco mas en java3d pero me he topado un un muro que no entiendo nada

he hecho un Shape3D de 2000x 2000z, de los cuales cada 1x1z es un QuadArray
osea e echo un terreno de 2000x2000 pero no es liso, se puede arrugar, y de hecho lo arrugo y hago montañitas y todo etc...

el problema es que cuando el tamaño pasa de los 500x500z java3d va lento

y no entiendo esto porque ¡¡ minecraft tiene bloques por todas partes y va muy rapido !! ¿como se hace el rendimiento?

osea, solo he hecho un plano, un puto plano de 2 dimensiones y va lento, y el minecraft todo lleno de cuadraditos y texturas por todas partes y a una larga distancia, y no va lento ¿COMO ES ESTO?

me han dicho que me busque un motor grafico pero ¿acaso java3d no es un motor grafico?

LWJGL, JOGL, y unos cuantos motores graficos mas.

los he estado viendo, y estos no usan a java3d sino que usan directamente  opengl sin pasar por java3d

voy a por el ejemplo de JOGL

Java3D puede usar OpenGL (pero no se como)
JOGL usa OpenGL
he leido que
- JOGL puede usar Java3D a la vez que este usa OpenGL, esta bien, pero habria que aprender a usar JOGL
- Java3D puede usar JOGL que a su vez usa OpenGL, esta bien, ya que mantienes la funcionalidad y tecnica del codigo, solo cambiando el intermediario

esto me ocasiono mucho lio, incluso me fui a pegar una cabezadita

resulta que Java3D 1.5.1 es de Sun/Oracle, pero el proyecto esta abandonado
los de JOGL "jogamp", continuan construyendo java3d y esto poca gente lo sabe, la ultima version es 1.5.2, y estan sacando la 1.6, supuestamente con compatibilidad directa con Java3D para hacer el IDEAL Java3D -> JOGL -> OpenGL

bien, me instale el 1.5.2 y el 1.6, inclui en mi proyecto las librerias del nuevo j3d

me descargue las librerias de JOGL, tambien las inclui en mi proyecto

habia que hacer al inicio System.setProperty(..) algo que no me acuerdo para que Java3D se enterase de que su modo de uso no es directamente la grafica o Opengl, sino JOGL, pero no me funciono porque por lo visto cambiaron el nombre del paquete, nidea, problemas por todas partes hermano

¿alguna manera efectiva de programar Java3D -> JOGL -> OpenGL ?

MidBifroid

bueno en realidad se puede usar directamente la API de java3D

lo unico que hay que hacer es tu propio motor

primer truquito
¿OpenGL o Direct3D?
        System.setProperty("j3d.rend", "ogl");
        System.setProperty("j3d.rend", "d3d");

luego tienes que crearte un sistema de troceado del mapa, divide el mapa en trozos o cuadrantes, que vallas cargando y descargando conforme te mueves, nunca dejes el mapa cargado entero en el universo

luego utiliza sistemas de medida mas pequeños, no utilices la escala 1 (int) como 1 (metro), sino mas pequeño, utiliza por ejemplo 0.5 (float) como 1 (metro) asi encojes todo tu sistema de juego a una escala mas pequeña y facil de renderizar

luego de eso, la distancia de vision normalmente esta a 20, puedes ponerla a 12

cositas asi para mejorar

SALUDOS!!! me estoy currando un buen juego :)