Novedades de WPF 3.5 - Viewport2DVisual3D
October 29th, 2007
Una de las nuevas características de WPF 3.5 es Viewport2DVisual3D, esta nos permite tomar un objeto 2D y visualizarlo en un espacio 3D, esto lo podíamos hacer anteriormente con 3D Tools for WPF pero ahora al menos algunas de estas características son parte del framework, para mostrarles su uso voy amigrar la demo que utilice en el Code Camp, cuyo código pueden bajar desde aquí o consultar mas en profundidad en este post, para que pase de usar 3D Tools for WPF por Viewport2DVisual3D.
Pasemos a ver el código, verán que aun sigo usando 3D Tools for WPF, pero tan solo para utilizar el TrackBallDecorator, que es quien me permite mover el modelo utilizando el mouse, el resto del código es muy fácil de seguir, en el resource he creado un mesh, luego configuro la cámara, la luz y por ultimo pinto mi mesh con un MediaElement.
<Window x:Class=”DemoViewport2DVisual3D.Window1″
xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”
xmlns:local=”clr-namespace:_3DTools;assembly=3DTools”
Title=”Viewport2DVisual3D Demo” Height=”600″ Width=”600″>
<Window.Resources>
<MeshGeometry3D x:Key=”3dMesh” 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″/>
</Window.Resources>
<local:TrackballDecorator>
<Viewport3D HorizontalAlignment=”Stretch” VerticalAlignment=”Stretch”>
<Viewport3D.Camera>
<PerspectiveCamera Position=”0,0,4″ FieldOfView=”45″ />
</Viewport3D.Camera>
<ModelVisual3D >
<ModelVisual3D.Content>
<AmbientLight Color=”#FFFFFFFF”/>
</ModelVisual3D.Content>
</ModelVisual3D>
<Viewport2DVisual3D Geometry=”{StaticResource 3dMesh}”>
<Viewport2DVisual3D.Visual>
<MediaElement Source=”silverlight.wmv” Stretch=”Uniform” Volume=”0″ LoadedBehavior=”Play” Width=”448″ Height=”256″/>
</Viewport2DVisual3D.Visual>
<Viewport2DVisual3D.Material>
<DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial=”true”/>
</Viewport2DVisual3D.Material>
</Viewport2DVisual3D>
</Viewport3D>
</local:TrackballDecorator>
</Window>
Al ejecutar el ejemplo deberíamos de ver algo como lo siguiente.

Leave a Reply
You must be logged in to post a comment.