2010-11-03 19 views
3

J'ai une image chargée à partir du disque comme une texture, et une matrice de même taille d qui a les profondeurs correspondantes.Comment visualiser une scène 3D à l'aide de surf

Comment puis-je utiliser surf pour me montrer l'image en tant que modèle 3D? Il suffit de prendre

surf(depthMatrix, img); 

ne donne pas un résultat agréable car

  1. la caméra ne regarde pas du plan xy dans la direction z
  2. Il semble assez noir
  3. Il ne semble pas ce lisse bien que ma matrice de profondeur est effectivement lissée lorsque je l'affiche en utilisant imshow(depthMatrix, []);

image how it looks like

Répondre

4

Vous pouvez utiliser le mappage de texture pour afficher votre image sur votre surface comme ceci:

surf(depthMatrix,img,...   %# depthMatrix is z data, img is an image 
    'FaceColor','texturemap',... %# Use texture mapping 
    'EdgeColor','none');   %# Turn off edge coloring 

Et pour répondre à vos 3 points:

  1. Vous pouvez régler l'angle de la caméra avec la souris en appuyant sur le bouton alt text de la figure, qui active la rotation 3D interactive. Vous pouvez également activer la rotation interactive à l'aide de la fonction ROTATE3D ou vous pouvez modifier la vue de la caméra sans la souris à l'aide de la fonction VIEW.

  2. Votre parcelle regardait noir parce que les bords sont dessinés comme des lignes noires par défaut, et il y avait probablement beaucoup d'entre eux.

  3. Vous pouvez régler la axis scaling and limits pour rendre votre surface un aspect plus lisse. Par exemple, axis equal fera des unités de données identiques pour les 3 axes, de sorte que votre axe z (qui varie de 0 à 25) seront aplaties de manière significative depuis vos deux autres axes couvrent les gammes des centaines. Alternativement, dans votre appel au SURF, vous pouvez spécifier les données x et y à utiliser pour les valeurs sur ces axes, ce qui peut finalement vous aider à mieux ajuster la mise à l'échelle relative entre ces axes et l'axe z.

+0

qui ressemble beaucoup mieux. Merci! Et comment faire tourner la caméra qui regarde le modèle par le bas, peut-être avec un petit angle que la profondeur devient visible? – Etan

+0

@Etan: J'ai mis à jour ma réponse pour répondre aux 3 points que vous avez listés. – gnovice

+0

Comment utiliser l'outil de tournage pour le tourner de manière à ce que le bord inférieur se trouve derrière le bord supérieur de l'écran? – Etan