Posté le 16/03/2014 20:14
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 193 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 17/03/2014 19:48 | #
Heu, ça ne marche qu'avec des cubes
Une face seule, qu'elle soit à l'endroit ou à l'envers, est toujours affichée (on a pas le reste du cube qui la masque)
Citer : Posté le 17/03/2014 19:52 | #
je crois que tu n'as pas encore compris le principe: ce calcul permet de faire qu'une face n'ait besoins de rien d'autre qu'elle même pour savoir si elle est visible, c'est un calcul d'orientation pour savoir si la face est "face" a la caméra ou lui tourne le dos
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 17/03/2014 19:55 | #
Si elle est dos à la caméra, faut quand même l'afficher...
Que je soit d'un coté où de l'autre, j'afficherai quand même ma face.
Ou alors j'ai pas compris le principe...
Citer : Posté le 17/03/2014 19:59 | #
je n'arriverais pas a faire simple dans un msg, je devrais te montrer avec un papier ou un truc comment ça marche, le ascii art c'est pas mon truc
je vais trouver un moyen de t'éxpliquer, skype sans doute...
Ajouté le 17/03/2014 à 20:02 :
un exemple rapide: dans un jeu en 3D, quand tu glitche dans un mur, le mur disparais (car tu vois les faces du mur de dos, elles ne sont pas affichées)
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 17/03/2014 20:12 | #
Ah, tu veux dire quand les faces sont derrière la caméra
Pas dos à la caméra, mais dans le dos de la caméra
Totalement d'accord du coup
Citer : Posté le 17/03/2014 20:15 | #
NONONONONON: quand la face tourne le dos a la caméra, tu avais bien lu, ce n'était pas une erreur de ma part (et la je crois qu'on va atteindre le point ou si tu n'arrive pas a comprendre, je ne pourrais plus t’expliquer, a moins que je trouve un éxemple particulièrement efficace...)
Ajouté le 17/03/2014 à 20:21 :
dans l'ordre, il y a trois occlusion principales et une facultative (la première) dans tous les moteurs 3D:
-l'occlusion par proximité (la plus importante dans minecraft, moindre dans la plus-part des autres jeux, c'est la l'occlusion qui cherche si des objets sont totalement masqués par d'autres objets adjacents
-l'occlusion distance/position par rapport a la caméra (ce qui retire les faces DANS le dos de la caméra)
-l'occlusion d'incidence (occlusion dépendant de l'orientation des faces, c'est celle-ci ou on ne ce comprend pas, celle des faces qui TOURNENT le dos a la caméra)
-l'occlusion par ordre d'affichage (en fonction de la distance a la caméra)
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 17/03/2014 20:25 | #
Je ne vois pas ce que tu veux dire
Citer : Posté le 17/03/2014 20:25 | #
Les faces qui tournent le dos à la caméra, c'est donc les faces qui sont cachées par le reste de l'objet ?
Citer : Posté le 17/03/2014 20:27 | #
Les faces qui tournent le dos à la caméra, c'est donc les faces qui sont cachées par le reste de l'objet ?
oui, ou le bord de la map
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 17/03/2014 20:29 | #
Ah bah voilà, c'est tout de suite plus clair
Et quelle est l'occlusion qui permet de gérer ceci ?
Citer : Posté le 17/03/2014 20:29 | #
Dans le cas où j'affiche qu'une seule face (comme l'image dessus), quand considère-tu qu'elle tourne le dos à la caméra ou non ?
Car dans un cube (où autre), cela dépend des autres faces, mais sinon...
Citer : Posté le 17/03/2014 20:30 | #
Même dans ta pyramide, il y a toujours au moins une face qui est invisible, puisqu'elle est cachée par le reste de la structure.
Citer : Posté le 17/03/2014 20:31 | #
en fait, ce serait plus compliqué, une face est comme un mur dérobé dans les anciens jeux, visible que d'un seul côté et inexistant de l'autre, si on continue de discuter de ça on va finir par parler de quantique (pas les chansons, la science XD)
donc grosso modo, oui, quand elles tournent le dos, c'est qu'elles sont caché par "le corps", "l'intérieur" de l'objet au quel elles apartiennent
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 17/03/2014 20:33 | #
[...] visible que d'un seul côté et inexistant de l'autre [...]
Mais c'est une excellente idée ça !
Donc on pourrait avoir un environnement non constant selon l'angle de vue de la caméra. Ça règlerait un grand nombre de problèmes d'occlusion
Citer : Posté le 17/03/2014 20:33 | # | Fichier joint
Comme ça quoi :
Citer : Posté le 17/03/2014 20:34 | #
Oui, si ta caméra est à gauche, ou si l'image correspond à ce que tu vois.
Citer : Posté le 17/03/2014 20:35 | #
On a donc besoin d'une autre face "référence" (le reste de l'objet)
Ajouté le 17/03/2014 à 20:35 :
Je prend le fait que la caméra est déjà placée (on voit ce qui est affiché)
Citer : Posté le 17/03/2014 20:37 | #
Dans le cas où j'affiche qu'une seule face (comme l'image dessus), quand considère-tu qu'elle tourne le dos à la caméra ou non ?
Car dans un cube (où autre), cela dépend des autres faces, mais sinon...
hem, je crois que je dois citer un truc là:
typedef struct
{
Point_3D* points[2];
char color;
} Line_3D;
typedef struct
{
Line_3D* lines[3];
char color;
} Face_3D;
désolé si je n'ai pas utilisé la même syntaxe, je viens de comprendre pourquoi tu ne pouvais pas me comprendre...
j'ai dit que cette formule ne marchait qu'avec les faces déjà passées en 2D, ce qui fait que je ne parlais pas des structures Face_3D mais plutôt une structure du type:
typedef struct {
int x,y;
} Point_2D;
Point_2D face[3];
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 17/03/2014 20:40 | #
Ah, ok. Je vois
D'où l’intérêt de bien organiser la déclaration d'une face 2D
Citer : Posté le 17/03/2014 20:44 | #
ce calcul ne marche pas sur des points 3D, c'est aussi pourquoi je proposais la deuxième version du calcul qui ne demande pas de stocker les faces 2D, mais un calcul trigo supplémentaire par face (un point supplémentaire perpendiculaire a la face et regarder si il est devant ou derrière la face elle même)
Ajouté le 17/03/2014 à 20:46 :
en soit, je n'utilise pas une technique aussi coûteuse qu'un point supplémentaire par face dans mon propre moteur, mais je ne passe pas non plus par le stockage des faces 2D, je suis parti sur un truc encore plus compliqué a maîtriser, mais plus rapide au niveau calcul
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 05/04/2014 15:36 | #
Bon, on en a parlé sur le chat, mais voilà, j'en profite pour demander de l'aide ici.
Pour le calcul de tri des faces, j'ai deux listes (n le nombre de faces) : distance_camera[n] et id_face[n]
Comment trier id_face selon les valeurs de distance_camera ?
C'est à dire pour passer de ça :
35, 1
75, 2
180, 3
...
à ça :
150, 0
75, 2
35, 1
...
Vous avez le droit de proposer un algo qui "détruit" la liste distance_camera, il ne me faut que id_face
Mon code actuel (de complexité O(N^2)) :
for(i=start; i<end-1; i++)
{
for(j=start; j<end-1; j++)
{
if(table_ref[j] < table_ref[j+1])
{
FF_exchange(&(table_ref[j]), &(table_ref[j+1])); // inverse les deux variables
FF_exchange(&(table_sort[j]), &(table_sort[j+1]));
}
}
}