Affichage objet 3D et arêtes cachées
Résolu
Phil_1857
Messages postés
1872
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai développé un petit système de CAO qui peut afficher des solides en 3D et les faire
pivoter dans l'espace à l'aide de la souris
Mes objets sont définis par des lignes (les arêtes) reliant des points (les sommets), il n'y a pas de formes cylindriques
La gestion de l'élimination des arêtes cachées est assez simple: j'utilise l'algorithme du peintre
(on affiche les faces dans leur ordre d'éloignement par rapport à la "caméra")
Mais je voudrais aussi faire un rendu avec arêtes cachées en pointillés, et mes recherches sur Internet conduisent souvent à la 3D pour jeux vidéos et donc, évidemment, on ne veut que des objets en vues ombrées (shading) : couleurs, ombres, arêtes cachées invisibles, …
Donc pas évident de trouver ce que je cherche
Si vous avez des pistes ou des liens décrivant l'algorithme recherché ....
Merci par avance !
J'ai développé un petit système de CAO qui peut afficher des solides en 3D et les faire
pivoter dans l'espace à l'aide de la souris
Mes objets sont définis par des lignes (les arêtes) reliant des points (les sommets), il n'y a pas de formes cylindriques
La gestion de l'élimination des arêtes cachées est assez simple: j'utilise l'algorithme du peintre
(on affiche les faces dans leur ordre d'éloignement par rapport à la "caméra")
Mais je voudrais aussi faire un rendu avec arêtes cachées en pointillés, et mes recherches sur Internet conduisent souvent à la 3D pour jeux vidéos et donc, évidemment, on ne veut que des objets en vues ombrées (shading) : couleurs, ombres, arêtes cachées invisibles, …
Donc pas évident de trouver ce que je cherche
Si vous avez des pistes ou des liens décrivant l'algorithme recherché ....
Merci par avance !
Configuration: Windows / Edge 89.0.774.54
A voir également:
- Affichage objet 3D et arêtes cachées
- Architecte 3d gratuit - Télécharger - Architecture & Déco
- 3d slash - Télécharger - 3D
- Paint 3d mac - Télécharger - Dessin & Illustration
- Smartshow 3d - Télécharger - Visionnage & Diaporama
- Google maps satellite 3d gratuit - Guide
9 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, ne suffit-il pas d'afficher les arêtes au lieu des faces, et, pour chaque face, déterminer les segments d'arêtes qui deviennent cachés?
Bonjour yg_be,
Tout à fait
Pour la visu avec arêtes cachées invisibles, j'affiche les faces dans le bon ordre et je les "peint", et donc la vue est correcte
Par contre, maintenant, il faudrait afficher les arêtes, et déterminer les segments cachés, et c'est
bien pour cela que je cherche l'algorithme qui convient ...
Tout à fait
Pour la visu avec arêtes cachées invisibles, j'affiche les faces dans le bon ordre et je les "peint", et donc la vue est correcte
Par contre, maintenant, il faudrait afficher les arêtes, et déterminer les segments cachés, et c'est
bien pour cela que je cherche l'algorithme qui convient ...
la seule partie qui me semble un peu compliquée est de déterminer si un point est à l'intérieur d'un polygone.
http://xymaths.free.fr/MathAppli/Algorithme-Interieur-Polygone/
http://xymaths.free.fr/MathAppli/Algorithme-Interieur-Polygone/
Oui, mais il y a d'autres critères à prendre en compte, regarde ce vé:

Le point 1 est à l'intérieur d'un polygone, l'arête A1 est en pointillés, l'arête A2 est en partie en pointillés,
Le point 2 de la face avant est à l'intérieur d'un polygone mais elle n'a pas de pointillés
et ca dépend de l'ordre d'affichage, si on commence par la face arrière, aucun point n'est dans un polygone
Il y a surement un algo plus global ...

Le point 1 est à l'intérieur d'un polygone, l'arête A1 est en pointillés, l'arête A2 est en partie en pointillés,
Le point 2 de la face avant est à l'intérieur d'un polygone mais elle n'a pas de pointillés
et ca dépend de l'ordre d'affichage, si on commence par la face arrière, aucun point n'est dans un polygone
Il y a surement un algo plus global ...
pour moi, l'algo est clair:
- tu as une liste des arêtes visibles et une liste des arêtes invisibles
(ces listes sont vides au départ)
- tu fais une boucle sur toutes les faces, en commençant par les faces du fond
- pour toutes les arêtes de la liste des arêtes visibles,
si l'arête visible a une intersection avec une des arêtes de la face,
tu découpes l'arête visible en deux arêtes
(qui remplacent l'arête originale dans la liste des arêtes visibles)
- pour toutes les arêtes de la liste des arêtes visibles,
si le point milieu de l'arête est à l'intérieur du polygone
(le polygone de la face),
l'arête devient invisible (elle change de liste)
- tu ajoutes les arêtes de la face dans la liste des aretes visibles
- tu affiches les arêtes des deux listes
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Holà yg_be,
J'avoue - à ma courte honte - que je n'ai pas tout compris :-)
Prenons la face arrière de mon vé (donc la face en vé du fond) :
si l'arête visible a une intersection avec une des arêtes de la face : il y a une arête dans ce cas, mais
pourquoi la découper en 2 ?
si le point milieu de l'arête (visible) est à l'intérieur du polygone de la face
aucune arête visible dans ce cas ...
J'avoue - à ma courte honte - que je n'ai pas tout compris :-)
Prenons la face arrière de mon vé (donc la face en vé du fond) :
si l'arête visible a une intersection avec une des arêtes de la face : il y a une arête dans ce cas, mais
pourquoi la découper en 2 ?
si le point milieu de l'arête (visible) est à l'intérieur du polygone de la face
aucune arête visible dans ce cas ...
quand tu commences avec la face arrière, la liste des arêtes visibles est vide.
ce n'est qu'en ligne 12 que tu ajouteras des arêtes dans la liste des arêtes visibles.
ce n'est qu'en ligne 12 que tu ajouteras des arêtes dans la liste des arêtes visibles.
- tu as une liste des arêtes visibles et une liste des arêtes invisibles (ces listes sont vides au départ) - tu fais une boucle sur toutes les faces, en commençant par les faces du fond - pour toutes les arêtes de la liste des arêtes visibles, si l'arête visible a une intersection avec une des arêtes de la face, tu découpes l'arête visible en deux arêtes (qui remplacent l'arête originale dans la liste des arêtes visibles) - pour toutes les arêtes de la liste des arêtes visibles, si le point milieu de l'arête est à l'intérieur du polygone (le polygone de la face), l'arête devient invisible (elle change de liste) - tu ajoutes les arêtes de la face dans la liste des arêtes visibles - tu affiches les arêtes des deux listes
Bonjour yg_be,
Ca a l'air de fonctionner sur le papier.
En attendant d'intégrer ça dans mon code, je vais tester dans un petit programme test
en mode console avec un simple cube
J'ai codé en dur la liste des points et leur coordonnées, j'ai orienté le cube avec une matrice de rotation, et je suis en train de développer mes fonctions de calcul de point d'intersection
arête/polygone de face, de découpage d'arête, et de vérification si point milieu d'arête est à l'intérieur du polygone de face
Ensuite, j'afficherai simplement la liste des arêtes supposées être en pointillés
Ca a l'air de fonctionner sur le papier.
En attendant d'intégrer ça dans mon code, je vais tester dans un petit programme test
en mode console avec un simple cube
J'ai codé en dur la liste des points et leur coordonnées, j'ai orienté le cube avec une matrice de rotation, et je suis en train de développer mes fonctions de calcul de point d'intersection
arête/polygone de face, de découpage d'arête, et de vérification si point milieu d'arête est à l'intérieur du polygone de face
Ensuite, j'afficherai simplement la liste des arêtes supposées être en pointillés
Bonjour yg_be,
Pas de problème, j'ai suivi le lien que tu m'avais donné
Tu l'as surement deviné en regardant mes images, j'ai fait tout ça en Python + Tkinter
Je sais, c'est fou de refaire complètement ce que les logiciels de CFAO existants font très bien, et même mieux depuis longtemps, mais ca fait travailler mes neurones :-)
Certains font bien des mots croisés ou des sudoku ...
Pas de problème, j'ai suivi le lien que tu m'avais donné
Tu l'as surement deviné en regardant mes images, j'ai fait tout ça en Python + Tkinter
Je sais, c'est fou de refaire complètement ce que les logiciels de CFAO existants font très bien, et même mieux depuis longtemps, mais ca fait travailler mes neurones :-)
Certains font bien des mots croisés ou des sudoku ...