WPF 3D基础学习 - 画布、相机、Model3D(1)
如果繪制3D立方體,需繪制6個面;下面代碼繪制一個面;來逐步理解此代碼;
<Pagexmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><Grid> <Viewport3D><Viewport3D.Camera><PerspectiveCamera Position="0,0,1" x:Name="camera"></PerspectiveCamera></Viewport3D.Camera><Viewport3D.Children><ModelVisual3D><ModelVisual3D.Content><Model3DGroup ><GeometryModel3D><GeometryModel3D.Material><DiffuseMaterial Brush="Red"/></GeometryModel3D.Material><GeometryModel3D.Geometry><MeshGeometry3D Positions="0,0,0 2,0,0 2,2,0 0,2,0" TriangleIndices="0,1,2 0,2,3"></MeshGeometry3D></GeometryModel3D.Geometry></GeometryModel3D></Model3DGroup></ModelVisual3D.Content></ModelVisual3D></Viewport3D.Children></Viewport3D></Grid> </Page>?1? 3D 畫布
要畫畫總的有個畫布。Viewport3D(投影3D場景的平面)是WPF中的3D畫布,類于2D中的Canvas。<Viewport3D>
Children…
</Viewport3D>
這就是顯示3D的根元素;
2 相機
創建三維場景時,實際上是要創建三維對象的二維表示形式。 由于三維場景的外觀會因觀察者的觀察位置不同而異,因此必須指定觀察位置。而觀察位置就是由相機(Camera 類)來為三維場景指定的。
<PerspectiveCamera Position="0,0,8" x:Name="camera"></PerspectiveCamera>
此元素是相機;
3D的話一定要理解相機;否則你的圖形掛了你不知道是怎么回事;先看下圖,位置關系是: 真實物體 - 2D屏幕 - 相機;
先理解相機的Z坐標;相機位于Z軸上;如果把相機移近,等于Z坐標減小,看到的物體將變大;如果把相機移遠,等于Z坐標增大,看到的物體將變小;
把相機Z坐標由8變為20,繪制的面變小;
相機Z坐標變為1,看到繪制的面變大;
3 3D模型
Model3D 是三維對象的抽象基類。若要生成三維場景,需要一些要查看的對象,而且構成場景圖的對象必須派生自 Model3D。
要生成模型,首先生成一個基元或網格。 三維基元是一系列構成單個三維實體的頂點。?
WPF 三維系統目前提供 MeshGeometry3D 類,使用該類可以指定任何幾何形狀;它目前不支持預定義的三維基元(如球體和立方體)。?
?
ModelVisual3D 類
命名空間:
System.Windows.Media.Media3D
程序集:
PresentationCore.dll
提供一個呈現 Visual3D 對象的 Model3D。
ModelVisual3D類說明和示例參見;
https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.media.media3d.modelvisual3d?view=net-5.0
先學這么多;
總結
以上是生活随笔為你收集整理的WPF 3D基础学习 - 画布、相机、Model3D(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言结构体赋值和有指针成员的结构体赋值
- 下一篇: WPF 3D 基础学习 - 相机、裁剪、