[d3d] Problema con una mappa (Z-fighting..?)

Argomenti riguardanti il D3D di GameMaker e librerie esterne.
Rispondi
Avatar utente
MyMadness
Membro attivo
Messaggi: 282
Iscritto il: 28/03/2011, 10:56
Specialità: Tuttofare
Uso: GM:Studio 2
Contatta:

[d3d] Problema con una mappa (Z-fighting..?)

Messaggio da MyMadness »

Salve a tutti!
Innanzitutto mi scuso se questa non è la sezione adatta: pensavo di dover pubblicare cose come questa in domande e risposte, ma vedo che in molti pubblicano i problemi inerenti al 3D qui... Ergo...

Meh, in ogni caso partiamo col problema:
Una delle aree del mio gioco presenta un'intera mappa fatta da un unico modello poligonale (costruito con model creator), ovvero una grotta salina.
Inizialmente il modello non presentava problemi, quindi ottimo: comincio ad allacciare area dopo area, quando un simpaticissimo bug decide di rovinarmi l'esistenza e farmi perdere giorni di programmazione: le texture, in diverse aree della grotta, fanno un casino pazzesco.
Spoiler
Immagine
questa è la grotta salina in stato normale
Spoiler
Immagine
Questa è la grotta salina che ha deciso di ribellarsi al suo creatore e strappargli l'anima

Il problema non si spiega, anche perché ha un modo di presentarsi stranissimo: se buildo il progetto con la grotta come prima room, allora la grotta la visualizzo correttamente. Al contrario, se buildo e prima di andare alla grotta salina passo per un'altra area 3D, allora le texture fanno quel simpatico bordello satanico.

Per ovviare al problema le ho provate tutte: ho controllato il modo in cui passo alla room delle Saline assicurandomi di disattivare eventuali luci, nebbie, oggetti e chi più ne ha più ne metta. Ho provato a passare nelle saline da una room non3D ed il problema non si presenta.
Ho passato il progetto al mio collega e quest'ultimo dice che a lui non presenta alcun problema, quindi ho provato ad aggiornare i driver video ed a passare il progetto ad altri ma il risultato (sia per me che per gli altri) rimane il bordello del secondo screen.
Ho pensato si trattasse, chessò, di troppi triangoli o qualche roba simile e quindi mi sono fatto tagliare via gran porzione della grotta ma il bug persiste.

In ogni caso vi lascio qui il modo in cui chiamo il modello della grotta, dovesse essere quello:

EVENTO CREATE

Codice: Seleziona tutto

z = 0;
EVENTO DRAW

Codice: Seleziona tutto

d3d_transform_set_identity();
d3d_transform_add_rotation_z(0);
d3d_transform_add_translation(x,y,z);
d3d_model_draw(global.modSalina,0,0,0,global.wallSaline2Tex);
d3d_transform_set_identity();
le globali le pesco da uno script che viene chiamato all'apertura del gioco (passo per una room che chiama lo script e poi passa alla prossima stanza).


Giuro ragazzi io argh aiuto
Davvero, non so dove sbattere la testa... Qualcuno sa come uscirne?


EDIT:
Sto usando l'ultima versione di GMStudio, se può essere utile saperlo

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

Re: [d3d] Problema con una mappa (Z-fighting..?)

Messaggio da Jak »

A giudicare da quanto dici hai testato un po tutto quindi è difficile dire dove sta il problema. Penso comunque sia meglio ricontrollare. E' vero che
MyMadness ha scritto:Sto usando l'ultima versione di GMStudio, se può essere utile saperlo
Già questo fatto da solo potrebbe voler dire tutto, gmstudio è praticamente un bug a pagamento e se così fosse... cambia programma o torna a 8.1. Purtroppo gmstudio è secondo me qualcosa di osceno.
MyMadness ha scritto:Il problema non si spiega, anche perché ha un modo di presentarsi stranissimo: se buildo il progetto con la grotta come prima room, allora la grotta la visualizzo correttamente. Al contrario, se buildo e prima di andare alla grotta salina passo per un'altra area 3D, allora le texture fanno quel simpatico bordello satanico.
Questo porta all'ovvio problema che qualche oggetto che non viene eliminato e quindi da problemi di zfighting. Tuttavia la faccenda è alquanto strana per via del fatto che hai testato a dovere. Se fosse zfighting togliendo il draw dall'oggetto relativo alla grotta dovresti vedere la parte "satanica".
Se così non fosse allora l'unica cosa che mi viene in mente è qualche oggetto controller che magari interferisce in modo sbagliato con quell'oggetto. Ma forse anche questa è da scartare visto che al tuo amico non da problemi. E' possibile sia la corruzione della texture ma molto improbabile, specialmente per le differenze tra le varie parti della grotta.
Lo zfighting non si distingue molto da un semplice screenshot. I pixel buggati restano fissi o sfarfalla proprio tutto quando muovi la visuale? Anche il fatto che nel 2d non da problemi fa propendere tutto verso lo zfighting.

Vabbè senza perdere troppo tempo prova a non disegnare la salina per trovare eventuali zone rosse disegnate da altri oggetti.
Usi le surfaces per qualche effetto speciale? Hai una scheda video dell'anteguerra?
Eventualmente un video o una demo con quella sola stanza potrebbe fare più luce sul mistero.
Fatto sta che è sempre buona norma non fare troppo codice senza compilare così da sapere dove guardare quando capitano bug.
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
MyMadness
Membro attivo
Messaggi: 282
Iscritto il: 28/03/2011, 10:56
Specialità: Tuttofare
Uso: GM:Studio 2
Contatta:

Re: [d3d] Problema con una mappa (Z-fighting..?)

Messaggio da MyMadness »

Grazie per l'interessamento, Jak, vedo di rispondere ad alcune domande:
Jak ha scritto: Lo zfighting non si distingue molto da un semplice screenshot. I pixel buggati restano fissi o sfarfalla proprio tutto quando muovi la visuale? Anche il fatto che nel 2d non da problemi fa propendere tutto verso lo zfighting.
Sfarfallano costantemente: se rimango completamente immobile anche il bug si ferma (ora però ho inserito un lievissimo bobbing/respiro della telecamera e quindi sembra i muri godano di vita propria).
Jak ha scritto: Vabbè senza perdere troppo tempo prova a non disegnare la salina per trovare eventuali zone rosse disegnate da altri oggetti.
Usi le surfaces per qualche effetto speciale? Hai una scheda video dell'anteguerra?
Nessuna surface.
La scheda è una NVIDIA GEForce 9500 GT.
Jak ha scritto: Eventualmente un video o una demo con quella sola stanza potrebbe fare più luce sul mistero.
Fatto sta che è sempre buona norma non fare troppo codice senza compilare così da sapere dove guardare quando capitano bug.
Posso provare a fare un video di qualche secondo e spararvelo qui, appena possibile!
Comunque la cosa strana è proprio quella: ricordo benissimo che prima di allacciare le room tra loro, il modello non dava alcun problema. È mia abitudine buildare ad ogni piccola porzione di codice, quindi sono più che sicuro di aver scritto solo un simpatico room_goto_next condito da qualche light spenta (ho anche provato a segare via quella parte di codice ma niente, stessa storia).

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

Re: [d3d] Problema con una mappa (Z-fighting..?)

Messaggio da Jak »

MyMadness ha scritto:Sfarfallano costantemente: se rimango completamente immobile anche il bug si ferma (ora però ho inserito un lievissimo bobbing/respiro della telecamera e quindi sembra i muri godano di vita propria).
Bè, la tua teoria era esatta, sembra proprio zfighing. Il problema è: con cosa? Hai provato a togliere solamente la riga di codice riguardante il disegno del modello del muro in questione e vedere quindi se cè qualcosa di nascosto?
Solo il d3d_draw_model un modello alla volta.
Se sì: stai disegnando qualcosa di forma simile o uguale con colori/texture diverse. Trovala ed eliminala.
Se no: comincia a pregare o meglio, se consentito dal tuo status religioso/morale, imprecare. Dopodichè vai in sede della yoyo ed inizia a sfasciare l'uffico a smitragliate stile rambo 2 (urlare a metà caricatore è d'obbligo :sisisi: )
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
MyMadness
Membro attivo
Messaggi: 282
Iscritto il: 28/03/2011, 10:56
Specialità: Tuttofare
Uso: GM:Studio 2
Contatta:

Re: [d3d] Problema con una mappa (Z-fighting..?)

Messaggio da MyMadness »

Jak ha scritto: Se no: comincia a pregare o meglio, se consentito dal tuo status religioso/morale, imprecare. Dopodichè vai in sede della yoyo ed inizia a sfasciare l'uffico a smitragliate stile rambo 2 (urlare a metà caricatore è d'obbligo :sisisi: )
Dopo altri debug e debug niente, ho capito che si tratta per forza del tool o del modello stesso.
Ho provato a controllare quante istanze vengono drawate dall'oggetto che disegna il modello, e tutto regolare. Ho provato a spostare il modello sulla x per vedere se dietro c'era altro, e tutto regolare (debug consigliati da quel signorino di Tiz).

Cioè alla fine dovrò arrendermi alla crudeltà della Yoyo?

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

Re: [d3d] Problema con una mappa (Z-fighting..?)

Messaggio da Jak »

MyMadness ha scritto:Cioè alla fine dovrò arrendermi alla crudeltà della Yoyo?
Ho provato un po di volte con gmstudio e mi è toccato arrendermi SEMPRE alla crudeltà della yoyo. Ecco perchè continuo a dire che gmstudio è il male e che conseguenzialmente, visto che sviluppano solo quello, game maker è morto.
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

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti