Sei sulla pagina 1di 8

Instituto Tecnolgico de Hermosillo

Ingeniera en Sistemas Computacionales

Graficacin
Profesor: Alfonso Mendoza Robles

Investigacin:
Investigacin U4

Daniel Antonio Moreno Rios


No. Del Control: 14330585

3D en un contenedor 2D
El contenido de los grficos 3-D de WPF se encapsula en un elemento, Viewport3D, que
puede participar en la estructura de elementos bidimensionales. El sistema de grficos trata
los objetos Viewport3D como elementos visuales bidimensionales, al igual que ocurre con
muchos otros elementos de WPF. Viewport3D funciona como una ventana (una ventanilla) de
una escena tridimensional. Expresado de modo ms preciso, es la superficie sobre la que se
proyecta una escena 3-D.

En una aplicacin 2-D convencional, utilice Viewport3D como cualquier otro elemento
contenedor, como Grid o Canvas. Aunque puede utilizar Viewport3D con otros objetos de
dibujo 2-D en el mismo grfico de escena, no puede interpenetrar objetos 2-D y 3-D dentro
de Viewport3D.

Espacio de coordenadas 3D
El sistema de coordenadas de WPF para grficos 2-D localiza el origen en la parte superior
izquierda del rea de representacin (que suele ser la pantalla). En el sistema 2-D, los
valores positivos del eje X se extienden hacia la derecha, y los valores positivos del eje Y
extienden hacia abajo. En el sistema de coordenadas 3-D, sin embargo, el origen se
encuentra en el centro del rea de representacin, los valores positivos del eje X se
extienden hacia la derecha, los valores positivos del eje Y se extienden hacia arriba (no
hacia abajo) y los valores positivos del eje Z se extienden hacia el exterior partiendo del
origen, es decir, hacia el espectador.

Representaciones convencionales de los sistemas de coordenadas 2D y 3D


El espacio definido por estos ejes es el marco esttico de referencia para los objetos 3-D en
WPF. Cuando se generan modelos en este espacio y se crean luces y cmaras para verlos, es
til distinguir este marco esttico de referencia, o "espacio universal", del marco de
referencia local creado para cada modelo al aplicarle transformaciones. Recuerde tambin
que los objetos del espacio universal podran parecer completamente diferentes, o incluso
no verse en absoluto, dependiendo de la configuracin de las luces y la cmara, pero que la
posicin de la cmara no cambia la ubicacin de los objetos en el espacio universal.
Cmaras y proyecciones
Los programadores que trabajan en 2-D estn acostumbrado a colocar los elementos de
dibujo primitivos en una pantalla bidimensional. Al crear una escena 3-D, es importante
recordar que, en realidad, se est creando una representacin 2-D de los objetos 3-D. Dado
que una escena 3-D tiene un aspecto diferente dependiendo del punto de vista del
espectador, debe especificar ese punto de vista. La clase Camera permite especificar este
punto de vista para una escena 3-D.

Otra manera de entender cmo se representa una escena 3-D en una superficie 2-D consiste
en describir dicha escena como una proyeccin sobre la superficie de
visualizacin. ProjectionCamera permite especificar proyecciones diferentes y sus
propiedades para cambiar la manera en que el espectador ve los modelos 3-
D. PerspectiveCamera especifica una proyeccin en escorzo de la escena. En otras
palabras, PerspectiveCamera proporciona una perspectiva de punto de fuga. Puede
especificar la posicin de la cmara en el espacio de coordenadas de la escena, la direccin
y el campo de visin de la cmara, y un vector que define la direccin "hacia arriba" en la
escena. En el diagrama siguiente se muestra la proyeccin de PerspectiveCamera.

Las propiedades NearPlaneDistance y FarPlaneDistance de ProjectionCamera limitan el


intervalo de proyeccin de la cmara. Dado que las cmaras se pueden ubicar en cualquier
parte de la escena, es posible situarlas dentro de un modelo o muy cerca de l, con lo que
resultara difcil distinguir correctamente los objetos. NearPlaneDistance permite especificar
una distancia mnima a la cmara a partir de la cual no se dibujarn objetos. A la
inversa, FarPlaneDistance permite especificar una distancia mxima a la cmara, ms all
de la que no se dibujarn objetos, lo que garantice que no se incluyan en la escena aquellos
objetos que estn demasiado lejos para ser reconocibles.
OrthographicCamera especifica una proyeccin ortogonal de un modelo 3-D sobre una
superficie visual 2-D. Al igual que otras cmaras, especifica una posicin, direccin de
visualizacin y direccin "hacia arriba". Sin embargo, a diferencia
de PerspectiveCamera, OrthographicCamera describe una proyeccin que no incluye la
perspectiva en escorzo. Es decir, OrthographicCamera describe un cuadro de vista cuyos
lados son paralelos, en lugar de uno cuyos lados convergen en un punto de la cmara. La
imagen siguiente muestra el mismo modelo visto con PerspectiveCamera y
conOrthographicCamera.

Elementos primitivos de modelo y de malla

Model3D es la clase base abstracta que representa un objeto 3-D genrico. Para compilar
una escena 3-D, necesita algunos objetos que ver; los objetos que componen el grfico de
escena se derivan de la clase Model3D. En la actualidad, WPF permite geometras de
modelado con GeometryModel3D. La propiedad Geometry de este modelo acepta un
elemento primitivo de malla.

Para crear un modelo, comience por crear un elemento primitivo, o malla. Un elemento 3-D
primitivo es una coleccin de vrtices que constituyen una entidad 3-D nica. La mayora de
los sistemas 3-D proporcionan elementos primitivos modelados a partir de la figura cerrada
ms simple: un tringulo definido por tres vrtices. Dado que los tres puntos de un tringulo
son coplanares, puede seguir agregando tringulos para modelar formas ms complejas,
denominadas mallas.

El sistema 3-D de WPF proporciona actualmente la clase MeshGeometry3D, que permite


especificar cualquier geometra; en este momento, no admite elementos 3-D primitivos
predefinidos, tales como esferas o formas cbicas. Empiece por
crear MeshGeometry3D especificando una lista de vrtices de tringulos como su
propiedad Positions. Cada vrtice se especifica como un Point3D. Segn cul sea la
geometra, la malla puede estar compuesta de muchos tringulos, algunos de los cuales
compartirn las mismas esquinas (vrtices). WPF necesita informacin sobre qu tringulos
comparten qu vrtices para dibujar la malla correctamente. Esta informacin se
proporciona especificando una lista de ndices de tringulos con la
propiedad TriangleIndices. Esta lista especifica el orden en el que los puntos especificados
en la lista Positions determinarn un tringulo.

Aplicar materiales al modelo

Para que una malla parezca un objeto tridimensional, debe tener una textura aplicada que
cubra la superficie definida por sus vrtices y tringulos, de manera que se pueda iluminar y
proyectar por la cmara. En 2-D, se utiliza la clase Brush para aplicar colores, patrones,
degradados y otro contenido visual a las reas de la pantalla. El aspecto de los objetos 3-D,
sin embargo, depende del modelo de iluminacin, no slo del color o del patrn que se les
aplica. Los objetos reales reflejan la luz de manera distinta segn la calidad de su superficie:
las superficies satinadas y brillantes no tienen el mismo aspecto que las superficies speras
o mates, y algunos objetos parecen absorber la luz, mientras que otros la emiten. Puede
aplicar a los objetos 3-D los mismos pinceles que a los objetos 2-D, pero no directamente.

Para definir las caractersticas de la superficie de un modelo, WPF utiliza la clase


abstracta Material. Las subclases concretas de Material determinan algunas de las
caractersticas del aspecto de la superficie del modelo y, adems, cada una de ellas
proporciona una propiedad Brush a la que puede pasar SolidColorBrush, TileBrush o
VisualBrush.

DiffuseMaterial especifica que el pincel se aplicar al modelo como si estuviera


iluminado con una luz difusa. Utilizar DiffuseMaterial es lo que ms se parece al uso
directo de pinceles en los modelos 2-D; las superficies del modelo no reflejan la luz
como si brillasen.

SpecularMaterial especifica que el pincel se aplicar al modelo como si la superficie


del modelo fuese dura o brillante, capaz de reflejar la iluminacin. Puede establecer
el grado en que la textura sugerir esta cualidad de reflexin, o "brillo",
especificando un valor para la propiedad SpecularPower.

EmissiveMaterial permite especificar que la textura se aplicar como si el modelo


estuviera emitiendo luz del mismo color que el pincel. Esto no convierte el modelo en
una luz; sin embargo, participar de manera diferente en el sombreado que si se
aplica textura con DiffuseMaterial o SpecularMaterial.

Iluminar la escena
Las luces de los grficos 3-D hacen lo mismo que las luces en el mundo real: permiten ver
las superficies. Ms concretamente, las luces determinan qu parte de una escena se
incluye en la proyeccin. Los objetos de luz en WPF crean gran variedad de efectos de luz y
sombra y siguen el modelo de comportamiento de diversas luces del mundo real. Debe
incluir por lo menos una luz en la escena, pues de lo contrario no habr ningn modelo
visible.

Las luces siguientes se derivan de la clase base Light:

AmbientLight: proporciona iluminacin de ambiente que ilumina uniformemente


todos los objetos sin tener en cuenta su ubicacin u orientacin.

DirectionalLight: ilumina como una fuente de luz distante. Las luces direccionales
tienen Direction, que se especifica como Vector3D, pero ninguna ubicacin concreta.

PointLight: ilumina como una fuente de luz cercana. Las luces puntuales tienen
posicin y emiten la luz desde esa posicin. Los objetos de la escena se iluminan
dependiendo de su posicin y distancia con respecto a la luz. PointLightBase expone
una propiedad Range, que determina una distancia ms all de la cual la luz no
iluminar los modelos. PointLight tambin expone propiedades de atenuacin que
determinan cmo disminuye la intensidad de la luz con la distancia. Puede
especificar interpolaciones constantes, lineales o cuadrticas para la atenuacin de la
luz.

SpotLight: hereda de PointLight. Los focos de luz iluminan como las luces puntuales,
y tienen posicin y direccin. Proyectan la luz en una rea cnica establecida por las
propiedades InnerConeAngle y OuterConeAngle, especificadas en grados.

Transformar modelos
Al crear modelos, stos tienen una ubicacin determinada en la escena. Para mover esos
modelos por la escena, girarlos o cambiar su tamao, no es prctico cambiar los vrtices
que definen los propios modelos. En lugar de ello, al igual que en 2-D, se aplican
transformaciones a los modelos.

Cada objeto del modelo tiene una propiedad Transform con la que puede mover, reorientar o
cambiar el tamao del modelo. Al aplicar una transformacin, en realidad lo que se hace es
desplazar todos los puntos del modelo segn un vector o valor especificado por la
transformacin. Es decir, se transforma el espacio de coordenadas en el que se ha definido
el modelo ("espacio del modelo"), pero no se cambian los valores que constituyen la
geometra del modelo en el sistema de coordenadas de la escena completa ("espacio
universal").

Animar modelos

La implementacin de 3-D en WPF utiliza el mismo sistema de control de tiempo y


animacin que los grficos 2-D. En otras palabras, para animar una escena 3D, se animan
las propiedades de sus modelos. Es posible animar directamente las propiedades de los
elementos primitivos, pero suele ser ms fcil animar las transformaciones que cambian la
posicin o el aspecto de los modelos. Dado que las transformaciones se pueden aplicar a los
objetos Model3DGroup as como a los modelos individuales, es posible de aplicar un
conjunto de animaciones a un elemento secundario de Model3DGroup y otro conjunto de
animaciones a un grupo de objetos secundarios. Para animar un objeto en WPF, se crea una
escala de tiempo, se define una animacin (que, en realidad, es un cambio de algn valor de
propiedad a lo largo del tiempo) y se especifica la propiedad a la que aplicar la
animacin. Dado que todos los objetos de una escena 3-D son elementos secundarios
de Viewport3D, las propiedades de destino de cualquier animacin que desea aplicar a la
escena son propiedades de propiedades de Viewport3D.

Agregar contenido 3D a la ventana

Para representar la escena, agregue modelos y luces a Model3DGroup, a continuacin,


establezca Model3DGroup en el Content de ModelVisual3D.Agregue ModelVisual3D a la
coleccin Children de Viewport3D. Agregue cmaras a Viewport3D, estableciendo su
propiedad Camera.
Finalmente, agregue Viewport3D a la ventana. Cuando se incluye Viewport3D como
contenido de un elemento de diseo, como Canvas, debe especificar el tamao de
Viewport3D estableciendo las propiedades Height y Width (heredadas
de FrameworkElement).

Potrebbero piacerti anche