Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.net] Importa scena complessa in directx
Forum - C# / VB.NET - [VB.net] Importa scena complessa in directx

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
VXVX (Normal User)
Newbie


Messaggi: 5
Iscritto: 16/02/2010

Segnala al moderatore
Postato alle 19:05
Martedì, 16/02/2010
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:-|.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 20:44
Martedì, 16/02/2010
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 il 16/02/2010 alle 20:45


Il mio blog: https://piero.dev
PM Quote
Avatar
VXVX (Normal User)
Newbie


Messaggi: 5
Iscritto: 16/02/2010

Segnala al moderatore
Postato alle 20:56
Martedì, 16/02/2010
3ds max, come esportatore uso kwxport
Non da problemi nel debug. Il problema è che comincia a caricare e poi il programma smette di rispondere

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 23:33
Martedì, 16/02/2010
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: https://piero.dev
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2315
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 9:24
Mercoledì, 17/02/2010
mah secondo me sta facendo solo confusione

Testo quotato


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?

Testo quotato


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 il 17/02/2010 alle 9:26


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
VXVX (Normal User)
Newbie


Messaggi: 5
Iscritto: 16/02/2010

Segnala al moderatore
Postato alle 9:56
Mercoledì, 17/02/2010
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:
Codice sorgente - presumibilmente Plain Text

  1. modello.mesh = Mesh.FromFile(AppPath() & "\file.x", MeshFlags.Dynamic, device, materiali)


Ultima modifica effettuata da VXVX il 17/02/2010 alle 10:14
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2315
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 11:22
Mercoledì, 17/02/2010
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.



https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
VXVX (Normal User)
Newbie


Messaggi: 5
Iscritto: 16/02/2010

Segnala al moderatore
Postato alle 11:57
Mercoledì, 17/02/2010
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
Codice sorgente - presumibilmente Delphi

  1. Tangents and Binormals cannot be generated without a 2-element or greater texture coordinate at TEXCOORD0. Please use DXOps to UV-Atlas your mesh.
  2. Normals do not exist on mesh. Attempting to calculate.
  3. Binormals do not exist on mesh. Attempting to calculate.
  4. 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
Codice sorgente - presumibilmente Delphi

  1. Loading model - cubocono.x
  2. Binormals do not exist on mesh.  Attempting to calculate.
  3. Tangents do not exist on mesh.  Attempting to calculate.
  4. 'Cone01' material 0 - No effect instance specified.
  5. Reverting to the default effect.
  6. SAS: Loading effect 'Resource:#103'
  7. Binormals do not exist on mesh.  Attempting to calculate.
  8. Tangents do not exist on mesh.  Attempting to calculate.
  9. 'Box01' material 0 - No effect instance specified.
  10. Reverting to the default effect.
  11. SAS: Loading effect 'Resource:#103'


PM Quote
Avatar
VXVX (Normal User)
Newbie


Messaggi: 5
Iscritto: 16/02/2010

Segnala al moderatore
Postato alle 12:49
Mercoledì, 17/02/2010
Ecco fatto. Sono sicuro che non dipende da luci o effetti: ho creato una nuova scena: 400 sfere per 300.000 poligoni, 7MB e il viewer si comporta allo stesso modo: arriva a 98 e si blocca. Nella scena non ci sono altro che sfere.

Se cancello una parte della scena lasciandone solo una settantina per 70.000 poligoni invece funziona.

Ho provato con un altra scena 70.000 poligoni 1500 oggetti, arriva a 80 e poi si blocca

Siete mai andati oltre i 100 oggetti? Forse è questo il problema

Ultima modifica effettuata da VXVX il 09/03/2010 alle 16:46
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo