Nello script #129 si è visto come è possibile, facendo uso della libreria 3DTools, ruotare la camera di una scena 3D semplicemente agendo con il mouse.
Nella stessa libreria è presenta una classe ScreenSpaceLines3D, che eredita da ModelVisual3D, il cui scopo è disegnare una linea piana nella scena 3D. Essa risulta molto utile soprattutto in fase di debug e di disegno, perché permette di tracciare ed evidenziare linee nello spazio e utilizzarle come punto di riferimento per valutare le altre mesh o rendersi conto della posizione della camera.
In questo script si mostra per esempio come tracciare tre linee parallele agli assi delle X, Y e Z tutte intersecanti sull'origine 0,0,0.
<Window x:Class="Camera.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:t="clr-namespace:_3DTools;assembly=3DTools"
Height="800"
Width="700">
<Viewport3D>
<Viewport3D.Camera>
<!-- camera -->
<PerspectiveCamera x:Name="camera"
NearPlaneDistance="0"
FieldOfView="45"
Position="0,0,4"
LookDirection="0,0,-1" />
</Viewport3D.Camera>
<ModelVisual3D>
<ModelVisual3D.Content>
<Model3DGroup>
<!-- luce bianca -->
<AmbientLight Color="#FFFFFFFF" />
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D Positions="-1,1,0 -1,-1,0 1,-1,0 1,1,0"
TextureCoordinates="0,0 0,1 1,1 1,0"
TriangleIndices="0 1 2 0 2 3" />
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<!-- foto usata come material -->
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<ImageBrush ImageSource="foto.jpg" />
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.Material>
</GeometryModel3D>
</Model3DGroup>
</ModelVisual3D.Content>
<!-- Linee 3D -->
<t:ScreenSpaceLines3D Color="Blue"
Points="0,0,-2 0,0,2"
Thickness="3" />
<t:ScreenSpaceLines3D Color="Red"
Points="0,-2,0 0,2,0"
Thickness="3" />
<t:ScreenSpaceLines3D Color="Green"
Points="-2,0,0 2,0,0"
Thickness="3" />
</ModelVisual3D>
</Viewport3D>
</Window>
Non si deve far altro che specificare il colore della linea, lo spessore con Thickness e i punti della linea (almeno due). Nell'esempio si tracciano linee che vanno da -2 a +2 sul rispettivo asse. Poiché la foto è centrata in relazione all'origine è possibile vedere dall'immagine il risultato che si ottiene ruotando la camera.

Progetto CodePlex:
http://3dtools.codeplex.com/
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.




