您的位置:首页 > 其它

WPF中的3D特性和常见的几个类

2010-11-28 20:26 316 查看
1. Visual 类

所有二维可视化元素的基类,为 WPF 中的呈现提供支持,其中包括命中测试、坐标转换和边界框计算。

Visual 对象是一个核心 WPF 对象,其主要作用是提供呈现支持。用户界面控件(例如 Button 和 TextBox)派生自 Visual 类,并使用 Visual 定义的属性来保存它们所呈现的数据。Visual 对象可对下列功能提供支持:

输出显示:为可视对象呈现持久的序列化绘图内容。
转换:对可视对象执行转换。
剪辑:为可视对象提供剪辑区域支持。
命中测试:确定指定的坐标(点)或几何图形是否包含在可视对象的边界内。
边界框计算:确定可视对象的边框。

2. Visual3D 类

所有三维可视化元素的基类,提供可视三维对象通用的服务和属性,其中包括命中测试、坐标转换和边界框计算。

3. Viewport3D类

为三维可视内容提供呈现图面。

此控件显示三维内容,同时提供与二维布局(如剪辑、高度和宽度及鼠标事件)一致的属性。

当此控件作为布局元素(如 Canvas)的内容包含时,可通过设置其 Height 和 Width 属性(继承自 FrameworkElement)来指定 Viewport3D 的大小。

Viewport3D 可提供三维场景级别的命中测试。 调用 HitTest 方法可返回有关命中可视对象、模型、网格和交点的详细命中结果信息。

4. Viewport3DVisual 类

在指定的二维视区边界内呈现 Visual3D 子对象。

Viewport3DVisual 是具有三维子对象的二维 Visual 对象。Viewport3DVisual 为 Viewport3D 元素提供了必需的基础结构。 大多数用户都需要使用 Viewport3D 元素。

Viewport3DVisual 在二维 Visual 和 Visual3D 对象之间起到桥梁作用。Visual3D 类是所有三维可视化元素的基类。Viewport3DVisual 要求您定义一个 Camera 值和一个 Viewport 值。可以借助照相机来查看场景。投影映射到二维图面的区域称作视区。

继承层次结构
System..::.Object
System.Windows.Threading..::.DispatcherObject
System.Windows..::.DependencyObject
System.Windows.Media..::.Visual
System.Windows.Media.Media3D..::.Viewport3DVisual

5. Model3D 类
为三维模型提供功能的抽象类。此类对象包括 GeometryModel3D 和 Light。

继承层次结构
System..::.Object
System.Windows.Threading..::.DispatcherObject
System.Windows..::.DependencyObject
System.Windows..::.Freezable
System.Windows.Media.Animation..::.Animatable
System.Windows.Media.Media3D..::.Model3D
System.Windows.Media.Media3D..::.GeometryModel3D
System.Windows.Media.Media3D..::.Light
System.Windows.Media.Media3D..::.Model3DGroup

6. ModelVisual3D 类
包含三维模型的 Visual。提供所有可视对象通用的服务和属性,其中包括命中测试、坐标转换和边界框计算。
继承层次结构
System..::.Object
System.Windows.Threading..::.DispatcherObject
System.Windows..::.DependencyObject
System.Windows.Media.Media3D..::.Visual3D
System.Windows.Media.Media3D..::.ModelVisual3D

7. GeometryModel3D 类
创建由一个 MeshGeometry3D 和一个 Material 构成的三维模型。
继承层次结构
System..::.Object
System.Windows.Threading..::.DispatcherObject
System.Windows..::.DependencyObject
System.Windows..::.Freezable
System.Windows.Media.Animation..::.Animatable
System.Windows.Media.Media3D..::.Model3D
System.Windows.Media.Media3D..::.GeometryModel3D

8. MeshGeometry3D 类

用于生成三维形状的三角形基元。

继承层次结构
System..::.Object
System.Windows.Threading..::.DispatcherObject
System.Windows..::.DependencyObject
System.Windows.Media..::.Visual
System.Windows..::.UIElement
System.Windows..::.FrameworkElement
System.Windows.Controls..::.Viewport3D

继承层次结构
System..::.Object
System.Windows.Threading..::.DispatcherObject
System.Windows..::.DependencyObject
System.Windows.Media..::.Visual
System.Windows..::.UIElement
System.Windows..::.FrameworkElement
System.Windows.Controls..::.Viewport3D

WPF中的3D特性,其中包含了开始使用该特性的信息。

下面给出几个最重要的类的说明信息

ViewPort3D
ViewPort3D定义了3D对象的渲染表面。这个元素包含3D绘图的所有可见元素
ModelVisual3D
ModelVisual3D包含在ViewPort3D中,它包含了所有可见元素。可以给完整的模型指定变换
GeometryModel3D
GeometryModel3D包含在ModelVisual3D中,它包含网格和材质
Geometry3D
Geometry3D是一个抽象基类,定义了几何形状。派生于Geometry3D的类是MeshGeometry3D。使用MeshGeometry3D可以定义三角形的位置,建立3D模型
Material
Material是一个抽象基类,定义了MeshGeometry3D指定的三角形的前边和后边。Material包含在GeometryModel3D中。.NET 3.5定义了几个材质类,例如DiffuseMaterial、EmissiveMaterial和SpecularMaterial。根据材质的类型,以不同的方式计算灯光。EmissiveMaterial利用灯光的计算,使材质发出等于笔刷颜色的光。DiffuseMaterial使用漫射光,SpecularMaterial定义了镜面发光模型。使用MaterialGroup类可以创建由其他材质合并而成的材质
Light
Light是灯光的抽象基类。其派生类有AmbientLight、DirectionalLight、PointLight和SpotLight。AmbientLight是不自然的光,会近似照亮整个场景。使用这种光看不到边界。DirectionalLight定义了定向光。太阳光就是一种定向光,光线来自一边,此时可以看到边界和阴影。PointLight是一种位于指定位置的光,会照亮所有的方向。SpotLight照亮指定的方向。这个光定义了一个圆锥,会得到一个发出光亮的区域

Camera
Camera是摄像机的抽象基类,用于把3D场景映射为2D显示。其派生类是PerspectiveCamera、OrthographicCamera和MatrixCamera。在PerspectiveCamera中,3D对象离得越远就越小,这不同于OrthographicCamera,在Orthographic Camera中,摄像机的距离对对象的大小没有影响。在MatrixCamera中,可以在矩阵中定义视图和变换

Transform3D
Transform3D是3D变换的抽象基类。其派生类是RotateTransform3D、ScaleTransform3D、TranslateTransform3D、MatrixTransform3D和Transform3D Group。TranslateTransform3D允许在x、y和z向上变换对象,ScaleTransform3D可以重置对象的大小。RotateTransform3D可以在x、y和z向上把对象旋转指定的角度。Transform3DGroup可以合并其他变换效果

博客原址:http://blog.csdn.net/wmjcom/archive/2009/11/04/4766730.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: