Remplissage de triangle en 3D

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour :)

Connaîtriez vous un lien, auriez vous une idée ou un algorithme en réserve, permettant de remplir un triangle point par point en 3D (C'est a dire que je connait la position 3D (x,y,z) des trois sommets du triangles, et je veux parcourir tous les points du triangles, afin de les remplir un par un) ?

cordialement

Édité par Coyote

(ಠ_ಠ) visite Drozor

+1 -0

Je comprends pas bien ta question, c'est pas clair. Tu veux énumérer tous les points à l'intérieur d'un triangle ou juste le remplir avec une couleur bien précise ?

  • Enumérer tous les points appartenant au triangle ça va être chaud, y'a une infinité de points dedans du point de vue mathématique (à moins de discrétiser)

  • Si tu veux juste le remplir sachant les 3 sommets, ça dépend de la bibliothèque que tu utilises, et du langage.

Édité par anonyme

+2 -0

Je pense qu'il se place dans $\mathbb N^{3}$. Sinon, ça n'a effectivement pas de sens. Autrement dit, il cherche probablement les points de l'espace de coordonnées entières et situés à l'intérieur d'un tétraèdre (bords inclus ?).

Édité par Vayel

+1 -0
Auteur du sujet

Je veux les parcourir tous, point par point, pour les remplir, avec un couleur calculé externement. Ce que je voudrait faire c'est remplir la surface plane dans un triangle (tout les pixels) comme pour un triangle en 2D, sauf que mon triangle est en 3D ;)

(ಠ_ಠ) visite Drozor

+1 -3

Dans ce cas-là, on va te demander de relire la réponse de Grimur, et de réfléchir un peu à ce qu'on te dit avant de venir répéter ta requête.

La vie, c'est comme les mirabelles

+1 -0
Banni

De la rasterisation 3D ?

Sauf que si ça reste du plan, c'est comme si c'était du plaquage de texture 2D, c'est pas encore du voxel ton problème ^^

Enfin j'ai un doute.

Édité par shaynox

Basic asm standard: reg(lowercase) - instruction(lowercase) -> instruction … dest, src (___/) (='.'=) (")_(") This is Bunny. Copy and paste bunny into… …your signature to help him gain world domination

+0 -1

Je sais pas. Aze, on comprend toujours pas l'enjeu. T'essaies de faire quoi exactement (sois précis, langage, bibliothèque etc) ? Tu as trois points 3D qui représentent un triangle et tu veux le représenter sur l'écran en bleu rempli par ex ?

Edit: c'est qui qui moinsse les posts qui essaient d'aider l'OP ?

Édité par anonyme

+1 -0

Y a pas de troll, on dit juste que la question d'Aze n'est vraiment pas clair. Et par conséquent, on amène des tas de questions derrière parce qu'on a besoin d'informations pour aider Aze. Quand Grimur demande si Aze veut énumérer les points ou remplir le triangle, c'est bien parce que ce sont deux choses différents et que Aze doit clarifier ce point (et ça ressemble à un problème XY (voir ceci pour comprendre le problème XY)). Quand Grimur parle de l'infinité de points, c'est parce que c'est toujours intéressant d'apporter les connaissances nécessaires à un problème, et si toi tu connais quelque chose, ça ne veut pas dire que Aze ou qu'une personne lambda tombant sur ce topic le saura.

EDIT : Sinon, Aze, comme le disait Grimur, ça dépend des technos que tu utilises, étant donné que n'importe quelle bibliothèque graphique 3D te permet de faire un triangle plein. Ou alors tu essayes d'aller plus bas niveau ?

Édité par Phigger

La vie, c'est comme les mirabelles

+0 -0
Banni

ok soit, je fais marche arrière.

Basic asm standard: reg(lowercase) - instruction(lowercase) -> instruction … dest, src (___/) (='.'=) (")_(") This is Bunny. Copy and paste bunny into… …your signature to help him gain world domination

+1 -0
Staff

Bon, on va stopper le hors-sujet ici. Et cela me ferait plaisir, shaynox, que tu cesses de voir des débuts de troll à la moindre question des autres intervenants et faire partir la discussion en vrille. Dernière précision : tu n'es pas modérateur, ce n'est pas ton rôle d'intervenir de la sorte (ce qui a tendance, comme ici, à faire dévier le sujet).

Merci de ne plus partir en HS.

Édité par Arius

Banni

ok.

Phigger, sinon oui je pense très clairement qu'il veut faire du low level, quoique l'hypothèse du voxel ne soit pas à mettre à l'écart, perso j'opterais pour un format spécial pour le voxel, les formats traditionnels comme obj sont trop spécialisés dans le plaquage de textures et donc un viewer special est nécessaire.

Et quand je parle de voxels, j'entends des voxel purs, c'est-à-dire, chaque coordonnée = couleur et je pense que l'auteur veut faire ça aussi.

Enfin on verra.

(Le problème XY est en somme des problèmes en casquades ?)

Édité par shaynox

Basic asm standard: reg(lowercase) - instruction(lowercase) -> instruction … dest, src (___/) (='.'=) (")_(") This is Bunny. Copy and paste bunny into… …your signature to help him gain world domination

+0 -2

Le problème XY : tu te poses un problème. Tu envisages une solution, et tu cherches comment la réaliser. Tu demandes comment réaliser la solution, mais tu oublies de préciser que ce n'est qu'une hyposthèe cherchant à résoudre le problème de base. Et ça a deux impacts : ça peut empêcher ceux qui le souhaitent d'aider parce que la solution peut être trop compliquée ou étrange, et en plus ça peut tout simplement amener à la réalisation d'une solution incomplète voir inefficace.

Si c'est du low-level, ou même du voxel, il faudrat alors je pense donner un maximum d'infos sur le contexte. On ne parlera pas de l'idée de se lancer dans du low-level à 13 ans :p Je pense que ça peut être très intéressant didactiquement ^^

Édité par Phigger

La vie, c'est comme les mirabelles

+1 -0
Banni

Cela s'appelle des actes concrets ? (troll)

Ok je comprends mieux, intéressent comme problème qui concerne le quotidien des programmeurs ^^

(Pour info, j'aurais adoré me lancer dans le low level à 13 plutôt que n'avoir qu'appris le binaire seul et suivi des cours bidon qui m'ont servi à rien à mon âge ^^)

Édité par shaynox

Basic asm standard: reg(lowercase) - instruction(lowercase) -> instruction … dest, src (___/) (='.'=) (")_(") This is Bunny. Copy and paste bunny into… …your signature to help him gain world domination

+0 -3
Auteur du sujet

Langage utilisé : VB.net Librairie utilisée : GDI

Je veux réaliser un moteur graphique qui affiche un objet en 3D modélisé avec Blender. Tout ça c'est bon. J'ai également déjà réussi à faire les ombres sur les faces, en fonction de l'angle et de la distance par rapport à la source de lumière.

ça donne ça : Moteur graphique

Vu que je calcul l'ombre pour 2 triangles par "carré", ça fait… moche xD
Je veux donc calculer l'ombre pour chaque pixel du triangle, c'est pourquoi il me faut parcourir tout les points du triangle, en 3D, car l'ombre est calculé avec la position 3D. Je connais la position des trois sommets, donc je peux trouver facilement la longueur de chaque coté.

Ce projet est uniquement à but pédagogique, c'est pourquoi je m'en fiche de la vitesse d’exécution ;)

Édité par Aze

(ಠ_ಠ) visite Drozor

+0 -0
Banni

Sachant que ton format n'est pas fait en pur voxel, il te faudra passer par une équation géométrique d'un triangle 2D mais dans un espace 3D :D qui permet de trouver ces points fictifs je pense.

Aufait j'ai vu que tu utilisais la GDI et donc tu ne fais pas d'appel de fonctions directx/opengl ? Si c'est ça, tu as combien de fps ? (moi aussi j'utilise la gdi (99% cpu 1% gpu (affichage de l'image) :D )

Édité par shaynox

Basic asm standard: reg(lowercase) - instruction(lowercase) -> instruction … dest, src (___/) (='.'=) (")_(") This is Bunny. Copy and paste bunny into… …your signature to help him gain world domination

+1 -1
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte