[U3D] Multi texturing e colore texture

Argomenti riguardanti il D3D di GameMaker e librerie esterne.
Rispondi
Avatar utente
fra3point
Membro attivo
Messaggi: 388
Iscritto il: 24/08/2010, 15:16
Specialità: Prog. e 3D Modelling
Località: L'Aquila
Contatta:

[U3D] Multi texturing e colore texture

Messaggio da fra3point »

In U3D c'è la possibilità di applicare ad un materiale fino a 8 texture contemporaneamente, ognuna in un texture stage (da 0 a 7).

Sto provando ad applicare ad un modello una texture che ho appositamente creato a partire dalla UV map del modello stesso. Questa texture è in formato .png, con sfondo bianco ed è applicata ad un materiale al quale è possibile cambiare colore ingame. Questo è il codice che ho utilizzato in create:

Codice: Seleziona tutto

//SetMaterialStageTexture(MaterialIndex,TextureStage,TextureIndex)
SetMaterialStageTexture(12,0,12);
E fin qui tutto ok.

Ma quando cambio il colore del materiale anche quello della texture cambia (non ho usato nessuna operazione texture quindi mi fa come default la moltiplicazione per 1). Ho provato anche con altre operazioni della SetMaterialStageTextureOperation ma bene o male cambia sempre anche il colore della texture.

Il risultato che vorrei ottenere è una texture che anche cambiando il colore del materiale a cui è applicata conservi il suo colore iniziale. In sostanza quando viene applicata la texture vorrei che non venisse eseguita nessuna operazione col colore e rimanesse così come l'ho creata.

In futuro poi vorrei poter modificare, ingame, questa texture cambiandone il colore come se fosse un materiale, ovviamente con altri metodi.

Avete qualche idea di come fare? Se non mi sono spiegato bene ditemelo, è complicato da descrivere a parole ma alla fine è molto semplice.. ;) Grazie!

EDIT: ho notato che effettuando le operazioni per le texture anche il colore del materiale stesso cambia!
draw_text(100,100,"fra3point");

Progetti in corso:
Spoiler
Tuning Paradise --> 10%

Saw: The Game --> 60%

Tropic Races --> 40%

Avatar utente
civic71
GMI Advanced
Messaggi: 2210
Iscritto il: 23/10/2003, 17:31
Specialità: Risotto con zucchine
Uso: GM:Studio 1.4 Pro
Località: Jesolo (venezia)
Contatta:

Re: [U3D] Multi texturing e colore texture

Messaggio da civic71 »

Ma se rendi tarsparente lo sfondo bianco dell' immagine.png , non dovrebbe bastare ?

Avatar utente
fra3point
Membro attivo
Messaggi: 388
Iscritto il: 24/08/2010, 15:16
Specialità: Prog. e 3D Modelling
Località: L'Aquila
Contatta:

Re: [U3D] Multi texturing e colore texture

Messaggio da fra3point »

Ci ho provato! Quel che mi sembra strano è che poi l'intero materiale mi diventa trasparente!!! invece, con lo sfondo bianco, tale sfondo viene ignorato, come se fosse trasparente, il che mi ha suscitato qualche dubbio, date che le texture che uso per l'environment mapping hanno sfondo nero!
draw_text(100,100,"fra3point");

Progetti in corso:
Spoiler
Tuning Paradise --> 10%

Saw: The Game --> 60%

Tropic Races --> 40%

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [U3D] Multi texturing e colore texture

Messaggio da Jak »

Il colore del materiale viene "miscielato" alla texture in base all'operazione texture del primo texture stage. Per la precisione prima miscieli la texture 8 con la 7, poi questa somma con la 6, il tutto con la 5 e così via.
Ora non mi rocordo quali sono le varie operazione texture ma se tu vuoi che il materiale non influisca in alcun modo basta dargli un colore bianco. COme soluzione non mi sembra difficile da fare. Se vuoi che il tutto non dipenda dalla luce(ad esempio lo schermo di un computer) imposti il colore emissivo.

Per il "cambiare" la texture purtroppo non ci sono texture dinamiche quindi l'unica soluzione è elaborarla su una surface di gm, salvarla su file e poi caricarla con u3d.
Questo procedimento è alquanto brutto nonchè lento ma non vi è altra soluzione.
Per il problema che, usando l'alfa si rendono trasparenti anche gli altri texture stage è un problema che ho trovato anche io.
L'unica soluzione per queste sono gli shader ed il bello è che nessuno su gmi li sa fare :mrgreen:
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
civic71
GMI Advanced
Messaggi: 2210
Iscritto il: 23/10/2003, 17:31
Specialità: Risotto con zucchine
Uso: GM:Studio 1.4 Pro
Località: Jesolo (venezia)
Contatta:

Re: [U3D] Multi texturing e colore texture

Messaggio da civic71 »

Non sapevo del colore bianco , ma solo del colore verdastro : 0,128,64 ;
Hai già fatto un test con quel colore fra3point ?

E' sempre interessante leggere i tuoi post Jak , sei molto preparato .

Avatar utente
fra3point
Membro attivo
Messaggi: 388
Iscritto il: 24/08/2010, 15:16
Specialità: Prog. e 3D Modelling
Località: L'Aquila
Contatta:

Re: [U3D] Multi texturing e colore texture

Messaggio da fra3point »

@civic71: no il verdastro non l'ho ancora provato. Ma l'avevo notato su qualche texture in alcuni giochi.. Lo proverò! Grazie! ;)

@jak: non posso dare un colore bianco al materiale! La texture è solo una piccola parte di disegno da applicare ad un modello più grande, quindi si vedono sia il materiale vero e proprio e sia la texture applicata. Inoltre il colore del materiale può essere cambiato!
Invece, per quanto riguarda il colore emissivo, anche se lo cambio non cambia nulla..

Ti faccio uno screen di ciò che mi succede quando cambio colore al materiale!

Questo è ciò che ottengo quando il materiale è grigio:
Spoiler
Immagine
Questo invece è ciò che ottengo quando il materiale è arancione (le spiegazioni su materiali e texture sono le stesse dell'immagine di prima!):
Spoiler
Immagine
draw_text(100,100,"fra3point");

Progetti in corso:
Spoiler
Tuning Paradise --> 10%

Saw: The Game --> 60%

Tropic Races --> 40%

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [U3D] Multi texturing e colore texture

Messaggio da Jak »

Chissà come mai appena letto il titolo del tuo post ho pensato subito alle aerografie ed ho fatto centro.
Allora qui arriva il difficile, una delle cose che mi ha fatto pensare molto nelle mie pause di riflessione(io sono un mostro nello studiare effetti grafici, per addormentarmi io penso soluzioni ai problemi più complessi :lol: ).
Ho purtroppo provato tutti i blend mode senza risultati soddisfacenti(anche se mi viene voglia di riprovare, ma dubito di scoprire cose nuove) e dunque non esiste un blend mode che ti permetta di fare quella cosa che tu hai in mente.
La soluzione migliore che ti consiglio è quella di usare 2 modelli, uno con il colore ed uno, scalato a 1.001(è inutile più cifre, u3d legge solo decimali con 3 cifre dopo la virgola) così da non notarsi che è più grande ma fare sufficientemente grande da evitare che le maglie si sovrappongono dando brutti effetti, contenente le aerografie.
Poichè alla fine durante la modalità di editing il rendering sarà molto meno pesante che ingame(altre macchine, ambientazioni, ecc) direi che è accettabile. Poi quando esci dalla edit mode invece ti farai una texture che contiene il colore della macchina e tutte le aerografie e, nel passaggio tra una schermata ed un'altra direi che è accettabile una frazione di sec per salvare con gm e caricare la texture ed ingame non avrai problemi poichè usi un singolo modello texturato. La texture conterrà anche il colore del materiale quindi il materiale dovrai farlo "bianco". Purtroppo U3D non permette le texture dinamiche e questa è, credo, la soluzione migliore per ovviare il problema.

@civic: grazie. Mi piace sapere cosa cè sotto ad ogni singola cosa e, che l'abbia letto o ancora più probabile che l'ho provato di persona, mi piace sopratutto vedere cose come i blend mode e capire come interagiscono con i vari canali e cose così. A dirla tutta mi piace studiare ed elaborare effetti grafici ottimi tenendo le prestazioni al massimo(perchè manipolare la grafica con gm è lento e per giunta sono abituato con pc vecchissimi quindi sono un fanatico delel prestazioni) e certe cose le penso di notte.
U3D l'ho veramente studiato moltissimo e provato e riprovato nonchè cercato un'utilità di ogni singola cosa che permette. Ho provato a fare minimappe ed altre cose di questo tipo come migliorare l'hud usando i modelli 3d(disegnare testo e texture è troppo limitato).
Anche io tempo fa provai a fare un gioco di macchine con u3d ed anche se ho mollato subito per via della graficaho pensato a come potevo fare certe cose perchè non si sa mai mi venga voglia i riprendere un progetto.
Se vuoi un consiglio fidati di me che ogni singola cosa di u3d l'ho provata personalmente per quello sono così esperto :sisisi:

PS: Mentre scrivevo il post ho letto sul manuale una nota:
Colui che ha scritto il manuale di U3D ha scritto:Quando si utilizza multi texturing il componente alfa utilizza sempre una operazione moltiplicativa texture (Final.a = Texture.a * Current.a).
Ed ecco spiegato il problema. Se in un texture stage abiamo l'alfa a 0 per qualunque valore moltiplichiamo resterà sempre a 0. Purtroppo i valori sono sempre da 0 a 1 quindi anche se moltiplicassimo un'eventuale 0.001*1 resterebbe comunque il valore più basso di alfa.
L'unica soluzione sono dunque gli shader che mi viene sempre più voglia di impararli.
Se solo usasse dx9 che usa anche l'hlsl(linguaggio shader più facile e veloce da creare) potrei farci un pensierino ma l'assembler degli shader è assai difficile.
Mi sa che prima o poi è un salto che dovrò fare...
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
fra3point
Membro attivo
Messaggi: 388
Iscritto il: 24/08/2010, 15:16
Specialità: Prog. e 3D Modelling
Località: L'Aquila
Contatta:

Re: [U3D] Multi texturing e colore texture

Messaggio da fra3point »

Avevo provato ad usare 2 modelli contemporaneamente quando stavo cercando (invano) di creare il riflesso sotto l'auto. Ma circa 20.000 triangoli a modello sono già parecchi e gli fps scendevano di brutto. Credo che succederebbe la stessa cosa. Comunque tentar non nuoce! ;)

Se ho capito bene devo creare un modello leggermente più grande sopra quello già esistente che conterrà le aerografie, colorato in bianco. Ma come fa a contenerle tutte insieme?

EDIT: Stavo anche pensando ad un'altra soluzione, con un buon risparmio di triangoli!

Dunque, mi potrei creare dei modelli 3d con la forma delle texture, ne farei una decina per ogni auto (perche ognuna ha una forma diversa). Poi li istanzio in U3D come se fossero dei veri e propri modelli-figlio, con un loro materiale che sarà il colore dell'aerografia. Che ne dite? Potrei provare anche così? Intanto provo il metodo di jak!

EDIT2: Si sembra funzionare questo metodo dei modelli come disegni.. E' molto lungo da fare e ci vorrà qualche ritocco.. Anche se non è un granchè!
draw_text(100,100,"fra3point");

Progetti in corso:
Spoiler
Tuning Paradise --> 10%

Saw: The Game --> 60%

Tropic Races --> 40%

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [U3D] Multi texturing e colore texture

Messaggio da Jak »

Non dico di fare un modello più grande ma di istanziare lo stesso identico modello solo con scalx=scaly=scalz=1.001 poi in un modello usi il colore ed in un'altro la texture.
Anche la tua soluzione dei triangoli è buona, forse un po complicata perchè devono stare in posizioni fisse rendendo il tutto meno elaborabile.
Alla fine qualunque metodo scegli ti servirà parecchio lavoro ugualmente.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
fra3point
Membro attivo
Messaggi: 388
Iscritto il: 24/08/2010, 15:16
Specialità: Prog. e 3D Modelling
Località: L'Aquila
Contatta:

Re: [U3D] Multi texturing e colore texture

Messaggio da fra3point »

Si ci vuole tempo.. Più o meno una mezz'oretta ogni aerografia se mi sbrigo.. Inoltre anche smussando gli angoli si nota lo stacco dei triangoli..
Nel tuo caso invece ci vorrebbe di meno.. solo che ho provato e mi si rallenta un po' tutto.. non vorrei che poi chi avesse un computer meno potente non riuscisse a giocare per niente! :fapensare:
draw_text(100,100,"fra3point");

Progetti in corso:
Spoiler
Tuning Paradise --> 10%

Saw: The Game --> 60%

Tropic Races --> 40%

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti