1

Hello,
Voilà peut être une question conne, mais je me demandais quel concept il me manque. Dans le shot ci-dessous, on peut voir sous la barre brune tout à gauche une "ombre" pour indiquer où la pièce va tomber, c'est fait à partir de cubes transparents:
img42pg4.th.png
Mais voilà, en fait *certaines* faces sont répétées plusieurs fois en transparence (pas toutes, par exemple là on voit que la face avant du cube est dessinée par-dessus celle du dessous, mais celle du dessus du premier cube (en haut) n'est pas dessinée derrière la face avant par exemple. Je ne comprends pas pourquoi, est-ce que quelqu'un pourrait m'orienter? smile
(pour info j'ai le Z buffer actif et le culling à none, donc logiquement il devrait pas dessiner 2x sur le même pixel, non?)
Merci d'avance
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

2

Je comprends pas bien ta question... Tu veux qu'un pixel soit dessiné deux fois, ou tu veux pas ?

Le z-buffer est une optimisation pour les faces opaques. ça te permet d'éliminer un maximum de dessins de faces si tu dessine dans l'ordre avant->arrière.
Or pour de l'alpha blending (sauf additive blending ou autre cas particulier), qui est une opération de dessin ordonnée, d'une part tu dois pouvoir voir les objets en dessous de ton objet transparent, et d'autre part puisque l'alpha blending est ordonné, tu dois dessiner tes faces de l'avant vers l'arrière.

Donc si tu ne te préoccupes pas trop de la qualité graphique, une façon simplifiée de faire pour voir toutes les faces pourrait être de désactiver le z-write pour les objets transparents, sinon pour voir toutes les faces, il faut trier tongue

Habituellement on procède en plusieurs étapes:
1 - Dessin des objets opaques, ordre quelconque, backface culling activé (souvent), z-buffer ctivé, z-write activé
2 - Dessin des objets transparents, triés arrière->avant (par rapport à la caméra bien sûr), backface culling activé ou désactivé selon les cas (j'aurai plutôt tendance à le laisser activé tongue), z-buffer activé, z-write activé
3 - Dessin des particules (additive blending), ordre quelconque, culling osef (désactivé ?), z-buffer activé, z-write désactivé.

Mais bon, je vois pas bien l'effet exact que tu veux faire donc... ^^
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

3

Et oui le bon gros défaut de cette méthode tongue

4

Ben en fait je m'attends à ce que sur un cube j'aie soit chaque face dessinée une fois soit toutes les faces dessinées de multiples fois. J'ai essayé de désactiver le ZBUFFER juste pour l'espace de ce cube et je n'ai toujours pas toutes les faces. J'ai d'autres résultats que si je le désactive pas, mais pas toutes les faces ne sont dessinées sad
Sinon pour ne pas avoir de faces multiples, le secret est donc de trier les faces selon leur profondeur... pas encore gagné ça... embarrassed
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

5

Tu n'est pas réellement obligé de trier des faces, mais plutôt que de dessiner des cubes, dessines des plans... wink
Ce que je ferais, c'est de dessiner seulement 3 faces pour chaque cube (équivalent du backface culling activé).
D'abord déterminer si tu dois dessiner les faces "horizontales" ou "verticales" en premier, et pour chacun de ces types de faces, déterminer un sens de parcours (0 -> n / n -> 0).
Ensuite pour chaque cube de la grille (en utilisant les sens de parcours définis précédemment, globalement, ça te fait seulement deux boucles imbriquées si tu es malin), tu dessines les faces dans l'ordre voulu, et voilà.
Puis toujours en dernier les faces "avant" (celles collées à la grande surface de jeu) de chaque cube. (Là l'ordre de parcours importe peu... Et ça peut peut-être être optimisé en utilisant une "grosse" texture avec point sampling où chaque pixel représente un cube)

Et puis voilà, ça fonctionne. Après si tu veux aussi dessiner les faces "arrières", il suffit de faire comme pour les "avant", mais tout au début ^^

C'est un peu chiant mais pas très compliqué happy
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

6

GoldenCrystal (./5) :
C'est un peu chiant mais pas très compliqué happy

Tu sais que pour un peu je pourrais prendre cette phrase comme une insulte? tongue
J'ai compris mais je ne saurais pas faire ce dont tu parles, mais tant pis, je pense que j'ai encore bcp de trucs à voir avant de retenter cela... apprendre la 3D tout seul c'est vraiment pas simple :/
Merci en tous cas smile (et à bientôt pour de nouvelles aventures happy)
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741