2012-11-30 5 views
1

J'ai travaillé sur un projet qui aide à créer une expérience de réalité virtuelle sur l'ordinateur portable et/ou le bureau. J'utilise XNA 4.0 sur Visual Studio 2010. Le scénario actuel ressemble à ceci. J'ai interfacé les mouvements d'une personne à travers la kinect. Donc, si la personne bouge la tête par rapport à l'ordinateur portable, la scène vue dans l'image est tournée vers la gauche, ce qui donne l'effet d'une visite virtuelle ou ressemble à l'expérience de la fenêtre.Distance Fog XNA 4.0

Pour améliorer l'attrait visuel, je veux ajouter une obscurité à l'arrière du plan. Comme la boîte ressemble à un tunnel.

La boîte a été fabriquée en utilisant des bandes triangulaires. L'effet de base utilisé pour les plans de la boîte est appelé effet.

effect.VertexColorEnabled = true; 
     effect.EnableDefaultLighting(); 
     effect.FogEnabled = true; 
     effect.FogStart = 35.0f; 
     effect.FogEnd = 100.0f; 
     effect.FogColor = new Vector3(0.0f, 0.0f, 0.0f); 
     effect.World = world; 
     effect.View = cam.view; 
     effect.Projection = cam.projection; 

Scene

sur la compilation de l'erreur est au sujet de certaines Normales. Je n'ai aucune idée de ce qu'ils veulent dire par là. J'ai assez creusé internet. (J'étais d'abord sous l'impression que malade mis un omnilight noir dans le dos de la boîte).

L'erreur est jointe ci-dessous: Error

'verts' est le VertexPositionColor [] [] qui est utilisé pour construire la boîte.

Comment résoudre cette erreur? La méthode/approche est-elle correcte?

Toute aide sera la bienvenue. Merci.

Répondre

1

Votre sommet a des canaux de position et de couleur, mais n'a pas de normales ... donc vous devez fournir le vertex.

Vous pouvez utiliser VertexPostionNormalTexture si vous n'avez pas besoin de la couleur, ou de construire une structure personnalisée qui fournit la normale ...

Ici vous êtes une implémentation personnalisée: VertexPositionNormalColor

0

Vous devez ajouter un normal (vector3) à votre type de vertex.

Aussi si vous voulez le brouillard de distance vous devrez écrire votre propre shader car BasicEffect implémente seulement le brouillard de profondeur (qui tout en ne regardant pas aussi bien est plus rapide)