Oppure

Loading
16/02/10 18:05
VXVX
Buongiorno a tutti. Espongo subito il problema
Ho una scena di 100.000 poligoni e devo mostrarla in directx.
Il mostrarla non dovrebbe essere un problema: infatti il mio software di modellazione usa directx e va benissimo. La stessa scena viene visualizzata benissimo anche da un plugin wrml, comunque basato su directx.

Se invece la esporto in .X e la carico col visualizzatore dell'SDK o la carico nella form, si inceppa.
Nella mia ignoranza sono arrivato alla conclusione che nei file .X possano essere memorizzati solo semplici modelli, mentre per importare una scena più complessa da un solo file bisognerebbe usare... boh .:-?:-?:-?:-?:-?:-?:-?
O forse è un problema del .NET e bisognerebbe usare tipo C++?

Non so nemmeno se si può fare o se la mia supposizione è giusta. Quindi, anche se non avete una soluzione, sono bene accetti consigli di qualunque genere.
Grazie in anticipo:-|.
aaa
16/02/10 19:44
pierotofy
Non credo il formato .X abbia particolari limiti, quale programma di modellazione stai utilizzando e quale esportatore utilizzi? Inoltre "si inceppa" non e' abbastanza informativo per trarre conclusioni... durante il debug in quale punto si interrompe il programma?
Ultima modifica effettuata da pierotofy 16/02/10 19:45
Il mio blog: piero.dev
16/02/10 19:56
VXVX
3ds max, come esportatore uso kwxport
Non da problemi nel debug. Il problema è che comincia a caricare e poi il programma smette di rispondere
aaa
16/02/10 22:33
pierotofy
E' quindi un plugin esterno e non ufficiale di 3d max... in caso estremo considera come spiegazione un diffetto del plugin.

No, non hai capito... esegui il codice passo per passo (aka, debug) e identifica la linea di codice in cui il programma si interrompe.
Il mio blog: piero.dev
17/02/10 8:24
Thejuster
mah secondo me sta facendo solo confusione

Il mostrarla non dovrebbe essere un problema: infatti il mio software di modellazione usa directx e va benissimo. La stessa scena viene visualizzata benissimo anche da un plugin wrml, comunque basato su directx.


Stai progettando un tuo software di modellazione? o stai usando un qualche programma di modellazione?

Se invece la esporto in .X e la carico col visualizzatore dell'SDK o la carico nella form, si inceppa.


Se il DirectX Viewer ti dà problemi e il modello che ha qualcosa che non và.

Non c'entra il formato che utilizzi
ma può dipendere con quale programma hai fatto questo modello.

Per esportare un modello si devono seguire diverse regole.
e altri programmi di conversione funzionano poco e niente

l'unico programma migliore al mondo per esportare in DirectX e 3dsmax

gli errori possono dipendere da tante cose,
Da una Texture Mancante o una mappatura errata
oppure dal script del modello magari ha saltato qualcosa o altro...

ma questo può dipendere solo dal programma con cui hai esportato

prova a farlo con 3dsmax non dovrebbe darti problemi.
o al limite

posta il frammento di codice che utilizzi per visualizzare il modello
e ne sapremo di più per darti una spiegazione.

oppure il contenuto del file .x

su 2 piedi non possiamo dirti molto
Ultima modifica effettuata da Thejuster 17/02/10 8:26
mire.forumfree.it/ - Mire Engine
C# UI Designer
17/02/10 8:56
VXVX
Grazie dei consigli.
Ho provato a convertire con conv3ds.exe la scena grande e ho ottenuto un file di 5MB (mentre quella esportata col plugin direttamente era 15MB).
Ma il risultato è lo stesso: parte il debug, carica tutto e finisce con:
A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
A questo punto rimane il form vuoto il puntatore a clessidra e l'applicazione non risponde.:noway:
Ma non credo sia questo messaggio il problema. Con un file più piccolo (10k) sempre esportato allo stesso modo da lo stesso errore, ma l'applicazione parte e mostra la scena.
Per questo dicevo che forse dipende dalle dimensioni del file... in effetti 5Mb sono parecchi!

Poi il fatto che anche il viewer si blocca indica che non è colpa del codice, ma del modello

Comunque ecco il codice:
modello.mesh = Mesh.FromFile(AppPath() & "\file.x", MeshFlags.Dynamic, device, materiali)
Ultima modifica effettuata da VXVX 17/02/10 9:14
aaa
17/02/10 10:22
Thejuster
l'errore che ricevi

System.IO.FileNotFoundException

e chiarissimo

Il file non viene trovato, o probabilmente come avevo detto prima
ti manca qualche Texture che non riesce a trovarla e crasha.

ti consiglio di fare delle prove con dei modelli vuoti e piccoli.
giusto per avere un'idea di cosa succede.

se il DirectX Viewer ti dà problemi che non riesce a vedere il modello
sicuramente li avrai anche nel tuo programma.

assicurati prima di tutto che DirectX Viewer riesce correttamente a vedere il tuo modello.
dopo potrai provare a caricarlo nell'applicazione.


PS.
I programmi di conversione come conv3ds raramente sono efficienti.
per questo ti dicevo prima di usare proprio un programma addatto che
esportasse in .X Esempio Blender che e Free.

altra cosa.
ricordati di eliminare dal modello oggetti come
camera, luci, ed effetti vari, potrebbero appunto causarti questi problemi.
un modello dev'essere pulito, privio di ogni effetto o oggetti che possono provocare appunto questo.
per effetti grafici, esistono gli shader, che vanno implementati nell'applicazione.

mire.forumfree.it/ - Mire Engine
C# UI Designer
17/02/10 10:57
VXVX
Ho gia provato con un file più piccolo e funziona: si vede nel visualizzatore e nel programma, ma da comunque l'errore System.IO.FileNotFoundException.

Ora controllerò per luci ed effetti, forse ce ne sono...

Nel frattempo posto anche l'output che mi da il viewer prima di bloccarsi
Tangents and Binormals cannot be generated without a 2-element or greater texture coordinate at TEXCOORD0. Please use DXOps to UV-Atlas your mesh.
Normals do not exist on mesh. Attempting to calculate.
Binormals do not exist on mesh. Attempting to calculate.
Tangents do not exist on mesh. At

e poi si blocca.:-|
Fatemi sapere magari che significa.

Il modello piccolo invece non si blocca quindi ho potuto copiare l'output per intero
Loading model - cubocono.x
Binormals do not exist on mesh.  Attempting to calculate.
Tangents do not exist on mesh.  Attempting to calculate.
'Cone01' material 0 - No effect instance specified. 
Reverting to the default effect.
SAS: Loading effect 'Resource:#103'
Binormals do not exist on mesh.  Attempting to calculate.
Tangents do not exist on mesh.  Attempting to calculate.
'Box01' material 0 - No effect instance specified. 
Reverting to the default effect.
SAS: Loading effect 'Resource:#103'
aaa