Pipeline di contenuto personalizzate in XNA, come impostare manualmente le trame diffuse?

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

  •  28-10-2019
  •  | 
  •  

Domanda

XNA è le ginocchia dell'ape ma non riesco ancora a avvolgere la testa completamente attorno a pipeline di contenuti personalizzati.

Alcuni campioni di base come il campione di mappa normale di MSDN mostrano come assegnare le normali chiavi della mappa dai dati opachi da un file .fbx alle trame di mappa normali appropriate da caricare. Non so nemmeno come sapessero come dovrebbe essere nominata la chiave, quali sono effettivamente i dati opachi, se definiti nel file .fbx o no.

La cosa interessante è che non esiste un codice nella pipeline del contenuto che dice come vengono impostate le trame diffuse: sembra implicare che si utilizza un parametro ombra chiamato "Texture" e vengono impostati automaticamente. Ma se rinominisco il parametro in qualcos'altro, i modelli si caricano senza trame.

Come si sa implicitamente caricare trame diffuse e come posso, ad esempio, caricare le trame diffuse da leggere con parametro shader in modo diverso e caricare un file di trama bianco neutro predefinito se non esiste?

Del resto, esiste un esempio di "Hello World" per l'apprendimento dei modelli di caricamento personalizzati con la pipeline di contenuti?

Si noti che non sto cercando di sovrascrivere i riferimenti di trama esistenti nei modelli .fbx impostando una trama nella finestra Proprietà.

È stato utile?

Soluzione

La prima cosa da capire è che XNA consente di creare due elementi di pipeline di contenuti personalizzati separati: uno è un importatore e l'altro è un processore.

Quando scrivi un importatore, analizzi qualsiasi file come si desidera e memorizzi le informazioni che desideri in qualsiasi classe (oggetto) che specificate. Puoi scrivere la classe da solo o utilizzare alcune classi all'interno di XNA. In questo modo puoi semplicemente scrivere un importatore che prende i dati dal tuo file e, utilizzando il modello di modello integrato, lo trasforma in un oggetto di classe modello XNA.

Ecco un campione di un importatore di modello personalizzato:

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

Se hai bisogno di un altro oggetto di un modello, scrivi un processore personalizzato:

Un processore prende l'oggetto di classe specificato dall'importatore e lo converte in un'altra classe (dal momento che lo stai scrivendo, qualsiasi classe e in qualsiasi modo specificato). Questa classe si abitua per generare un file .xnb (XNA binario), che viene letto in fase di esecuzione dal gioco. Tutto questo, quindi, viene eseguito solo durante il tempo di compilazione, nel tentativo di darti un migliore controllo del contenuto del tuo gioco.

Questo è un buon link per iniziare:

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

Per il tuo caso sembra che tu non sia soddisfatto del comportamento dell'importatore FBX predefinito. In tal caso, molto probabilmente dovresti scrivere il tuo. Molto probabilmente non è necessario scrivere il tuo processore; Specifica modello Processor come impostazione predefinita, proprio come ha fatto il progetto nel mio primo link.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top