Jump to content
mizrael

Maxscript Ed Exporter

Recommended Posts

salve a tutti! questo è il mio primo post su questo forum e già sono qui a rompere le scatole con le mie richieste assurde :D

passo subito al dunque: ho scritto uno script per esportare i modelli nel mio motore 3D . Funziona molto bene, e pensavo di aggiungere un secondo canale uv per lightmaps e qualcos'altro.

Questo è il modello in Max (ancora con 1 uv sola):

max1.jpg

e questo è il risultato nel mio motore (chiaramente senza nessuno shader applicato ):

engine1.jpg

Come potete vedere, l'exporter funziona egregiamente. A questo punto allora ho fatto un render-to-texture per creare un'ambient occlusion map. Mi ha creato un secondo canale uv ( messo su 2) applicando il modificatore Unwrap UVW. Quindi ho provato ad esportare.

Questo è il modello in Max (qui c'è 1 uv sola, ho provato ad esportarlo anche così, ma niente da fare):

max2.jpg

E così invece lo carica il motore:

engine2.jpg

Come potete vedere è tutto sballato. Quello che mi chiedo quindi è: ci sono problemi (o bug conosciuti) quando si applica Unwrap UVW e si prova ad esportare?

Il codice dell'exporter è anche molto semplice, fa qualcosa del genere (ho messo solo le parti rilevanti)

-- ho dichiarato una struttura per i vertici, solo con la posizione e le coordinate uv

struct tVertex(

   pos,

   uv

)


-- e poi una struttura per le facce (triangoli) con gli indici dei 3 vertici

struct tFace(

   v1,

   v2,

   v3

)


-- poi nella funzione principale:

for (ogni faccia dell'oggetto selezionato) {

	 vertindices = getFace obj triindx

	 UV1_indices = meshop.getmapface obj 1 triindx


	 VList = #()

	 for i=1 to 3 do

	 (

		 pos = obj.verts[vertindices[i]].pos

			 uv1 = meshop.getmapvert obj 1 UV1_indices[i]


		newVert = tVertex pos #(uv1.x, uv1.y)

		append ListaVertici newVert

			VList[i] = ListaVertici .count

	 )

	 append ListaFacce (tFace VList[1] VList[2] VList[3] )	

)


-- dopo semplicemente scrivo tutti i dati su file, in modo testo

Consigli?


Edited by mizrael

Share this post


Link to post
Share on other sites

Dipende dalle luci del tuo motore e dalla gradazione metrica del parametro Uv.

prova in manuale dal motore ad assegnare le uv e poi recuperi la proporzione dei valori e la moltiplichi durante la lettura dei dati letti in seq dal tuo file di testo.

Ciao


Edited by DARKTy

Share this post


Link to post
Share on other sites

alla fine sono riuscito a risolvere... era una cavolata e la tenevo sotto gli occhi :)

Le luci del motore nn c'entrano nulla, qui l'illuminazione è data solo dalla mappa di ambient occlusion.

Max ha un sistema diverso di rappresentare le coordinate UV quindi è necessario nell'exporter negare le coordinate, o meglio solo la V.

Ho messo un paio di screen nuovi sul sito per mostrare i risultati :)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...