Je travaille sur quelques graphiques de rendu, j'ai un modèle comme celui-ci, j'utilise des outils de toile Java et de fenêtrage, autrement écrit indépendamment.Depth trier les polygones rectangulaires, toutes les parties des axes du modèle
Toutes les parties sont des polygones rectangulaires ou segments de ligne. Comme cela arrive dans ce modèle, toutes les parties du polygone sont alignées avec les plans x, y ou z, l'origine xy s'exécutant à partir du coin avant du modèle dans l'image. (Il est possible de discerner la subdivision rectangulaire des côtés en regardant de près comment ils apparaissent rapiécés - mais la suppression de cet artefact n'est pas abordée ici)
Je n'ai pas trouvé une technique pour obtenir une profondeur propre -sort, celui-ci est basé sur le sommet le plus éloigné. J'ai essayé des techniques naïves et ils ont tous des artefacts différents. J'ai noté le partitionnement de l'espace binaire et l'algorithme de Newell sans creuser, mais j'ai le sentiment qu'il devrait y avoir un moyen plus facile dans ce cas, en particulier à condition que toutes les parties soient alignées à droite et parallèles aux axes. Des conseils sur les moyens à son sujet apprécié
Mise à jour
Je suis venu avec cette idée qui pourrait avoir quelque chose pour elle
Compte tenu de la contrainte face plane, il y a 6 relations possibles, (plan xx), plan (xy), (plan xz), (plan yy), (plan yz) et (plan zz).
Il est facile de trier deux polygones s'ils partagent le même plan, les 3 autres combinaisons sont indiquées ci-dessus (xy sur xz), (xy sur yz) et (xz sur yz), avec un ordre de profondeur différent se produire.
Je pense ma condition de comparaison pourrait aller quelque chose comme ça, étant donné P1 = polygon1 et P2 = polygon2
if (P1 == xy_plane) return min(P1.z, P2.z)
if (P2 == xy_plane) return min(P2.z, P1.z)
if (P1 == xz_plane) return min(P1.y, P2.y)
if (P2 == xz_plane) return min(P2.y, P1.y)
P1 ou P2 doivent se trouver dans l'un des deux premiers avions, donc pour l'énoncé du problème devrait être suffisante, doivent confirmer si cette approche fonctionne
Update2
J'ai eu quelques progrès sur l'idée ci-dessus, et il semble que le tri sur la correspondance du polygone fait quelque chose inte au repos, ça marche en partie, je dirais que ça a l'air facile, mais, bon ... j'espère que vous pensez que c'est le cas et que je peux me dire ce que je dois faire.
Le long de la ligne ci-dessus, tout d'abord contrairement à mon hypothèse, les polygones dans un même plan ne sont pas triviaux, ils peuvent avoir plusieurs configurations différentes montrées ici; parallèle et ne pas partager un autre axe comme dans les deux premiers, ou parallèle et sur le même plan. Cela signifie parfois qu'ils ne se soucient pas des axes sur lesquels ils trient (pour une comparaison par paire), (et parle d'un côté plus profond de cette poursuite).
Mise en place d'une série de déclarations conditionnelles peu importe, quelque chose dans le sens de la suggestion ci-dessus, qui avait un je pense que la saveur de la force brute avec une longue série de « if-else », finalement j'ai trouvé une comparaison polygone-polygone correcte par paire, de sorte que dans cette notion on peut dire certainement si le sujet ou l'autre est le plus proche.
Travaillant sur un seul côté du modèle ici, réussi à produire quelque chose qui semble assez convaincant. Le processus en général se sent proche de l'enfermement, mais en essayant de se débarrasser d'un désalignement final quelque peu provocant, alors que de vieux trivias physiques fixant un côté de l'autre se brisent toujours.
Voulez-vous trier par rapport à la direction de la caméra ou à l'un des trois axes? – MooseBoys
Considérons 3 triangles, où le coin supérieur de chacun est au-dessus de la section large de l'un des autres. Facile à visualiser, mais seulement un tampon de profondeur peut trier celui-là :) Cela dit, il peut y avoir une solution pour votre cas contraint. – usr2564301
Je voudrais par rapport à la caméra, comme dans la vue ci-dessus, j'utilise un point focal A, souvent l'origine, et une caméra mobile, le vecteur C.Je pensais, mais je ne suis pas arrivé à une méthode, que si la caméra est sur les huit octets xyz, les avions auraient une préférence le long de chacun des axes + ive ou -ive, le tri sur l'un de ces donnent souvent résultats raisonnables, mais pas complètement propre, encore – area5one