天天看點

WPF 3D 常用類(1)幾何資料相關類模型相關類 (模型=幾何資料+變形(位置,旋轉,尺寸)+材質)視覺相關類 (包含一個Model3D對象)UIElement3D(支援事件)

抽象類, 用于定義物體的幾何資料, 可用于計算HitTest和BoundingBox

Geometry3D的子類, 定義網格的頂點, 三角形頂點, 法線, Texture(紋理)的座标

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

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

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就可以呈現出不同的物體.

WPF 3D 常用類(1)幾何資料相關類模型相關類 (模型=幾何資料+變形(位置,旋轉,尺寸)+材質)視覺相關類 (包含一個Model3D對象)UIElement3D(支援事件)

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; }

}

Visual3D的子類, 增加了Content, Children等屬性

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

負責渲染3D對象, HitTest, 大緻由Camera + 一組ModelVisual3D對象(Lights + 多個GeometryModel3D對象)

用于把一個2D對象,比如Button, TextBlock放在一個3D物體上

把一組3D對象繪制在2D對象上

UIElement3D

ModelUIElement3D : 和ModelVisual3D類似, 但支援事件
ContainerUIElement3D : 一組ModelUIElement3D的集合, 但不表現自己