Ir al contenido

publicidad

Foto

Problemas SkyBox / Texture Mapping


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

  • Ollydbg

  • Anima

  • vida restante: 100%
  • Registrado: 05 sep 2008
  • Mensajes: 6.259
#1

Escrito 11 abril 2009 - 21:57

Buenas forer@s.

Estaba intentando incluir una clase "SkyBox" en mi código XNA pero el resultado no es el que me esperaba:

Imagen Enviada

En realidad tengo un cubo con las normales hacia "adentro". El cubo está texturizado con 6 imágenes de tal forma que al rotar la escena de la sensación de skybox.

El problema como veis en la imagen de arriba es que se notan "las juntas" en las caras del cubo, con lo cual queda como un churro :(

No creo que sea problema de las coordenadas UV, ya que en Blender se ve de coña, además lo he verificado 3 veces y las coordenadas UV están donde tienen que estar.

Creo que el problema es de filtrado de la textura o algo por el estilo, pero por mucho que miro documentación y tutoriales por internet no saco nada en claro.

¿Es muy grave doctor?

Saludos.

  • Ollydbg

  • Anima

  • vida restante: 100%
  • Registrado: 05 sep 2008
  • Mensajes: 6.259
#2

Escrito 12 abril 2009 - 01:33

Pués despues de revisar un buen rato el código y manuales por internet ya no tengo nada claro que es lo que está pasando.

En Blender tengo esto:
Imagen Enviada

Y en mi código obtengo esto:
Imagen Enviada

Cómo podeis ver, Tanto en Blender como en mi código, se "difumina" la textura (he probado con jpg, png y con bmp). En mi código es muchísimo más exagerado este problema.

He probado con esto:
[code:1]effect.Texture.GenerateMipMaps(TextureFilter.None);[/code]
y con esto también:
[code:1]effect.Texture.GraphicsDevice.SamplerStates[0].MinFilter = TextureFilter.Point;
effect.Texture.GraphicsDevice.SamplerStates[0].MagFilter = TextureFilter.Point;
effect.Texture.GraphicsDevice.SamplerStates[0].MipFilter = TextureFilter.Point;[/code]
He probado con Point, con Linear, con None, con Anisotropic, pero el resultado siempre es el mismo. La textura se ve "rara". Supongo que tendré que dominar eso antes de ponerme con el tema del SkyBox, ya que por lo que veo hay algo "raro" con las texturas.

¿Alguna pista por donde enfocar el tema?

Saludos.

  • Ellolo17

  • Mascarón Rojo

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#3

Escrito 12 abril 2009 - 02:49

¿En vez de creartelo externamente el XNA no te permite crearte una primitiva y ponerle esa textura?

Yo lo que hago para mis juegos es crearme una primitiva esfera con el tamaño en negativo para que tenga las normales mirando hacia el interior y le pongo de textura la foto de una imagen.

De todas formas te comento: En el blender he visto que si al elegir el area del mapeado UV eliges parte de alguna linea negra que no tendria que verse, si pilla cerca acaba viendose. Quizas por eso las "juntas" negras de la primera escena.

Sobre eso te comentaria que te crees una textura con un solo color o la tipica con cuadraditos de colores y numeros y la pongas sin hacer mapeado UV a ver si pasa lo mismo -ya te digo que seguramente sea el problema que he puesto antes pero tambien puede ser algo del codigo-. Si sigue saliendo ese efecto, cosa del codigo. Si no sale, cosa del mapeado UV.

Sobre lo que comentas de las diferencias de renderizado entre Blender y el motor grafico, por lo que veo el motor o te autoajusta la imagen o te hace algo de antialiasing o algo asi y por eso queda de esa forma. Las soluciones son o bien hacer la imagen de la textura mucho mas grande para que al reajustarla no se de ese efecto de pixeles azules saliendose de la linea roja, o bien hacer la imagen con una potencia de 2 -como me comentaba The_Hans aqui:
http://zonaforo.meri...273087&start=15

Lo de las potencias de 2 ya lo sabia para las texturas pero para los sprites no sabia que tambien iba asi en este motor por ver ejemplos en los que ponen wallpapers de fondos o de sprites y cosas asi XD De todas formas el ya lo deja todo bien explicado ahi ;)


Con esto espero haberte podido ayudar en todo esto.

Un saludo y que te salga algo chulo.

  • The_Hans

  • Saitama

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

Escrito 12 abril 2009 - 09:32

No reinventéis la rueda y usad a google, es vuestro amigo y si existen siempre os dará soluciones más óptimas de las que podías pensar :D

http://www.ziggyware...p?article_id=71

  • Ollydbg

  • Anima

  • vida restante: 100%
  • Registrado: 05 sep 2008
  • Mensajes: 6.259
#5

Escrito 13 abril 2009 - 13:46

Ante todo de nuevo gracias a los dos por responder.

Definitivamente no puedo usar un *.fbx para el skybox.

Sobre el link que ha puesto The_Hans he podido tirar del hilo. Y tal y como comentaba Ellolo17 una solución (de hecho es lo que hace el link que ha puesto The_Hans) es dibujar las texturas en primitivas.

En esa misma página (y de hecho en prácticamente todos los tutos que he podido ver) he encontrados dos ejemplos:

1) El skybox se dibuja usando 6 primitivas + textura dds
2) El skybox se dibuja usando un *.x + 6 archivos *.jpg (uno por cada cara del cubo)

En otros ejemplos de otras páginas hay una tercera opción:
3) El skybox se dibuja usando un *.x + textura dds

La opción de The_Hans era esta otra:
4) El skybox se dibuja usando 6 primitivas + 6 archivos *.jpg (una por primitiva)

Con esto ya puedo tirar un poco del hilo. De todos modos, ¿Cómo genero los archivos *.dds?. Supongo que será con ésto, pero leo que está en la SDK de DirectX y no quiero bajármela entera. ¿Existen otras utilidades para generar estos archivos DDS? ¿El ATI CubeMapGen serviría? ¿o el NVIDIA texture tools?

Saludos.

  • Ellolo17

  • Mascarón Rojo

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#6

Escrito 13 abril 2009 - 16:49

Mmm... echale un vistazo a este tutorial de OpenGl sobre esto: Te viene que es una textura mapeada como te pone ahi.

http://sidvind.com/w...Skybox_tutorial

Y revisando uno de mis libros de esto -yo recuerdo que uso una esfera, es mas comodo para mi tener solamente que preocuparse por que coincidan los laterales XD- hacen algo similar: Cogen una imagen mas grande y hacen algo similar a esa imagen que aparece ahi

Imagen Enviada
Esta

Pero en mi caso lo hacen a base de codigo en vez de mapearlo en el editor y todo eso.

Mas o menos, como tu lo pones, 1 *.x y 1 textura.

No se si el xna permite crear primitivas -supongo y espero que si- y tambien supongo que permite por codigo hacer algo similar, al fin y al cabo es un cubo con todos los lados iguales, hacerlo por codigo no es complicado y te dara buen resultado.

-Yo la verdad, todavia no me he creado ningun skybox en el Blender-

En fin, en el tuto del principio ademas encontraras cosas para añadir el sol, transcurso dia/noche y nubes -aunque yo las nubes lo hago algo distinto: Me creo otra esfera pero algo mas pequeña, añado una textura con fondo transparente de nubes y hago que vaya girando. Queda muy clasico.

Un saludo.


PD: El dds es un archivo de almacenaje de texturas de Direct Draw. Aqui tienes un plugin para el Gimp:

http://nifelheim.dyn.../~cocidius/dds/

Y si le echas un vistazo a la wikipedia en ingles tienes mas links de interes ;)

  • The_Hans

  • Saitama

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

Escrito 13 abril 2009 - 21:15

Para dds lo mejor es Photoshop más el plugin de nvidia para dds que puedes bajar de http://developer.nvi...ds_plugins.html

Yo utilizo DXT5 porque me respeta los alphas y la compresión no afecta demasiado a los degradados.


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