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

#21
Jad Engine / Character Studio -> Md5
25 de Diciembre de 2004, 09:05:51 PM
 Hola.

Resulta que los grafistas nos dijeron que ellos utilizaban Character Studio para animar los modelos con lo que se presentaba un problema. Yo había desarrollado un exporter a MD5 con soporte para bones de MAX y modificador Skin pero no servía para CS así que me he puesto manos a la obra y ya tenemos nuestro exporter CS->MD5. De momento parece que funciona bien pero lo cierto es que sólo lo he probado con uno de los modelos que vienen con los tutoriales de CS (el DoctorX). De todas formas ya me habían pedido en Doom3World (y creo que LordTrancos también) si podía dar soporte para CS por lo que lo haré público para la comunidad de Doom3 (como hice con el otro exporter) y seguro que me sacan fallos por todos lados. :D

Aquí tenéis una de las pruebas que he hecho. ¡Qué mejor que probar un MD5 en Doom3 para comprobar que todo funciona bien! :lol:

Descargar video (684KB)



Saludos.
#22
General Programadores / Creando Un Objeto Con Type
07 de Diciembre de 2004, 11:59:00 AM
 Hola.

En C#, ¿se puede crear un objeto únicamente conociendo su tipo (Type)?. Algo como esto:

Type T = assembly.GetType("CualquierClase", true, true);
Object obj = new T();


Ya sé que eso no funciona pero es para aclararos qué es lo que quiero hacer.

Gracias.
#23
General Programadores / Generar Documentación
04 de Octubre de 2004, 11:05:50 AM
 Empiezo este mensaje a parte respondiendo a Vicente.

Citara menos que las cosas hayan cambiado, el visual con los comentarios genera un documento xml, luego necesitas "algo" que transforme ese xml en documentacion de verdad: yo para ese "algo" uso ndoc (http://ndoc.sourceforge.net/). Es muy fácil de usar (estilo javadoc o doxygen...). Espero que te sirva, un saludo!

Sí, el NDoc lo conozco pero cuando intento abrir una solución de Visual Studio, me sale un ventana donde tengo que elegir un perfil (Debug o Release, supongo) pero me sale vacío y la verdad es que no veo por ninguna parte ningún archivo XML. ¿Hay que hacer algo para generar ese archivo XML?.

Saludos.
#24
General Programadores / Problemas Con Convert.tosingle En C#
25 de Septiembre de 2004, 10:01:41 PM
 Hola.

Resulta que estoy haciendo unas cosillas en C# y tengo que guardar en un archivo valores en coma flotante pero estoy teniendo un problema. Resulta que si hago esto (simplificando las cosas) :

string s = "0.985746";
float f = Convert.ToSingle(s);
System.Console.WriteLine("Num: {0}", f);


La salida en la consola es:

985746

en vez de:

0.985746

Evidentemente eso está mal (lo mismo me ocurre si intento hacerlo con doubles). ¿Alguien sabría decirme cómo hacer que el valor se imprima bien?.

Gracias.
#25
Programación gráfica / Activex + Direct3d
28 de Agosto de 2004, 09:00:16 PM
 Hola.

Quiero desarrollar un visor de modelos MD5 incrustado en un ActiveX utilizando Direct3D pero lo cierto es que el tema de los ActiveX es nuevo para mí y las MFC y yo nos llevamos a matar.

La cuestión es si conocéis algún documento/tutorial/código donde pueda ver cómo implementar Direct3D en un ActiveX. En realidad si es OpenGL también me sirve. Lo que quiero saber es dónde tengo que inicializar el device, dónde tengo que renderizar (¿OnIdle?), etc.

Muchas gracias.
#26
Proyectos / Md5 Exporter
23 de Agosto de 2004, 04:01:10 AM
 Bueno, pues al fin he sacado tiempo para acabar con el exportador de MD5. Se trata de un script para MAX (sólo lo he probado en MAX 6) que permite la exportación tanto de md5mesh como de md5anim.

Lo he estado probando con modelos y animaciones simples que yo mismo he hecho y también con otros modelos propios del Doom3 (importándolos al MAX y después re-exportándolos) y parece funcionar perfectamente. Aunque claro está, fallos tendrá fijo. Sólo espero que no sean fallos muy gordos. :)

Dentro del zip tenéis, además del script (MD5Exporter.mzp), un archivo de ayuda donde explico más o menos el funcionamiento (simple, por otra parte) del script. La ayuda está en castellano e inglés ya que tengo pensado ponerlo a disposición de los guiris (en Doom3World). Así podréis comprobar la calidad de mi inglés. (ole) :rolleyes:

Pues nada más. Si os decidís a utilizarlo, decidme qué os parece, si añadiríais algo más, si os suelta  algún error, etc. Es por esto que lo pongo en trabajos en desarrollo, aunque no sé si podré sacar mucho tiempo para actualizarlo. Pero bueno, espero que a alguien le sea útil.

¡Descárgame!

Saludos.
#27
Programación gráfica / Jerarquía De Bones
11 de Agosto de 2004, 02:41:07 PM
 Hola.

Recurro a vosotros porque me va a dar algo. Algo que en principio parecía que iba a ser coser y cantar me está matando.

A ver. Imaginad que tengo una jerarquía de bones tal como ésta:



Lo que yo quiero es, conociendo la posición (relPos) y rotación (relRot) relativa de cada bone en relación a su bone padre, calcular las posiciones absolutas (en world-space) de cada bone (AbsPos).

Pues bien. Yo tan contento me he creado una función (es MAXScript pero no creo que tengáis problemas en entenderlo) que crea, para cada bone, una matriz que en teoría debería pasar la posición relativa de un bone a coordenadas absolutas. Esta es la función:

fn setupJoints joints =
(
-- Recorremos todos los bones
for i = 1 to joints.count do
(
 -- Referencia al bone actual
 joint = joints[i]

 -- Creamos la matriz de transformación relativa al bone padre
 -- relRot es un quaternion por lo que lo convertimos a matriz
 -- y lo almacenamos en la parte que representa la rotación
 joint.mRelative = joint.relRot as Matrix3
 -- En la parte de la posición (fila 4) almacenamos la posición
 -- relativa al bone padre
 joint.mRelative.row4 = joint.relPos

 -- Si el bone actual tiene padre...
 if joint.parent != undefined then
 (
  -- Calculamos la matriz de transformación absoluta
  joint.mAbsolute = joint.mRelative
  joint.mAbsolute = joint.parent.mAbsolute * joint.mRelative
 )
 else
 (
  -- El bone actual no tiene padre (es el root) por lo que su matriz
  -- de transformación absoluta es igual a la relativa
  joint.mAbsolute = joint.mRelative
 )
)
)


Una vez que tengo toda la jerarquía construída. Un simple:

absPos = bone5.relPos * bone5.mAbsolute

debería darme la posición absoluta de ese bone, pero no, en ciertas situaciones sí pero en otras no y eso es lo que me está volviendo loco. (uoh)

A ver si vosotros me podéis echar un cable.

Por si sentís curiosidad de a qué viene todo esto, es que estoy haciendo un importador para MAX de modelos de Doom3 (la versión definitiva). Ya tengo prácticamente terminado la parte que importa la malla con sus pesos y todo, pero ahora que estoy en la parte que importa la animación es cuando estoy empezando a tener problemas.

Aquí tenéis un pequeño video (1MB) de "Imp" haciendo lumbares/abdominales. Un poco tieso eso sí. Es una chorrada pero bueno, a ver si así os motiva. :P

Gracias.
#28
General Programadores / Directx Summer Update 2004
27 de Julio de 2004, 08:29:06 AM
 Pues eso, que ya ha salido el DirectX Summer Update 2004. Tenéis un thread en GameDev sobre el tema, aquí.

Saludos.
#29
Programación gráfica / D3dxvec2barycentric
21 de Julio de 2004, 11:20:10 AM
 Necesito vuestra ayuda.

Resulta que para matar el tiempo y hasta que no me devuelvan mi ordenador, me he puesto a programar una librería matemática con las mismas capacidades que las D3DX. Bueno, al menos esa es la intención (eso sí, no tan optimizada como las D3DX). :lol:

El caso es que paso de bajar e instalar todo el SDK para probar esto. Así que a ver si me hacéis el favor y veis qué resultado os devuelve la función D3DXVec2BaryCentric con los siguientes parámetros:


 D3DXVECTOR2 res;
 D3DXVECTOR2 points[] = { D3DXVECTOR2(-20.0f, 0.0f),
                                          D3DXVECTOR2(0.0f, 40.0f),
                                          D3DXVECTOR2(20.0f, 0.0f) };

 D3DXVec2BaryCentric(&res, &points[0], &points[1], &points[2], 0.5f, 0.5f);


Yo tengo programado dos formas y no sé cuál es la correcta (si es que alguna de las dos lo es (ole)). El primer método me da (10, 20) y el segundo (30, 20). La verdad es que yo esperaba (0, 20) pero bueno, a ver qué os sale a vosotros.

Gracias.
#30
Off-topic / Doom3 Has Gone Gold!
14 de Julio de 2004, 08:52:22 PM
 Pues eso, que ya está todo listo para que Doom3 salga a la venta. Parece que la fecha de salida en Europa será el Viernes 13 de Agosto.

Esperemos que la espera haya merecido la pena. :)

Podéis leer el comunicado de Todd Hollenshead aquí.

Saludos.
#31
Off-topic / Music Plasma
13 de Julio de 2004, 05:09:26 PM
 Acabo de ver una web en el que hay un motor de búsqueda de grupos de música muy curioso y por lo que he podido comprobar, bastante potente y eficaz.

Se trata de un motor de búsqueda al cual le pasas el nombre de un grupo y automáticamente te crea una relación (de forma visual, con Flash) de ese grupo con otros grupos que hacen música similar. De esta forma podréis conocer otros grupos que hacen la música que más os gusta. Además, os da la opción de escuchar algunos samples para haceros una idea de cómo suena su música.

¡En fin, haced click aquí!.

Saludos.
#32
Programación gráfica / Parallax Mapping On Focus
11 de Julio de 2004, 10:54:22 PM
 Bueno, como tenía algo de mono de programación 3D y durante estos últimos días no tengo mi ordenata para trabajar, decidí bajar el RenderMonkey y probar algunas cosillas. Lo primero que se me ha venido a la mente ha sido la técnica de "parallax mapping" que tan popular ha hecho el nuevo UnrealEngine3. Aunque todo hay que decirlo, el primer paper que describía la técnica apareció en 2001, creo.

Así que he buscado en la red y sin duda la mejor información la he encontrado en este hilo del foro de OpenGL.org.

Bueno, ahí van las imágenes. Arriba tenéis la imagen sin parallax mapping aplicado (sólo normal mapping) y abajo la misma pero con parallax mapping y normal mapping:



-------------------------
La textura de madera la saqué de la web de Humus.

Y he aquí el wire:



Como podéis observar, en la imagen con parallax mapping se consigue dotar al modelo de una apariencia de relieve mayor que con el normal mapping a secas. Sin duda, añadir self-shadowing le daría una sensación de profundidad aún mayor.

El caso es que la técnica es tan sencilla que me sorprendió que nadie antes la hubiera utilizado en algún juego (aunque el hecho de que en Doom3 algunos modelos, además del normal-map haya un height-map, me tiene mosca :)) . El problema principal de esta técnica es que para height-maps donde la altura de un punto a otro varía brúscamente, se producen algunos defectos. Esta técnica funciona muy bien con height-maps con cambios graduales de altura. A ver si alguien propone alguna solución a este problema.

Bueno, pues ya está, ya he saciado un poco las ansias de programar. :lol:

Saludos.
#33
Off-topic / Nuevo Juego Del Pingüino
06 de Marzo de 2004, 04:11:07 PM
 Aquí podéis ver la nueva variante del juego del pingüino. Esta vez hay que darle con bolas de nieve. :D

Saludos.
#34
Off-topic / Diccionario....
20 de Diciembre de 2003, 05:32:14 AM
 Hey.

Resulta que en mi casa solía haber un diccionario de sinónimos y antónimos pero mi hermana se lo llevó a su casa tras casarse :rolleyes:

Así que, me preguntaba si existía algún diccionario de sinónimos y antónimos en internet. He buscado en la web de la RAE, pero no he encontrado nada sobre el tema. Tal vez no haya mirado bien...

Bueno, pues eso, a ver si conocéis algún diccionario de sinónimos y antónimos online.

Thanks!

Saludos.
#35
General Programadores / Evento Va, Evento Viene...
27 de Noviembre de 2003, 12:34:24 AM
 Hola chavalines/chavalinas.

Resulta que estoy empezando a crearme una librería de controles personalizados, es decir, botones, menús, checkboxes y demás controles de windows con un look diferente. O bueno, más bien algo parecido al XP pero que se pueda ver igual en todos los Windows. Para ello estoy utilizando C# ya que me parece un lenguaje sencillo y muy parecido a Java con el cual estuve desarrollando algunas cosillas durante algo más de un año y la verdad, me gustó bastante. Pero bueno, esto no viene al caso :)

A ver. Imaginad que tengo un cuadro de diálogo y un botón dentro de ese cuadro de diálogo. Ahora pulso el boton izquierdo del ratón en cualquier parte del diálogo que no sea el botón y sin soltar el botón del ratón, lo arrastro hasta entrar en el botón.

Pues bien, en XP si haces eso, cuando el cursor entra en el botón, éste cambia de estado (concretamente se selecciona) pero yo he estado probando y probando y a mi el botón no me lanza ningún evento. Ni OnMouseMove, ni OnMouseEnter....nada. Sólo me lo lanza una vez que he soltado el botón izquierdo del ratón.

Así que lo que quería saber es si hay que tener algo más en cuenta, si tengo que mirar otro evento, o que...

Ale, gracias por leerme :)

Saludos.
#36
Modelado / Skinned Meshes, Cs, Md5, Maxscript...aaaaargh!
07 de Octubre de 2003, 02:07:19 PM
 Hi there!

Bueno, recurro a vosotros, grafistas, para ver si me podéis orientar un poco ya que de modelado/animación no tengo ni idea (bueno, como programador 3D la teoría si que puedo decir que algo de idea tengo) :D.

Resulta que estoy trabajando en todo el tema de exportación de modelos con animación para un motor 3D, concretamente modelos con animación esquelética. En principio he creado un importador de modelos MD5 (Doom III) con MAXScript. Salvo ciertos problemillas al importar el esqueleto, lo demás va perfectamente. Sólamente me falta aplicarle el modificador Skin para asociar el esqueleto con la geometría. En realidad el importador lo he hecho más que nada porque como no tengo recursos para crearme mis propios modelos pues de algún sitio los tengo que sacar, pero realmente lo que me interesa es el exportador (aunque tal vez a la comunidad de doom3 le venga bien este importador).

He aquí un pequeño screenshot del tema en cuestión:



El caso es que, como veo que prácticamente todo el mundo que utiliza MAX, anima los modelos tipo bípedo con Character Studio, me preguntaba si realmente valía la pena importar/exportar en base al modificador Skin o por el contrario meterme directamente a importar/exportar con CS (cosa que por ahora no sé cómo hacer con MAXScript). Pero por otro lado me pregunto si es posible, una vez que se ha preparado todo el modelo con CS, pasarlo a tipo Skin y viceversa, es decir, tenemos el modelo con el modificador Skin aplicado y pasarlo a CS (esto lo veo chungo, chungo :D).

Por otro lado, ¿es tedioso animar con el modificado Skin?

En definitiva, ¿programo el importador/exportador directamente orientado a CS o con el modificador Skin voy apañado?. Al fin y al cabo, exporte usando uno u otro, la información va a ser la misma, ¡pero no quiero que mis futuros grafistas se me desquicien! :D

¡Enga, iluminadme por favor! :)

Saludos.
#37
General / Agp8x En Agp4x
27 de Septiembre de 2003, 08:55:21 PM
 Hola a todos.

Estoy pensando en comprarme una aceleradora con soporte fragment shaders 2.0 porque estoy un poco cansado de los 1.1 ya que están bastante limitados.

Seguramente sería una Radeon9500 o 9600 o tal vez una GeForceFX5200 que es mas barata. Que sea más o menos rápida no me importa demasiado ya que sólo la quiero para empezar a programar fragment shaders 2.0. El caso es que estas aceleradoras están diseñadas para AGP8X y mi placa es AGP4X. Yo supongo que no habrá problemas de compatibilidad (en todo caso el rendimiento no será el mismo) pero como no estoy seguro y mis conocimientos de hardware son escasos, me gustaría conocer vuestra opinión.

Saludos.
#38
General / ¿imágenes De Quake Iv?
03 de Septiembre de 2003, 01:20:26 AM
 Aquí os pongo un enlace a supuestas imágenes de Quake IV. No son imágenes in-game sino bocetos y algunos renders. La verdad es que es impresionante. ¡A ver lo que sale de todo esto!

Saludos
#39
Proyectos / Sobre El Motorcillo Que Estoy Desarrollando...
02 de Septiembre de 2003, 05:52:16 PM
 Hola a todos.

Como ya sabéis, estoy desarrollando un pequeño motor 3D. Más que nada porque estaba un poco cansado de hacer nada.

Bueno, pues como prueba de lo que estoy haciendo aquí os dejo un pequeño video (18 sg, DivX 5.0.5) en el que se muestra la escena del castillo4 de Mars (para el test de motores). La he retocado un poco en el tema de materiales. Por lo demás es la misma.

Características del motor:

  • Render a través de Direct3D 9.0
  • Uso de vertex & pixel shaders 1.1
  • Definición de las propiedades visuales de los objetos a través de IFXShaders (shader scripts)
  • Sistema de recursos con capacidad de carga desde archivos comprimidos
Herramientas desarrolladas para 3DStudio MAX (utilizando MAXScript):

  • Plugin de tipo "material" para asignar de forma sencilla IFXShaders a la escena
  • Plugin de tipo "utility" para exportar la escena
Eso es lo que llevo hecho hasta ahora. Lo que falta por hacer es:

  • Sistema de determinación de visibilidad (seguramente un octree)
  • Iluminación per-fragment
  • Sombras
  • Programar muchos shaders (ole)
  • Exportar animación de los objetos de la escena
  • Mejora del sistema de manejo de errores
  • Optimización bestial del sistema de render :D
Bueno, eso es más o menos lo que hay. Sin duda, lo mejor del motor supongo que es el uso de IFXShaders para definir las propiedades visuales de la escena y su integración en MAX (¡MAXScript al poder! :)). Puedes modificar las propiedades de un objeto sin necesidad de tocar una sóla línea de código.

La razón por la que no he sacado un ejecutable en lugar del video es que:

  • El manejo de errores es pésimo
  • El render es lentísimo
Digamos que la escena esa va a unos 40-50 FPS a 1024x768x32. En realidad yo me esperaba de 100 a 200 FPS mínimo (eso sin determinación de visibilidad de ningún tipo). Por lo que debe haber un error gordo a la hora de mandar las primitivas a la GPU. Precisamente eso será una de las primeras cosas con las que me pondré ahora.

Pues nada más. Ya sé que no es mucho, pero espero que disfrutéis del video. Para qué nos vamos a engañar, después de 3 semanas programando me apetecía enseñar algo. Digamos que necesito un poco de ánimos para seguir con esto ;)

Saludos.
#40
Programación gráfica / Scripted Material Plug-in
30 de Agosto de 2003, 04:39:50 PM
 Hola.

Como ya dije, estoy trabajando en las herramientas de mi motorcillo. Ahora mismo estoy creando un plugin de tipo material con MAXScript. La razón para ello es que a mis objetos no les asigno mapas de textura (como se hace en el tipo de material Standar, por ejemplo). En lugar de eso, le asigno una referencia a un IFXShader (un script de shader que me he creado), el cual contiene referencias a vertex & pixel shaders, render states, etc. Pues bien, como digo, en eso estoy metido en estos momentos. Y como no, se me ha presentado un problema bastante chorra y es que al insertar un botón en el rollout del material, al manejar el evento "pressed" del botón, éste no responde. Aquí está el código (simplificado) para ver si vosotros podríais decirme qué es lo que podría pasar.

plugin material IFXShader
 name: "IFXShader"
 classID:#(041278, 140781)
 extends:Standard replaceUI:true version:1
(
-- Rollout
rollout roParams "IFXShader Parameters" width:328 height:208
(
 -- Componentes del rollout
 button btnClickMe "click me" align:#center

 -- Evento que se produce al hacer click en el botón
 on btnClickMe pressed do
 (
  messageBox("btnClickMe pressed")
 )
)

-- Evento que se lanza al crear el plugin
on create do
(
 messageBox "create"
)
)


Quien ya haya manejado MAXScript verá que la cosa no tiene misterio y en teoría debería funcionar, ¡pero no funciona!. Así que si alguien me puede echar una mano, se lo agradecería :)

Saludos





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.