3D 和 WebGL 入门基础 1

因为[哔---], 所以[哔---], 后来[哔---], 因此就有了这一系列文章. 我自己也是不久前才正式接触3D相关的内容, 如有错误, 可以留评论, 我会更正. 全文不是课本, 所以只会提到最重要的东西.


---- ---- 分割线没见过啊 ---- ----


三角形

三角形是目前3D技术的基础之一, 所有的模型基本都是靠三角形画出来的. 当然有的技术支持方形和圆形, 但是不够通用.


坐标

三围的坐标当然是x, y, z啦, 但是在不同技术里他们表示的意义是不一样的, 有时候y表示上, z表示远. 有时候z表示上, x表示远.


顶点和网格

一个模型是由各种三角形拼成的, 那么这些三角形都是由顶点(vertex)组成的, 整个模型的样子就叫网格(Mesh)模型.

最简单的顶点就是一个坐标:position, 有时候会带法向量数据, normal. 有合适的法向量数据能够容易地将不规则多面体模型变成相对均匀的模型, 所以我们在3d游戏里的模型大多是有法向量的.

如果有使用纹理, 定点还会包含一个纹理的位置数据.


纹理和材质

纹理很好理解. 但是很多系统里都有材质的概念, 材质可能包含多个纹理, 并且有一定的叠加参数.

一般的纹理是二维的, 但是也有三维和一维的.


动画

模型在了, 实现动画基本就靠计算了, 通过相关的数据计算出每一帧各个定点的位置, 然后渲染.

变形动画 (Morph Animation) 就是非常基础的技术, 保存有每一帧动画的变形参数.

骨骼动画 (Skeletal Animation) 是3D游戏中主流的动画方式.


骨头和助手

骨头 (Bone) 是骨骼动画的基础数据, 但注意骨头不是一根棍子, 而是一个点.

骨头通常存在父子关系的, 这样好处就不用说了, 就像OOP里的继承一样.

所以就有了助手的概念: 我有多个骨头想一起动, 但是使用父子关系又不合逻辑, 那么就可以将他们共同以一个"助手"为父节点.


蒙皮和蒙皮权重

蒙皮就是把骨头和定点绑定, 这样骨头动的时候, 定点也跟着动.

蒙皮权重就是一个参数, 表示骨头移动时, 定点跟着移动的程度. 


骨骼动画

有了蒙皮和骨头, 定义在关键时间骨头的变化参数, 就可以表示动画了.

这个参数通常包含位移, 旋转, 缩放. 位移一般一维, 旋转是三维或者四维, 缩放是一维或者三维.


---- ---- 切切切 ---- ----


在桌面上, 主流实现3D的技术是OpenGL和Direct3D. 在网页平台上, 排除Flash, Java等方式, HTML5里实现3D的方法就是WebGL了.

WebGL在底层实现上还是调用的OpenGL和Direct3D 9, 所以WebGL包含了他们的一些共性.

Direct3D 11虽然做了很多概念性的更新, 但是基础的一些东西还是没有变.


额外稍微说下DirectX SDK, 它本身只是一个简化Direct3D编程的SDK, 但是微软现在不再鼓励使用它了.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值