Supposons qu'il existe une valeur p
, calculée par image, qui varie continuellement sur la surface d'un objet. La valeur de p
détermine la densité d'un motif à la surface. Par exemple, dans un cas avec seulement deux densités possibles s'il p < 0.3
s'agit d'une densité élevée, sinon elle est faible.
J'ai pensé à une solution simple de haut niveau: créer deux textures, chacune de densités différentes, et basée sur la valeur de l' p
échantillon à partir de la bonne. Cependant, il y a un problème avec la frontière entre les hautes et les basses densités.
Voici un exemple pour illustrer le problème (notez que mon problème n'est PAS exclusif à cet exemple de modèle de points. Je décris les modèles avec lesquels je travaille plus tard):
Et voici le seuil entre faible et élevé (affiché sur la texture haute densité mais ce n'est pas pertinent.) Si sous la ligne, cela implique que la texture haute densité doit être échantillonnée.
Et enfin, voici la comparaison entre ce qui est souhaité et ce qui se passerait réellement en utilisant cette méthode:
Le problème est que lorsqu'un cercle haute densité uniquement traverse la ligne, il sera ignoré lorsque p
indique la texture basse densité à échantillonner, résultant en un cercle tronqué. Je ne sais pas comment résoudre ce problème car p
varie à chaque image, donc je ne peux pas simplement "cuire" une frontière entre les deux densités. Il est facile de prévenir le problème inverse en créant la texture haute densité à partir de la texture inférieure (c.-à-d. Si un cercle est sur la texture basse densité, assurez-vous qu'il se trouve sur la texture haute densité).
Je suis intéressé si quelqu'un a un moyen d'améliorer ma solution ou a même une autre méthode entièrement. La contrainte ici est quep
est calculée par image en temps réel. Une autre contrainte est liée à la texture du motif: le motif est en noir et blanc, où le noir est le motif et le blanc est l'arrière-plan (comme les cercles dans l'exemple). Le motif peut non seulement être des formes identiques répétées, mais tout arrangement de formes noires arbitraires sur un fond blanc. (Peut-être que le motif n'est pas le bon choix de mot.)
Je ne connais pas la recherche dans ce domaine, donc je ne savais pas quels mots clés rechercher, donc j'apprécierais même si quelqu'un pouvait me diriger dans la bonne direction.
Réponses:
Afin de garantir que les formes du motif sont toujours entièrement présentes ou absentes, jamais coupées, il est nécessaire de s'assurer que la même
p
valeur est utilisée pour tous les texels de la forme. Dans votre exemple de cercles, tous les texels d'un cercle donné doivent être d'accordp
.Je suppose que vous avez un moyen d'évaluer
p
à un point donné de la surface (qu'il soit recherché à partir d'une texture ou calculé à partir d'une fonction). Ensuite, une façon de s'assurer qu'un groupe de texels a tous la mêmep
valeur est de s'assurer qu'ils le recherchent tous du même point.Les UV de ce point d'évaluation pourraient être stockés dans des canaux supplémentaires de la texture du motif. Par exemple, vous pouvez demander aux canaux rouge et vert de stocker les coordonnées UV auxquelles évaluer
p
, le canal bleu stocker le seuil auquel activer cet élément de motif et l'alpha stocker le niveau de gris anticrénelé du motif à afficher. Les données de seuil UV + peuvent également être dans une texture secondaire séparée si vous le souhaitez.Pour générer cette texture de seuil UV +, à partir d'une texture de motif d'entrée, vous pouvez rechercher par programme les composants connectés (par exemple en recherchant des pixels noirs et en remplissant le flux). Définissez le point d'évaluation pour tous les texels de chaque composant sur les UV du centre du composant et générez un seuil aléatoire pour celui-ci. Ensuite, lors du rendu, utilisez un pixel shader qui échantillonne d'abord cette texture, puis recherche
p
le point d'évaluation donné et le compare au seuil donné.De cette façon, chaque forme de motif verra une
p
valeur et un seuil uniformes , et s'allumera ou s'éteindra complètement. Àp
mesure que les augmentations, de plus en plus de formes dépassent leur seuil et apparaissent, donnant l'impression d'une densité variant en continu.la source
Une autre pensée va dans ce sens. Si vous avez un ensemble de points uniforme défini sur le plan et une fonction de mappage du plan à la surface cible, la fonction de densité sur la surface est la façon dont les zones sont mappées de la surface du plan à la cible. Ainsi, une carte préservant la zone se traduirait par des points uniformes sur la cible.
la source