Ir al contenido

publicidad
publicidad

Foto

XNA y escalado de modelos fbx.


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
3 respuestas en este tema

  • mopois

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 24 sep 2003
  • Mensajes: 33.916
#1

Escrito 06 julio 2010 - 20:17

Buenas,

He comenzado a trastear con xna y tengo un problema con los modelos que importo con blender (creo, la verdad es que estoy verde verde)

Hasta ahora había hecho esferas muy grandes, con una escala bastante grande para representar planetas y ahora mismo quiero meter un objeto más pequeño y lo muestra muy extraño.

Pensé que seria tema del zbuffer pero he ajustado automáticamente las distancias cercana y lejana de la proyectionMatrix para que éstas no formen un rango demasiado grande y sigo teniendo problemas.

La cuestión es que los objetos grandes bien, pero cuando intento poner la cámara cercana a un objeto muy pequeño el objeto se muestra con errores de geometría y si lo voy haciendo más pequeño desaparece y va temblando.

¿Alguien tiene idea de lo que me puede estar ocurriendo? ¿En los ficheros fbx exportados hay algo que indique su tamaño y sea mejor cambiarlo ahí en vez de escalar el modelo al dibujarlo?

  • The_Hans

  • Ultima

  • vida restante: 100%
  • Registrado: 27 ene 2004
  • Mensajes: 7.490
#2

Escrito 07 julio 2010 - 11:01

Si puedes poner una captura mejor, así nos hacemos una idea. Para escalar los modelos directamente sin pasar por código en las propiedades del objeto, expandiendo la pestaña de Content Processor encontrarás una opción de escala.

Además te recomiendo que uses el exportador Panda y exportes en X. Es mucho más completo que el de fbx.

  • mopois

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 24 sep 2003
  • Mensajes: 33.916
#3

Escrito 07 julio 2010 - 11:17

Muchas gracias Hans, esta tarde pego un pantallazo, a ver si puedo hacer un video que viéndolo en movimiento se aprecia mejor el problema ya que el objeto tiembla mucho.

De todos modos probaré a cambiar la escala del modo que comentas, que era una prueba que quería realizar.

  • mopois

  • GRANDIS SUPERNUS

  • vida restante: 100%
  • Registrado: 24 sep 2003
  • Mensajes: 33.916
#4

Escrito 22 septiembre 2010 - 09:58

Buenas subo esto de nuevo porque ya he dado con la solución, por si alguien es tan bruto como yo.

El error es un caso de imprecisión que ocurre por la naturaleza del tipo de datos Vector3, que codifica los ejes como float.

Al operar con números muy grandes (Yo tengo implementado un minisistema solar con distancias reales), si por ejemplo tenemos un objeto pequeño a una distancia de 1.5 +E12 y la cámara a una distancia de (1.5 + E12) + 20, al ser números tipo float no hay suficientes decimales y daría un resultado erróneo.

La solución para por declarar un nuevo tipo que sea como vector3 pero con variables del tipo double y operar de ese modo.

Aún tengo que investigar un poco porque el tipo de datos que he declarado para los planetas es relativista (posiciones relativas con respecto al objeto que se orbita) y es un sin dios meter mano en el código.

Más o menos es lo que entiendo que me ocurría, que soy muy bruto, no lo he solucionado del todo pero al fin se lo que me ocurre a ciencia cierta, no sabéis los dolores de cabeza que me ha dado esta mierda.

Bueno, os dejo la explicación más detallada de un tipo más listo que yo:

http://britonia-game.com/?p=24

PD: El pantallazo al final no lo hice por pereza y porque es cutre de cojones y me da vergüenza, me ha abstraido de los gráficos hasta ahora X-D


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad
publicidad