准备

  IDE:Visual Studio

  开源库:GitHub.SharpDx

  入门示例:SharpDX_D3D12HelloWorld

  为什么选择 SharpDx?

  SharpDx 库与 UWP 兼容,其他如 SharpGL 不兼容

  如果你是 C# 开发者,Unity3D 会是更好的选择

  Direct3D 是底层的 3D 图形库,通过接触它你可以学习到很多底层图形编程知识

  了解底层知识会使你在接触并使用 Unity3D 等引擎时更加得心应手

第一节 世界

  世界坐标系是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考框架。

  世界坐标系

  从另一方面说,不能用更大的、外部的坐标系来描述世界坐标系

  关于世界坐标系的典型问题都是关于初始位置和环境的:

  • 每个物体的位置和方向
  • 摄像机的位置和方向
  • 世界中每一点的地形是什么(如山丘、建筑、湖泊等)
  • 一个物体从哪里来,到哪里去(NPC 的运动策略)

  左、右手坐标系

  所有的 2D 坐标系是等价的,但 3D 坐标系有“手性”之分

  左、右手坐标系可以互相转换,最简单的方法是只翻转一个轴的符号

  传统的计算机图形学使用左手坐标系,而线性代数则倾向于使用右手坐标系

  SharpDx 采用左手坐标系,即 X 轴由右向左,Y 轴由下至上,Z 轴由里至外

  SharpDx 的世界有多大

  首先,这个世界是有限且离散的

  描述三维坐标需要使用 SharpDx 或 System.Numerics 命名空间下的 Vector3 类型

  Vector3 表示一个三维向量,它的 x,y,z 分量都是float类型(单精度浮点数),我们知道 float 范围是 -3.40E+38 ~ +3.40E+38

  而原子的直径是 0.1nm 级别,若以它作为基本单位,那么这个世界大约是一个边长 6.80E+25 公里的方盒(约 71877 亿光年)

  这个世界足够大吗

  目前认为银河系直径是 10~12 万光年,宇宙可视直径是 920 亿光年

  单精度浮点数可精确到小数点后 6 位,即当前世界最小分辨率是 10-6 倍原子大小

  离散的 float 类型足以描述现实世界吗?

  向你介绍计算机图形学第一准则:

  近似原则,如果它看上去是对的它就是对的。

 

UWP简单示例(二):快速开始你的3D编程
Imports SharpDX
''' <summary>
''' 表示一个三维世界
''' </summary>
Public Interface IWorld
    ''' <summary>
    ''' 模型顶点变换矩阵的数组
    ''' </summary>
    ''' <returns></returns>
    Property ModelMatrix As Matrix()
    ''' <summary>
    ''' 更新模型顶点变换矩阵
    ''' </summary>
    Sub Update()
End Interface
VB.NET-IWorld

相关文章:

  • 2021-11-03
  • 2021-06-01
  • 2021-08-23
  • 2021-05-17
  • 2021-11-07
  • 2021-11-01
猜你喜欢
  • 2021-11-13
  • 2021-11-12
  • 2018-08-30
  • 2018-09-13
  • 2021-11-30
相关资源
相似解决方案