WPF 3D 常用类(1)

原文:WPF 3D 常用类(1)

几何数据相关类

Geometry3D

抽象类, 用于定义物体的几何数据, 可用于计算HitTest和BoundingBox

 

MeshGeometry3D

Geometry3D的子类, 定义网格的顶点, 三角形顶点, 法线, Texture(纹理)的座标

常用属性: Positions, TriangleIndices, Noramls, TextureCoordinates

 

模型相关类 (模型=几何数据+变形(位置,旋转,尺寸)+材质)

Model3D

抽象类, 表示一个3D模型, 子类有: Light, GeometryModel3D, Model3DGroup

 

GeometryModel3D

Model3D的子类, 不仅包含了物体的几何数据Geometry, 还包含了物体的材质Matrial, 变形Transform

<GeometryModel3D Geometry="{StaticResource myTeapot}">

  <GeometryModel3D.Material>
    <DiffuseMaterial>
      <DiffuseMaterial.Brush>
        <SolidColorBrush Color="Blue" Opacity="1.0" /></DiffuseMaterial.Brush>
      </DiffuseMaterial>
  </GeometryModel3D.Material>

  <GeometryModel3D.Transform>
    <RotateTransform3D>
      <RotateTransform3D.Rotation>
        <AxisAngleRotation3D x:Name="myAngleRotation" Axis="0,3,0" Angle="1" />
      </RotateTransform3D.Rotation>
    </RotateTransform3D>
  </GeometryModel3D.Transform>

</GeometryModel3D>

----------------------------------------------------------------------


多个GeometryModel3D的实例可以共享一个Geometry3D的实例, 只需设置不通的Material, Transform就可以呈现出不同的物体.

 

 

 

视觉相关类 (包含一个Model3D对象)

Visual3D

Visual的职责是:

  • Output display
  • Transformations
  • Hittesting
  • Clipping
  • Bounding box calculations

没有的功能包括:

  • Event handling
  • Layout
  • Styles
  • Data binding
  • Globalization

抽象类, Viewport3D.Children就是Visual3D对象的集合

Visual3D类有一个属性Visual3DModel, 该属性的类型是Model3D

class Visual3D

{

Model3D Visual3DModel { get;set; }

}

 

ModelVisual3D

Visual3D的子类, 增加了Content, Children等属性

 

容易混淆的名字 : Visual3D, ModelVisual3D, Model3D, Visual3DModel(属性名)

 

Viewport3D

负责渲染3D对象, HitTest, 大致由Camera + 一组ModelVisual3D对象(Lights + 多个GeometryModel3D对象)

       
 



Viewport2DVisual3D

用于把一个2D对象,比如Button, TextBlock放在一个3D物体上


Viewport3DVisual

把一组3D对象绘制在2D对象上

 

UIElement3D(支持事件)

UIElement3D

ModelUIElement3D : 和ModelVisual3D类似, 但支持事件

ContainerUIElement3D : 一组ModelUIElement3D的集合, 但不表现自己

时间: 2024-10-04 17:07:34

WPF 3D 常用类(1)的相关文章

WPF 3D 知识点大全以及实例

原文:WPF 3D 知识点大全以及实例 引言 现在物联网概念这么火,如果监控的信息能够实时在手机的客服端中以3D形式展示给我们,那种体验大家可以发挥自己的想象. 那生活中我们还有很多地方用到这些,如上图所示的Kinect 在医疗上的应用,当然还有体感游戏等等.   3D 用来增加视觉效果,给人以更加直观,真实的感觉. 3D如此美妙,那我们在WPF中又该从何处入手开启我们的3D编程旅程?   WPF中3D开发技术的基础知识应该有以下几点: 3D开发基础知识 WPF中3D开发的基础元素(Elemen

马士兵J2SE-第六章-常用类-基本数据类型包装类、Maths类、File类

基本数据类型包装类 public class test { public static void main(String[] args) { Integer i=new Integer(100); Double d=new Double("123.456"); int j=i.intValue()+d.intValue(); float f=i.floatValue()+d.floatValue(); System.out.println(j); System.out.println(

WPF 3D 小小小小引擎 - &amp;#183;WPF 3D变换应用

原文:WPF 3D 小小小小引擎 - ·WPF 3D变换应用         WPF可以提供的3D模型使我们可以轻松地创建3D实体,虽然目前来看还很有一些性能上的问题,不过对于一些简单的3D应用应该是可取的,毕竟其开发效率高,而且也容易上手.         下面给大家演示的是使用在WPF 3D上实现视角变换,通过鼠标拖动来变换观察视角,通过滚轮来放缩视距. 有关3D的基础知识可以参考MSDN文档:三维图形概述             首先创建一个3D立方体,立方体是由六个面构成(F1, F2

android 系统层 常用类介绍

类名 功能介绍 示意图 surfacemanager为应用程序显示2d和3d程序无缝结合 mediaFramework 基于packetvideocore 该库支持常见视频图片格式的回放和录放譬如mp3,jpg等等 sqlite 对任何程序功能强劲的关系型数据库 open el es 该库用于3d硬件加速或者高度优化的3d软加速(类似于windows上directx库) sgl 2d渲染引擎google以skia为核心的渲染引擎 freetype 位图 矢量图的显示 webkit z最新的web

JSP与JavaMail之2(常用类介绍)

js 3.JavaMail的常用类介绍  事先说明:  没用过JavaMail的人可能看不懂这些介绍,不过不要紧,后面的文章有具体的实例,到时也可倒回来查看这些类的用法.  (1) javax.mail.Properties类  JavaMail需要Properties来创建一个session对象.它将寻找字符串"mail.smtp.host",属性值就是发送邮件的主机.  用法:  Properties props = new Properties ();  props.put(&q

使用.net framework中常用类在2.0版中的新功能

在上一篇<浏览.NET Framework 2.0 类型库中新增的常用功能>一文中我主要列了几个新增的常用主件,本文作为小结主要针对一些常用类的扩展来讲最近在使用C# 2.0 的时候发现的几个新特征,讲得不当之处请网友指正. 1.Exception异常基类在2.0下,Exception基类增加了Data属性,原型如下,public virtual IDictionary Data {get;}可见其实现了IDictionary接口,用来存储异常的自定义信息,由此想到在ExceptionMana

MFC中常用类、宏、函数的简单介绍

闲来无事,整理了一下MFC中常用的类.宏.函数. 常用类 CRect:用来表示矩形的类,拥有四个成员变量:top left bottom right.分别表是左上角和右下角的坐标.可以通过以下的方法构造: CRect( int l, int t, int r, int b ); 指明四个坐标 CRect( const RECT& srcRect ); 由RECT结构构造 CRect( LPCRECT lpSrcRect ); 由RECT结构构造 CRect( POINT point, SIZE

面向对象-关于php 一些常用类 的 配置参数问题

问题描述 关于php 一些常用类 的 配置参数问题 比如我想写一个 文件上传的类文件 那么肯定要配置 上传大小 ,上传类型限制 , 还有文件命名规范 文件夹的创建规则 , 这些 配置一般要以什么样的形式定义. 比如是实例化的时候 传参 或者是外部定义 全局变量 或者是常量的形式 一般框架的做法是什么样的呢 还望不吝赐教 感激 解决方案 有些框架是通过实例化类时进行传参设置,有些是通过实例化类后配置 ,要看你是怎样去设计了,TP是后者 比如: $upload = new UploadFile();

黑马程序员 五、异常处理和常用类)

Java帮帮-IT资源分享网  五.黑马程序员-异常处理和常用类 第五篇  1.异常 异常:就是不正常,是指程序在运行时出现的不正常情况.其实就是程序中出现的问题. 这个问题按照面向对象思想进行描述,并封装成了对象.因为问题的产生有产生的原因.有 问题的名称.有问题的描述等多个属性信息存在.当出现多属性信息最方便的方式就是将这 些信息进行封装.异常就是 java 按照面向对象的思想将问题进行对象封装.这样就方便于 操作问题以及处理问题. 出现的问题有很多种,比如角标越界,空指针等都是.就对这些问