Tuberías de contenido personalizadas en XNA, ¿cómo establecer texturas difusas manualmente?

StackOverflow https://stackoverflow.com/questions/7365588

  •  28-10-2019
  •  | 
  •  

Pregunta

XNA es las rodillas de la abeja, pero todavía no puedo entender por completo la cabeza alrededor de las tuberías de contenido personalizadas.

Algunas muestras básicas como la muestra de mapa normal de MSDN le muestran cómo asignar claves de mapa normales de datos opacos de un archivo .fbx a las texturas de mapa normales apropiadas para cargar. Ni siquiera sé cómo sabían cómo se debe nombrar la clave, cuáles son realmente los datos opacos, si se define en el archivo .fbx o no.

Lo interesante es que no hay código en la tubería de contenido que diga cómo se establecen las texturas difusas: parece implicar que usa un parámetro de sombra llamado "textura" y se establecen automáticamente. Pero si cambio el nombre del parámetro a otra cosa, los modelos se cargan sin texturas.

¿Cómo sabe implícitamente cargar texturas difusas y cómo puedo, por ejemplo, cargar texturas difusas para leer con un parámetro sombreador llamado diferente y cargar un archivo de textura de color blanco neutral predeterminado si uno no existe?

Para el caso, ¿hay un ejemplo de "Hello World" para aprender a cargar modelos personalizados con la tubería de contenido?

Tenga en cuenta que no estoy buscando anular las referencias de textura existentes en los modelos .fbx estableciendo una textura en la ventana Propiedades.

¿Fue útil?

Solución

Lo primero que debe entender es que XNA permite crear dos elementos de contenido personalizados separados: uno es un importador y el otro es un procesador.

Cuando escribe un importador, analiza cualquier archivo como desea y almacena la información que desea en cualquier clase (objeto) que especifique. Puede escribir la clase usted mismo o usar ciertas clases dentro de XNA. De esta manera, simplemente puede escribir un importador que tome datos de su archivo y, utilizando el modelo de modelo incorporado, lo convierte en un objeto de clase de modelo XNA.

Aquí hay una muestra de un importador de modelo personalizado:

http://create.msdn.com/en-us/education/catalog/sample/custom_model_importer

Si necesita algún otro objeto que no sea un modelo, escriba un procesador personalizado:

Un procesador toma el objeto de clase especificado por el importador y convierte esto en otra clase (ya que lo está escribiendo, cualquier clase y de cualquier manera que especifique). Esta clase se acostumbra para generar un archivo .xnb (XNA binario), que es leído en tiempo de ejecución por su juego. Todo esto, por lo tanto, solo se ejecuta durante el tiempo de compilación, en un esfuerzo por brindarle un mejor control del contenido de su juego.

Este es un buen enlace para comenzar:

http://msdn.microsoft.com/en-us/library/bb447754(v=xnagamestudio.20).aspx

Para su caso, parece que no está contento con el comportamiento del importador FBX predeterminado. Si este es el caso, lo más probable es que tenga que escribir el suyo. Sin embargo, lo más probable es que no necesite escribir su propio procesador; Especifique ModelProcessor como el valor predeterminado, tal como lo ha hecho el proyecto en mi primer enlace.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top