Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Temas - ZüNdFoLGe

#1
Buenas, hace mucho tiempo no escribo en el foro, pero he vuelto...

esta vez consulto por ideas para el proyecto de grado, por el momento me propusieron tomar un motor 3D FREE ya existente (por ejemplo OGRE3D) y extenderlo con "algo" que no exista aún.

Es decir, agregarle una nueva capacidad y luego hacer una aplicación/juego que utilice esa nueva capacidad.

Qué podría ser? Se me ocurre incluir el uso de GPS por ejemplo, pero no se aún. En cuanto al motor debería ser uno que permita extenderse y modificarlo.

IDEAS ????

Gracias!!!
#2
Programación gráfica / Manejo de escena con Octree o Quadtree
30 de Noviembre de 2010, 12:35:38 PM
Hola, estoy un poco liado con este tema.

He decidido usar una estructura para el manejo de escena, tal como octree o quadtree (he descartado BSP por tema de simplicidad). Entiendo el concepto detras de esto, pero no lo he podido llevar a codigo.

Actualmente en el renderer lo que hago es renderizar cada componente de la escena invocando a su renderer concreto, es decir para cada objeto invoco un metodo render() donde renderizo el conjunto de triangulos correspondiente. Idem para el terreno (aplicando LOD, pero en definitiva se renderiza de manera similar a los objetos).

Como se supone que debo "particionar" estos conjuntos de triangulos para poder renderizar un subconjunto de ellos, dependiendo de donde este ubicada la camara?

Agradezco si alguien me puede aclarar esto, o si tienen algun link con algun ejemplo sencillo de entender.

Gracias de antemano
#3
General Programadores / Versionando en visual studio
16 de Octubre de 2010, 04:29:52 PM
Acabo de echarle un vistazo al plugin de TortoiseSVN para visual studio y parece estar muy bueno, por ahora me decanto a usarlo.

Que utilizas para manejo de versiones en Visual Studio?

Tal vez me pierda de algo mejor.

Gracias de antemano por las recomendaciones/comentarios.
#4
Programación gráfica / De OpenGL a DirectX
15 de Octubre de 2010, 04:18:01 PM
Hola,

hasta ahora he estado siempre con OpenGL y voy a probar un poco de DirectX.

Para los que estuvieron en esta situacion, en que cosas notaste "mayor diferencia" entre OpenGL/DirectX?

No pretendo discutir OpenGL vs DirectX, solo que voy a empezar a usar DirectX y me gustaria saber a modo general en que cosas se nota mayor diferencia para uno que viene trabajando con OpenGL.

Gracias de antemano por vuestros comentarios.
#5
Programación gráfica / Intersectando rayo con Cilindro
10 de Junio de 2010, 04:51:00 AM
Estoy tratando de implementar un raytracer, por ahora iba bastante bien hasta que me choque con el cilindro (hasta ahora llevo bien las demas primitivas: plano, esfera, cubo, triangulo).

El problema es que no doy pie con bola para que se vea el cilindro en pantalla (que se vea bien), con el codigo que muestro a continuacion el cilindro se ve punteado, sin color y con la sombra mal calculada (todos estos rollos son consecuencia de que hay un fallo en el calculo de la interseccion entre rayo y cilindro, que es con lo que estoy liado) . Tambien se esta renderizando como cilindro infinito (sin tapas) y en realidad lo estoy acotando (o lo estoy haciendo mal).

Me he guiado de este  tutorial (hasta ahora me ha sido muy util), cuyo autor creo que merodea estos foros (Juan Mellado):
http://www.inmensia.com/articulos/raytracing/cilindroycono.html?pag=1

Se que puede resultar bastante tedioso ponerse a ver un codigo de raytracing, pero si alguien por casualidad lo mira y puede echar una luz estare agradecido.

De la misma forma si alguien sabe de algun link con algun ejemplo sobre  interseccion entre rayo y cilindro se agradece que lo comparta (a pesar que ya he visto varios ejemplos y sigo sin dar pie con bola).


int Cylinder::IntersectRay( Ray& a_Ray,  float& a_Dist )
{
int retval = MISS;

float a = a_Ray.GetDirection().x * a_Ray.GetDirection().x + a_Ray.GetDirection().z * a_Ray.GetDirection().z;

float b = 2 * (a_Ray.GetOrigin().x * a_Ray.GetDirection().x + a_Ray.GetOrigin().z * a_Ray.GetDirection().z);

float c = (a_Ray.GetOrigin().x * a_Ray.GetOrigin().x) + ((a_Ray.GetOrigin().z * a_Ray.GetOrigin().z) ) - m_SqRadius;

        // calculo el determinante
float det = b*b - 4*a*c;

       
if (a != 0  &&  det >= 0) {  // si hay puntos de corte los calculo

float i1 = (-b - sqrtf(det))/(2*a);
float i2 = (-b + sqrtf(det))/(2*a);

if (det == 0) {
a_Dist = i1;
return HIT;
}

if (i1<0 && i2<0) return MISS;

                // obtengo el menor (positivo) de entre los 2 valores
float minor = getMinor2F(i1, i2);

// llamo "I" al punto de interseccion, calculo sus componentes a partir de la ecuacion del rayo
vector3 I = vector3(a_Ray.GetOrigin().x + minor* a_Ray.GetDirection().x,
a_Ray.GetOrigin().y + minor* a_Ray.GetDirection().y,
a_Ray.GetOrigin().z + minor* a_Ray.GetDirection().z
                   );

if (minor < a_Dist) {
// verifico las intersecciones en las "tapas" del cilindro
if ((I.x * I.x + I.z * I.z) <= 1 && (I.x * I.x + I.z * I.z) >= 0) {
a_Dist = minor;
retval = HIT;
}

}
}

return retval;
}
#6
Finalmente me decanté por usar una implementación casera que he visto en los foros de gamedev, lo modifiqué a mis necesidades, en un principio había estado probando el 3dslib pero la documentación la verdad me pareció demasiado escasa, no quise caminar sobre lo obscuro.

Por otro lado he estado analizando el cargador de modelos milkhsape3d (ms3d) en la web de NEHE, pero también lo descarté, necesitaba un formato más "portable", como lo es OBJ.

Qué cargador suelen usar en sus juegos? Por qué usas ese en particular?

Gracias de antemano


#7
He implementado mi propio cargador de modelos .obj  y  hasta ahora va todo sobre ruedas, excepto al mapear una textura al modelo.

Para expresar mi duda presento el siguiente ejemplo:    cargar un prisma y aplicar al mismo una textura (ver JPG). La textura la hice al vuelo en paint asique no se pongan detallistas... :P




en la especificacion del modelo (.obj) el prisma podemos verlo asi (es el mismo del jpg):

v -24.000000 7.838379 10.793568
v -24.000000 1.911621 10.793568
v -18.500000 7.838379 10.793568
v -18.500000 1.911621 10.793568
v -18.500000 7.838379 -16.793570
v -18.500000 1.911621 -16.793570
v -24.000000 7.838379 -16.793570
v -24.000000 1.911621 -16.793570
# 8 vertices

vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 1.000000
vt 1.000000 0.000000
# 4 texture coordinates

vn 0.000000 0.000000 1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
# 6 normals


Ahora  en la funcion de renderizado, yo dibujo el modelo triangulo a triangulo, tomando los vertices correspondientes. Por este motivo me surge la duda de como mapear la textura "al conjunto de triangulos que compone el modelo".

Esto lo hago asi:


glBegin(GL_TRIANGLES);
for(int i = 1; i < TriangleCount; i++) // for each face
{
glTexCoord2f(0.f,0.f);  // A LO BESTIA PARA VER LA TEXTURA
glNormal3f(Verticies[Triangles[i].v1].Normal.x, Verticies[Triangles[i].v1].Normal.y, Verticies[Triangles[i].v1].Normal.z);
glVertex3f(Verticies[Triangles[i].v1].Pos.x, Verticies[Triangles[i].v1].Pos.y, Verticies[Triangles[i].v1].Pos.z);
           
glTexCoord2f(0.f,1.f);  // A LO BESTIA PARA VER LA TEXTURA
glNormal3f(Verticies[Triangles[i].v2].Normal.x, Verticies[Triangles[i].v2].Normal.y, Verticies[Triangles[i].v2].Normal.z);
glVertex3f(Verticies[Triangles[i].v2].Pos.x, Verticies[Triangles[i].v2].Pos.y, Verticies[Triangles[i].v2].Pos.z);
           
glTexCoord2f(1.f,1.f);  // A LO BESTIA PARA VER LA TEXTURA
glNormal3f(Verticies[Triangles[i].v3].Normal.x, Verticies[Triangles[i].v3].Normal.y, Verticies[Triangles[i].v3].Normal.z);
glVertex3f(Verticies[Triangles[i].v3].Pos.x, Verticies[Triangles[i].v3].Pos.y,Verticies[Triangles[i].v3].Pos.z);
}
glEnd();


En este caso como indico en los comentarios he hecho el mapeo a lo bruto para ver la textura, pero se que esta mal indicar las coordenadas de la textura de esa forma.

Entonces, sabiendo que tengo las coordenadas de la textura en el .obj, como hago para aplicar correctamente las texCoord a los triangulos en el renderizado? Es decir, como hacer para "envolver" el prisma con la textura a partir de las coordenadas de textura del .obj? Supongo que debe haber alguna forma generica para cualquier figura geometrica, y ahi reside mi duda.

Agradezco cualquier tipo de ayuda  :D

Gracias de antemano
#8
Supongamos que he dibujado un triangulo, el mismo rota sobre su propio eje 'y' (ver codigo abajo).  Ahora bien, quiero que ademas rote segun el eje 'y' relativo al punto (0, 0, -6). Es decir, el triangulo deberia ademas rotar alrededor de ese punto, como si el triangulo fuera el planeta tierra y el punto fuera el Sol. Esto ultimo es lo que no he podido lograr  :-\

Alguien puede echar una mano?

Este es el codigo (el triangulo esta girando "estaticamente")


void DrawGLScene()
{
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // borrado de buffers de dibujo y z
 glLoadIdentity(); // Inicializacion de la matriz de transformacion

 //Traslacion para el dibujo del triangulo
 glTranslatef(-1.5f,0.0f,-6.0f);

 // rtri tiene el angulo de giro
 glRotatef(rtri,0.0f,1.0f,0.0f);

 // Triangulo
 glBegin(GL_POLYGON);
glVertex3f( 0.0f, 1.0f, 0.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
 glEnd();

...



Gracias de antemano
#9
Buenas,
     
      quien lea esto, que imagine lo siguiente: en una PC corre un proceso (por ejemplo supongamos que es simplemente una SUMA entre 12 y 15). La PC tiene 2 salidas, supongamos que un LCD de 16" y otro de 19" (por decir algo). La gracia es que aparezca el resultado pintado en color VERDE en el LCD de 16" y en color AZUL en el LCD de 19".

Algo así es la duda que tengo, independientemente del lenguaje que use (que por cierto será Java), ¿alguna guía hacia una posible solución?
#10
General / teclazo a 12 volts
16 de Abril de 2008, 02:53:16 PM
Se cuenta con un PC (pentium III 128mb) y un dispositivo receptor de fichas. El receptor de fichas (electrónico) genera un impulso a 12v cuando la ficha insertada es válida. La PC cuenta con una aplicacion que incrementa un contador cuando alguien presiona la tecla enter. Lo que quiero es, que cuando alguien inserta una ficha válida, el contador se incremente en 1. Es decir, la inserción de una ficha válida sería lo mismo que apretar la tecla enter.
Cómo puedo hacer esto? Una forma podría ser implementar "un joystick" casero, por el puerto lpt1. Pero tal vez se les ocurra algo mas fácil. El teclado no tiene porqué estar armado, es decir, también se podria ver la forma de hacer esto con el teclado al desnudo. Ya que en este caso, la aplicación espera un evento desde el teclado, para incrementar el contador.

Alguna idea? lo mas detallada posible.

Salu2
#11
General / Creditos en maquinitas de salon
11 de Abril de 2008, 03:50:26 PM
Alguien sabe cómo funciona el sistema de fichas en este tipo de maquinas de videojuegos?


Es decir, qué hace que al insertar una ficha, marque un credito?
#12
General / leer news con nntp on-line
25 de Marzo de 2008, 04:30:18 PM
Bueno hasta ahora para leer foros de noticias (autenticados) uso este:

http://www.nntp.hk/web/

el tema es que pasa casi toda la tarde caido  :lol:

si saben de algun otro, se agradece
#13
General Programadores / SCJP 1.5... la has dado?
22 de Marzo de 2008, 02:16:52 AM
Sun Certified Java Programmer (1.5)... tengo que darla  :lol:
Hay varios test Killers en la vuelta, algunos dicen que se salva bien con sólo hacerlos... alguna opinion?
Estudiar de raiz para esta certificacion no le hace gracia a nadie...pero sino queda otra habrá que hacerlo.
#14
General Programadores / CVS con Code::Blocks
07 de Marzo de 2008, 08:10:30 PM
Alguien ha usado cvs con el code? qué plugin has usado? que tal va?

bueno, decir que uso code::blocks en lugar de eclipse C++ ya que me dan una quota de solo 30MB  :cry:
#15
Off-topic / sin palabras: tatuaje de error win98
04 de Marzo de 2008, 05:18:03 PM
http://www.gran-angular.net/otro-tatuaje-geek-windows-error/2007/07/30/

Lo nunca visto...me he quedado sin palabras a esto.
#16
La idea es que tengo un xml y necesito generar otro, en base a informacion que procese desde el primero...
Es decir, supongamos que en ej1.xml tengo esto:

<xbe:Nombre>Eduardo</xbe:Nombre>
<xbe:id>666</xbe:id>


A partir del ej1.xml debo generar un ej2.xml que contenga:

<xbe:Nombre>Eduardo</xbe:Nombre>
<xbe:id>6</xbe:id>


Notar que cambie el id de 666 a 6...Suponiendo que use un mapeo desde un properties, o un cálculo, o lo q sea, pero en base al dato 666. En este caso podria ser 666/111

Existe alguna aplicacion/herramienta/clase (java) que me facilite esta tarea? Quiero evitar usar JDOM o SAX (que seria hacerlo a manopla).

salu2
#17
General Programadores / texto plano a partir de xslt y xml
26 de Febrero de 2008, 06:59:35 PM
Necesito generar un .txt a partir de un esquema xslt y un xml que contiene la info. Alguien sabe de alguna herramienta que me pueda ser util (estipo FOP) ? (para Java)... en caso de saber de alguna, una breve descripcion de como trabaja...

salu2
#18
Bueno son alrededor de 300 clases y tengo que poner un cabezal comun a todas. Hay alguna herramienta en eclipse para hacerlo? A mano es muy jodido  :cry:
#19
General / problema al conectarme a los foros de stratos
19 de Febrero de 2008, 08:06:00 PM

Warning: mysql_connect() [function.mysql-connect]: Too many connections in /www/www.stratos-ad.com/forums3/db/mysql4.php on line 48

Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /www/www.stratos-ad.com/forums3/db/mysql4.php on line 330

Warning: mysql_errno(): supplied argument is not a valid MySQL-Link resource in /www/www.stratos-ad.com/forums3/db/mysql4.php on line 331
phpBB : Critical Error

Could not connect to the database


he estado intentando conectarme hace rato y me aparece esa pagina de error. Parece estar saturado  :?
#20
eso  :lol: ... lo que quiero es que cada vez que catcheo una exception mostrar una pantalla de error propia, con un mensaje tipo "Contactese con su Administrador" o "Pudrase en el infierno", para todas las exceptions sin importar cual sea, de forma de mantener consistencia. Quiero hacer eso para evitar que aparezca el mensaje de error de java.

grax





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.