摘要:
骨骼蒙皮动画(Skinned Mesh)的原理解析(一)一)3D模型动画基本原理和分类3D模型动画的基本原理是让模型中各顶点的位置随时间变化。主要种类有Morph动画,关节动画和骨骼蒙皮动画(Skinned Mesh)。从动画数据的角度来说,三者一般都采用关键帧技术,即只给出关键帧的数据,其他帧的数据使用插值得到。但由于这三种技术的不同,关键帧的数据是不一样的。Morph(渐变,变形)动画是直接指定动画每一帧的顶点位置,其动画关键中存储的是Mesh所有顶点在关键帧对应时刻的位置。关节动画的模型不是一个整体的Mesh,而是分成很多部分(Mesh),通过一个父子层次结构将这些分散的Mesh组织在一 阅读全文
摘要:
每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。-- Christopher Alexander 设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。面向对象设计模式描述了面向对象设计过程中、特定场景下、类与相互通信的对象之间常见的组织关系。 设计模式与面向对象 面向对象设计模式解决的是“类与相互通信的对象之间的组织关系,包括它们的角色、职责、协作方式几个方面。 面向对象设计模式是“好的面向对象设计”,所谓“好的面向对象设计”是那些可以满足“应对变化,提高复用”的设计。 面向对象设计模式描述的是软件设计,因此它是独立于编程语言的,但是面向对象设... 阅读全文
摘要:
导读: DirectInput编程基础 - 简介 出 处: 中国游戏开发者 [ 2001-09-09] 作 者: 目 录 1.1 DirectInput概念 1.2 设置DirectInput 1.3 列举设备 1.4 设置设备 1.5 取得输入数据 绪言 输入相对于图形和声音而言从未成为游戏开发中的非常重要的论题。读取键盘按键、鼠标移动和游戏杆位置似乎并没有什么困难,但随着新输入设备对市场的强烈冲击以及DirectX的发行,这一问题变得日益重要了。 如果用户是DirectInput编程的新手,那么应先排除掉一些旧观念。应记住的重要一点是DirectInput的得名是因为... 阅读全文
摘要:
typedef struct _D3DPRESENT_PARAMETERS_ { UINT BackBufferWidth, BackBufferHeight; D3DFORMAT BackBufferFormat; UINT BackBufferCount; D3DMULTISAMPLE_TYPE MultiSampleType; DWORD MultiSampleQuality; D3DSWAPEFFECT SwapEffect; HWND hDeviceWindow; BOOL Windowed; BOOL EnableAutoDepthStencil; D3DFORMAT AutoDe 阅读全文
摘要:
光照的两大要素是光源和物体的材质,物体表面材质属性决定了它能反射什么颜色的光线以及反射多少光线。一、Direct3D中材质的定义D3D中材质通过D3DMATERIAL9结构来表示:typedef struct D3DMATERIAL9 { D3DCOLORVALUE Diffuse; D3DCOLORVALUE Ambient; D3DCOLORVALUE Specular; D3DCOLORVALUE Emissive; float Power;} D3DMATERIAL9, *LPD3DMATERIAL9;Diffuse-指定表面反射的漫反射光。Ambient-指定表面反射的环境光。Spe 阅读全文
摘要:
D3DXCreateTextureFromFileEx上次在玩公告板时,用到了D3DXCreateTextureFromFileEx函数,上次的主要目的是公告板,对这个函数没太多的关心,现在发现这个函数是D3DXCreateTextureFromFile的高级板本,还是有它优势的,不然它就没有存在的意义了。D3DXCreateTextureFromFileEx这个函数有14个参数,在MSDN中的原型(后面中文解释为本人理解,仅供参考,原文请查看MSDN):HRESULT D3DXCreateTextureFromFileEx( LPDIRECT3DDEVICE9 pDevice, ... 阅读全文
摘要:
在D3D中有3种类型的灯光,用它们可以让3D世界显得真实 。一、灯光类型1、点光(Point Light) 从一个点向周围均匀发射的光,有最大的照明范围,亮度随距离衰减,最明显的一个例子就是我们家里用的灯泡。2、方向光(Directional Light) 方向光是一组没有衰减的平行光,类似太阳光的效果。3、聚光灯(Spot Light) 最复杂的一种灯,有光源点位置、有方向、有范围、有发光的内径和外径,光照强度还会随距离衰减。类似的例子是电筒。二、灯光结构D3D中灯光通过D3DLIGHT9结构来表示:typedef struct D3DLIGHT9 { D3DLIGHTTYPE Typ... 阅读全文
摘要:
当我们在编写地形、BOX或者天空盒等的网格与网格连接处常常会看到有的地方会出现一条缝隙之类的,这个要怎么解决呢?其实不难,还记得学过的DirectX提供的纹理寻址里面的镜像纹理寻址、重叠纹理寻址、边框颜色纹理寻址、一次镜像纹理寻址、夹取纹理寻址,这里我把纹理寻址的枚举类型写出来,看不懂就去查查SDK;typedef enum D3DTEXTUREADDRESS{ D3DTADDRESS_WRAP = 1, D3DTADDRESS_MIRROR = 2, D3DTADDRESS_CLAMP = 3, D3DTADDRESS_BORDER = 4, D3DTADDRESS_MIRRORONCE = 阅读全文
摘要:
CreateVertexBuffer的形参说明HRESULT CreateVertexBuffer( UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle);length:指定缓冲区的大小,以字节为单位。Usage:指定顶点缓冲区的属性,可以设置成0:FVF:这个就用到了我们上面创建的灵活顶点格式Pool:指定顶点缓冲区的内存类型。我们采用的是D3DPOOL_DEFAULT,意思是顶点缓冲区尽可能存在显存中。其 阅读全文
摘要:
IDirect3DVertexBuffer9::LockLocks a range of vertex data and obtains a pointer to the vertex buffer memory.HRESULT Lock( UINT OffsetToLock,自缓存的起始点到开锁定的位置的偏移量 UINT SizeToLock,所要锁定的字节数 VOID ** ppbData,指向锁定存储区的起始位置的指针 DWORD Flags改标记描述了锁定方式 ); 注:当OffsetToLock和SizeToLock都为0时,锁定整个缓存 ParametersOffsetToLock 阅读全文