2017-08-25 5 views
0

J'essaie de faire fonctionner des animations où je change en douceur le matériau de différentes formes pour qu'elles soient transparentes/de couleurs différentes.C# 3D Helix Toolkit Les formes sont transparentes à partir de certaines directions

La question est:

Si je regarde dans la forme d'en haut, je peux voir les coins intérieurs de celui-ci (par exemple si elle est un cube, je peux voir la surface intérieure de celui-ci), mais quoi que ce soit à l'extérieur/au-delà du périmètre de la forme est occlus.

Jusqu'à présent, je suis en train de faire ce qui suit, qui fonctionne très bien d'ailleurs ce problème:

Color c = new Color() 
{ 
    A = 16, 
    R = Colors.Transparent.R, 
    G = Colors.Transparent.G, 
    B = Colors.Transparent.B 
}; 

(model as GeometryModel3D).Material = new DiffuseMaterial(new SolidColorBrush(c)); 
(model as GeometryModel3D).BackMaterial = new DiffuseMaterial(new SolidColorBrush(c)); 

Si je laisse tomber l'alpha de la couleur tout le chemin à 0, la forme devient opaque, apparemment parce que la forme est invisible mais il cache toujours ce qu'il y a derrière. Les informations que j'ai trouvées jusqu'à présent suggèrent que l'utilisation de matériaux émissifs ou spéculaires fonctionnerait parce qu'elle n'a pas été écrite dans le tampon Z, mais que les matériaux diffus ne fonctionnent pas de la même manière ou que j'ai mal implémenté.

Edit:

Après avoir lu les cette question: StackOverflow, et de voir le commentaire sous la première réponse, je suppose pouvoir faire des objets vraiment transparents doivent être plus impliqués que moi d'abord pensé. Cette personne semble avoir eu le même problème que moi.

Répondre

0

Il semble que vos surfaces soient orientées dans le mauvais sens. Si c'est le cas, vous pouvez le réparer en inversant l'ordre des sommets pour chaque élément du cube. Le pipeline de tramage standard dessine typiquement des primitives "unilatérales", c'est-à-dire qu'il ne dessine que des triangles qu'il pense faire face à la caméra. De cette façon, par exemple, il n'a même pas besoin d'essayer de dessiner les côtés arrière de votre cube.