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 - Manu343726

#21
XNA / Dibujar sprite
27 de Diciembre de 2011, 04:10:00 PM
Hola
Quería saber si existe alguna manera de dibujar un sprite definiendo sus cuatro vertices.
#22
Proyecto dx_lib32 / Error de argumento
26 de Diciembre de 2011, 04:31:10 PM
Buenas.
LLevo bastante tiempo teniendo problemas con la llamada a las funciones DRAW_VertexMap y DRAW_Trapezoid, las cuales desde hace unas semanas me lanzan excepciones del tipo "INVALIDARGUMENTEXCEPTION". No le di mucha importancia, pensando que había metido la pata con el array de vertex o el specular; pero ya estoy un poco mosca.

Hoy a sido la gota que colma el vaso: Desesperado, he copiado el código TAL CUAL del tutorial 08 de dx_GFX_class, y cual es mi sorpresa cuando veo que también me lanza la dichosa excepción.

Lo más desconcertante de todo, es que si ejecuto algún proyecto de hace tiempo funciona perfectamente....podría ser algún problema con el compilador???
#23
Proyecto dx_lib32 / Futuro del foro
20 de Diciembre de 2011, 10:16:29 PM
Buenas.
Me gustaría saber cuales son las espectativas de futuro de éste foro. Digo ésto porque he notado un descenso en su actividad (hasta tal punto que a veces pienso que solo entro yo XD), y me gustaría no quedarme solo, ya que utilizo (y seguiré utilizando durante mucho tiempo) dx_lib32.

Ahora que me he decidido a desarrollar un juego en serio, no quiero quedarme tirado con mi principal herramienta de trabajo!!!!


PD: Para cuando el código de dx_lib32??? Tengo ganas de meterle mano  >:D
#24
Proyecto dx_lib32 / Colisión recta-voxel
18 de Diciembre de 2011, 10:39:43 PM
Alguien sabe como detectar si una recta pasa por un voxel???
Estando en 3D, una recta definida en el espacio cartesiano (de manera paramétrica o como corte de planos, me da igual) y un voxel, éste definido mediante su posición y sus dimensiones.

#25
Proyecto dx_lib32 / Luces
11 de Diciembre de 2011, 12:40:30 AM
NOTA: Éste tema es como repuesta al tema "Luces" de Hechelion. No lo puse ahí por si no se veía.

Bueno, no se si será por el desarrollo de mi "Cities" (Patente en trámite XD) pero últimamente me da por pensar en autómatas celulares.
Antes estaba releyendo viejos post, y al leer el tema de Hechelion se me encendió la bombillita: ¿Y si usas un autómata celular?

Me explico: Si el juego está basado en tiles, podrías crear un autómata en el cual cada tile tiene una célula asignada. De ésta forma, cada célula calcula la iluminación de los cuatro vértices del sprite teniendo en cuenta la iluminación de las de alrededor.
Si os convence la idea, haré una pequeña demostración
#26
Proyecto dx_lib32 / Cities: ¿Isométrico o 3D?
10 de Diciembre de 2011, 11:51:33 PM
Me he animado por fin a desarrollar mi version del SimCity ("Cities", a falta de un nombre mejor), por supuesto con dx_lib32, pero todavía me pica el gusanillo del 3D.

Me he hecho una lista de ventajas y desventajas del 3D y el Isometrico:

Tal y como está diseñado el motor del juego, el mundo está definido en 3D, de tal manera que mostrar el juego de esa manera sería relativamente facil. Pero los edificios tendrían que ser obligatoriamente low-poly (por no decir superlow-poly) para asegurar una mínima fluidez, de manera que quedaría un poco feo.

Yo me decanto más por 2D isométrico (Me estoy imaginando a [EX3]: "Bien, bien, por fin usa la biblioteca para lo que es..." no te hagas ilusiones XD):
Motor más simple, gráficos de mejor calidad, etc. Pero no me queda claro: Renderizar el escenario en isométrico es facil (Creo que ya habéis visto algunas fotos de mis primeros test), pero ¿Y los edificios?
Yo había pensado en sprites con dibujos en isometrico. Pero no me aclaro con la manera de encajar dichos sprites en la escena.


Acabo de leer lo que he escrito... ¿Siempre me lio tanto? Ya lo siento...
Agradezco opiniones.
#27
Proyecto dx_lib32 / Mañana de inspiración!
07 de Diciembre de 2011, 01:45:43 PM
Pues sí, parece que tras tanto tiempo he sido iluminado: He conseguido solucionar el problema del parpadeo en mi motor3d.

Así que ya funciona perfectamente CON  DX_LIB32.
Si hay alguien interesado, volveré a colgar el programa de prueba.

PD: El cubo con texturas está en camino....
#28
Proyecto dx_lib32 / Al Cesar lo que es del Cesar
14 de Septiembre de 2011, 10:58:37 PM
Bueno para relajar un poco, preguntas de cosas relacionadas con dxlib32 XD.

Estaba revisando el código del juego que estoy haciendo,no se si lo mencioné, algo tipo sim city 3000.
Por ahora he hecho el código base para renderizar el escenario. Éste es el resultado:
http://imageshack.us/photo/my-images/51/captura2v.png/
#29
Proyecto dx_lib32 / POR FIN!!! Motor3D con dxlib32
13 de Septiembre de 2011, 11:49:18 PM
Siiiii lo conseguí.... aunque con algunos fallos que con vuestra ayuda podré remendar.
Aquí está la dirección de descarga, para quien lo quiera probar: http://www.mediafire.com/?9vfd364bbg65b4e

Quien lo pruebe se dará cuenta rápido del primer problema: Cuando se redibuja muy rapidamente, la escena no se dibuja. No se si es que con las oeraciones de transformación/iluminación aplicadas constantemente bloqueo el bucle de renderizado de dxlib32. Por si acaso, lo metí en un subproceso diferente. Como veis, sin resultado. Alguna idea?

Por cierto, para aquellos que quieran dibujar polígonos con dxlib32 (que serán pocos), basta con triangularlos y dibujar cada triangulo como un quad de dxlib32 (DRAW_Trapezoid). Solo hay que repetir uno de los vertices.

Hechelion, ya puedes ver girar un cubo a 30 FPS con dxlib32 XD.

#30
Proyecto dx_lib32 / Mi gozo en un pozo
07 de Septiembre de 2011, 03:57:50 PM
Buenas, hace mucho que no paso por aquí.

Tenía ya ganas de enseñaros el motorcillo 3d que estoy haciendo, para el cual ya tengo hecho un pequeño wrapper de dxlib32  ( si,si, wrapper de wrapper, para simplificar un poco más las cosas).
Hace poco he decidido acer una inversión y arreglar mi sobremesa, al cual he instalado Win7 x64. Y cual es mi sorpresa  cuando tras instalar todo lo instalable , el compilador de vb2008 tiene un problema con el interprete COM.

Y claro, rápidamente caigo: dx_lib32. 32... mmmm. Y ahora es cuando la pregunta estúpida de la semana: ¿ No hay algún tipo de soporte/apaño para ejecutar dxlib32 en sistemas de 64 bits?

Creo que ya se la respuesta...al menos tengo el netbook (win7 starter 32 bits)...
#31
Proyecto dx_lib32 / Poligonos...
15 de Junio de 2011, 12:48:03 AM
HOLA!!!

Hace mucho que no paso por aquí para dar el coñazo (Seamos sinceros, mis preguntas no las entiendo ni yo).

He estado desarrollando un engine desde cero (creo que lo comente hace tiempo), y para no complicarme usé GDI+ para el dibujo. Ahora que lo he ido optimizando, me he dado cuenta de que es éste dibujo el mayor cuello de botella. Por eso empiezo a plantearme portarlo a dxlib32. Lo he intentado varias veces, pero hay cosas que se me resisten. En concreto dibujar polígonos.

No encuentro una manera eficaz (Vale, no encuentro ninguna manera)  para dibujar un polígono cualquiera. Ya lo se, las funciones DRAW_VertexMap,DRAW_Trapezoid, y derivados están diseñadas para dibujar tiles. Pero yo sigo empeñado. Intenté usar DirectX nativo pero es un caos. Así que me rindo a vuestras sugerencias.


Ahora, a riesgo de que alguien me apalee, reabro un viejo debate: El problema de saber si un punto está dentro de un polígono.
He estado ojeando viejos post y he visto que los más citados son el algoritmo radial y el basado en el teorema de la cuerda de Jordan.

A nivel teórico, creo que todos estamos de actuerdo en que el de Jordan es mejor (Admite polígonos concavos y convexos, y es rápido comparado con el cálculo de angulos del radial). Pero a nivel práctico, que me recomendais??? Los numerosos casos que producen fallos en Jordan me dan mala espina...pero los ángulos del radial...Ya véis, todo un debate en mi mente. AYUDADME ANTES DE QUE ME VUELVA LOCO!!!
Gracias de antemano.

PD: Si por curiosidad aparece Giant's Quid, me gustaría hacerle un par de preguntas sobre su engine.
#32
Programación gráfica / Proyección cónica
11 de Mayo de 2011, 01:52:09 AM
Hola.

Estoy desarrollando un engine desde cero y tengo algunos problemas con la proyección cónica.

Suponiendo que tengo un punto P(Px,Py,Pz), y una cámara con posición C(Cx,Cy,Cz) y vector de dirección V(Vx,Vy,Vz).

El primer paso sería calcular el plano de proyección.Facil: Plano con vector normal la dirección de la cámara,y que está a una distancia determinada de ésta (Se supone,entre los objetos de la escena y la cámara).
Bien ahora trazamos una recta desde la cámara hasta el punto P,y calculamos la intersección entre dicha recta y el plano de proyección.
Ha dicho punto lo llamaremos I(Ix,Iy,Iz). Si el plano de proyección fuera paralelo al plano XOY(es decir,el plano formado por los ejes X e Y) bastaría descartar la coordenada z del punto I para obtener las coordenadas 2D de P.

Pero si el plano no es paralelo, ¿como saco las coordenadas 2D?
He pensado en girar el plano despues de calcular I hasta colocarlo paralelo.Después saco las coordenadas 2D del punto I girado, mediante el método anterior. Pero realizar un giro cada vez que necesito proyectar un punto me parece muy costoso. ¿Hay alguna manera mejor?

Gracias de antemano.


Ah por curiosidad. Alguien sabe que tipo de matriz usa OpenGL para representar los puntos en los cálculos de transformaciones? Yo los represento en forma de matriz columna  X  ,pero he visto que suele hacerse como matriz fila (X,Y,Z,1).
                                                                          Y
                                                                          Z
                                                                          1
#33
Programación gráfica / Dudas varias...
04 de Abril de 2011, 11:17:17 PM
Hola. Soy nuevo en éste subforo.

Estoy desarrollando un motor3D y tengo varias dudas al respecto:

Programo con VB.NET, y utilizo las funciones de dibujo de dicha plataforma. Estoy pensando en migrarlo a DirectX, pero tengo varias dudas:

Necesito saber las cosas de las que se encarga automáticamente. Es decir, proyecciones , transformaciones , iluminación, etc. Cuales hace y cuales no???


#34
Proyecto dx_lib32 / La consola...un amor no correspondido
31 de Marzo de 2011, 04:55:47 PM
Creo que ya lo he dicho alguna vez, utilizo masivamente la consola de depuracion de dxlib32. Tanto es así que hay proyectos que agrego referencias a la librería solo para usar la consola (Absurdo no???).
Bueno la cosa es que tengo varias dudas sobre su funcionamiento:

- En primer lugar, me he fijado que no se pueden usar varias. Por mucho que cree varios objetos system, las llamadas a DEBUG_SendText se dirigen a la misma. Hay alguna manera de crear varias consolas independientes?

- Cuando cierras la consola con el boton X de la ventana, la aplicación finaliza. ¿Se puede evitar ésto?

- Ésto es solo por curiosidad: El código que usa la entrada de datos a la consola es ASCII normal no? Nada de extendido ni Unicode...
Lo digo por que me he fijado en que no reconoce las tildes ni la ñ.
#35
He estado mirando post antiguos  me he dado cuenta de que la librería de directx8 tambien es necesaria,pero creo que no la subí junto con los otros dos archivos..... es obligatorio tenerla?
se que es la base de dxlib32 pero, si el sistema que lo ejecute tiene librerias de directx de una version posterior, es necesaria o puede usar la version posterior?? Digo esto sin tener n idea de los cambios de la api en los ultimos años. Teoricamente el avance de ésta deberia ser acumulativo ( por el tema de la compatibilidad) pero claro...igual quitan cosas y ponen otras....


Bueno dejemonos de rollos y vayamos al tema:

Creo que ya describí antes el método que uso para hacer el sombreado: Recorro todos los vértices del poliedro, y por cada uno creo una recta que une al vertice con el foco de luz. De éste modo el vertice de la sombra es la interseccion entre la recta vertice-foco y el plano del suelo.

Así tras recorrer todos los vertices de la figura obtengo una nube de puntos que obviamente no puedo usar directamente para pintar.
Por ello utilizo un algoritmo para obtener la envolvente de dicha nube de puntos,ésto es, el polígono convexo con menor área que contiene a todos los puntos. Y aquí está el problema. Utilizo el algoritmo de Graham (http://es.wikipedia.org/wiki/M%C3%A9todo_de_Graham) para calcularlo. Con poliedros pequeños todo va bien, pero cuando el poliedro tiene muchos vertices, los puntos de la sombra salen muy proximos entre si, y el algoritmo falla.
Alguna idea??

Otra cosa: El método que expliqué antes solo calcula las sombras proyectadas sobre el suelo, y quiero implementar tambien sombreado sobre las figuras. Alguien sabe de algun método que no sea hacer lo anterior con cada cara existente (Es decir, en vez de hacer la interseccion con el suelo, hacerla con el plano de cada cara)???


Ahora si, sobre dxlib32.  Si lo he entendido bien , el parametro z sirve para especificar la posicion en el buffer de dibujo...
He ojeado la documentacion y me parece haber visto que solo hacepta valores entre -8 y 8. Si es así, como hago para especificar la posición  de digamos 1000  texturas?
#36
Proyecto dx_lib32 / Motor3D con dxlib32
29 de Marzo de 2011, 11:46:00 PM
Hola.
En el tema de la noticia de XNA  nombré el desarrollo que estoy haciendo:Un motor3D que en el futuro estará basado en dxlib32
He creado este tema para enseñar que sí se puede obtener un rendimiento bastante haceptable con vb.

Si puedo cuelgo una demo con lo que llevo hasta ahora (aproximadamente un mes), pero antes de eso haré una brebe descripción:

El proyecto esta formado por varios modulos (TiposEspacio3D,TiposEspacio2D,CalculoEspacio3D,CalculoEspacio2D,etc) cada uno con el codigo de cada tipo de elemento,como indican sus nombres. En resumen cuento con:

- Un módulo con un conjunto de funciones para el calculo con matrices (Producto matricial, determinante,matriz inversa,etc)
- Otro con el calculo de transformaciones mediante matrices(Rotación, traslación,escalado...)
- Clases para los elementos del espacio tridimensional (Plano3D,Recta3D,Vector3D,Punto3D...)
- Clases del espacio bidimensional (Vector2D, y Point obviamente)
- Modulo de calculo de intersecciones , distancias ... (Distancia punto-punto,interseccion Plano3D-Recta3D,etc)
- Modulo de calculo 2D(Punto dentro de poligono,envolvente de nube de puntos,etc)
- Modulo de cálculo de representaciones(Punto3D a point en diferentes perspectivas)
- Calculo de sombreado-iluminacion
- Clases de objetos (Vertice,Cara,Poliedro...)

El motor está formado por dos capas: Por una parte está la clase Motor3D, que contiene una matriz con los poliedros en memoria y otra con los focos de luz. Ésta a su vez incluye una clase que implementa un buffer de dibujo, el cual conitiene las llamadas a los métodos de dibujo/sombreado. Lo más importante de ésta es que contiene una matriz con la informacion de todas las caras (ésto es el buffer propiamente dicho), el cual se reordena automáticamente según la distancia a la de cada cara a la cámara, lo que permite ocultar las caras tapadas por otras.

Para mejorar el rendimiento, no dibujo todas las caras del buffer, sino que compruebo si éstas "miran" hacia el lado de la camara. Así todas aquellas que miran " hacia atrás" no son dibujadas.

Bueno... si le interesa a alguien daré algunas explicaciones más detalladas. Pero si que me vendría bien la opinión de algunos otros desarrolladores, para comparar los métodos de trabajo.


En concreto la demo que voy a colgar contendrá cuatro poliedros en rotación alrededor del eje z, con un foco de luz,el cual podréis mover con el cursor del ratón.
Si queréis podéis  parar la rotación (tecla P), y trasladar la figura seleccionada(flechas, y teclas C y V para eje Z) y rotarla (Eje Z: tecla Z y X,Eje X teclas W y S, eje Y teclas A y D)

He conseguido con éstas figuras un rendimiento de más de 100 FPS, pero normalmente ronda los 30.  Utilizo un Asus EeePC, así que supongo que a la mayoría os vaya mejor.

PD: Npo consigo colgarlo, ayuda por favor!!!
#37
Proyecto dx_lib32 / RenderTarget demasiado pequeño....
17 de Febrero de 2011, 03:48:35 PM
Hola!

(Antes de nada,decir que ya he publicado éste mensaje en mi tema anterior (VB no ha muerto...) pero he decidido publicarlo mejor como un nuevo tema, por si no lo veíais. Para la proxima vez, ¿Cuales son las normas del foro al respecto?)

Mucha gracias por responder tan rápido, así da gusto.
Efectivamente trabajo con .NET (Concretamente con la versión 3.5.Empeze con 4.0,pero he decidido usar la anterior para tener mayor compatibilidad).

Haber si me podeis ayudar con algunos problemillas que tengo:
He empezado a hacer pruebas para el desarrollo del "SimCity" que comenté. La idea es que sea en perspectiva isométrica.
Lo que he hecho es crear algunas estructuras para manejar elementos en el espacio (Punto3D,Vector3D,etc),y luego mediante una transformación  dibujo dichos elementos en isométrico.
Para generar un escenario guardo en una matriz los valores tridimensionales de los vértices de la malla. Por ejemplo,en un escenario de 100x100 sería así:

Dim Malla(99,99) as Punto3D

        For i As Integer = 0 To 99
            For j As Integer = 0 To 99
                Malla(i, j).X = i * 10
                Malla(i, j).Y = j * 10 'Así la celda tiene 10 pixels de ancho y de alto
                Malla(i, j).Z = 0
            Next
        Next


Y luego para dibujarlo obtengo sus representaciones y uso el método DRAW_Trapezoid:

Dim Vertices(3) as Vertex

for i as integer=0 to 99
   for j as integer=0 to 99
      Vertices(0).X=Matriz(i,j).RepresentacionIsometrica.X
      Vertices(0).Y=Matriz(i,j).RepresentacionIsometrica.Y
      Vertices(0).Color=Color.Blue.ToArgb
      ..... Así con los cuatro vertices
   next
next
Graphics.DRAW_Trapezoid(Vertices)


Vi en la documentación el tema de los RenderTarget y me pareció perfecto: Así solo recalcula cuando hago zoom,y el movimiento de cámara lo hago dibujando la textura del RenderTarget en un lado u otro.
Establecí el tamaño de éste a 2048x2048. Mi problema es que al hacer zoom hay veces que el tamaño de la textura es menor que el del mapa dibujado. Como el movimiento de la cámara solo cambia el centro de dibujo del buffer principal, la textura sale cortada.

Se os ocurre algún método para solucionarlo?
#38
Proyecto dx_lib32 / VB no ha muerto...
16 de Febrero de 2011, 09:53:43 PM
Hola, soy nuevo aquí en Stratos.

Me gustaria agradecer el trabajo realizado por [EX3] durante tantos años con ésta librería.
Empecé a programar con VB6 hace dos años y desde un principio estuve buscando una manera simple y eficiente de programar juegos.
Pero no había manera... tenías DrawCircle y poco más. Además era lentísimo.
Cuando me pasé a .NET creí que había visto el maná con GDI+ pero seguí sufriendo las consecuencias de operar con tropecientas capas de sistema operativo...

Hace poco encontré la página de dxlib32 y me entro la curiosidad....
¡Maravilloso! En menos de diez minutos ya tienes una aplicación con unos gráficos y un rendimiento escepcional.
Sinceramente,creo que tiene muchísimo potencial.
Tanto es así que me estoy planteando seriamente currarme un juego éste verano, algo así como un SimCity...

En fin, solo quería agradecerte tu trabajo. Son éste tipo de cosas las que hacen que VB perdure hoy en día. Porque estoy harto de que cuando la gente me pregunta con qué programo y contesto VB, me digan: "Ba... eso no sirve para nada"

A partir de ahora podré decir: "¿A si?..., ¡PUES HAZ TU ESTO, HABER SI PUEDES!

Mucha gracias.


PD: Aunque el proyecto  esté terminado, ¿Seguiras participando en éstos foros en el futuro? Me gustaria que si me surgen dudas pudieras ayudarme.





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.