#131 - Disegnare linee in una scena 3D WPF
di Cristian Civera, in Windows Presentation Foundation, 26 giugno 2009
Archiviato in: .NET Framework, .NET Framework 3.0, .NET Framework 3.5, Windows Presentation Foundation, XAML
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/
Approfondimenti
-
Velocity arriva alla CTP3
-
Dettagli sul metodo SelectDTO
-
#125 - Scaricare un file FTP tramite FtpWebRequest
-
Disponibile la beta 1 del .NET Framework 4.0 e di Visual Studio 2010
-
#41 - Sovrapporre un controllo Silverlight ad altri elementi nella pagina
-
Visto che ultimamente Reflection.Emit è di moda...
-
rilasciato il #wpf toolkit di febbraio 2010 http://u.aspitalia.com/e8
-
WPF e Siverlight: Dispatcher e finestre modali
-
#117 - Effettuare stampe con System.Printing
-
#170 - Caricare un grafo complesso di oggetti in una sola query con Entity Framework
-
#167 - Eseguire un'applicazione per il .NET Framework con privilegi amministrativi
-
MetadataDiffViewer: differenze tra i framework

















Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.