天行健 君子当自强而不息

2008年6月14日

     摘要: 哈希表和哈希函数是大学数据结构中的课程,实际开发中我们经常用到Hashtable这种结构,当遇到键-值对存储,采用Hashtable比 ArrayList查找的性能高。为什么呢?我们在享受高性能的同时,需要付出什么代价,那么使用Hashtable是否就是一桩无本万利的买卖呢?就此疑问,做以下分析,希望能抛砖引玉。  阅读全文
posted @ 2008-06-14 12:56 lovedday 阅读(5102) | 评论 (5)编辑 收藏
     摘要: 在三维图形程序设计中,网格模型占有非常重要的地位,而且也是比较复杂的部分,特别是包含动画和蒙皮信息的网格模型。

.x文件格式最初是为传统的Direct3D保留模式而设计的,在DirectX 6.0问世后,针对立即模式对它作过一次扩展。要想在Direct3D程序中灵活自如地使用网格模型,应当深入理解.x文件格式。   阅读全文
posted @ 2008-06-14 10:25 lovedday 阅读(7022) | 评论 (2)编辑 收藏

2008年6月13日

     摘要: OBJ文件是Alias|Wavefront公司为它的一套基于工作站的3D建模和动画软件"Advanced Visualizer"开发的一种标准3D模型文件格式,很适合用于3D软件模型之间的互导,也可以通过Maya读写。比如你在3dsMax或 LightWave中建了一个模型,想把它调到Maya里面渲染或动画,导出OBJ文件就是一种很好的选择。目前几乎所有知名的3D软件都支持OBJ文件的读写,不过其中很多需要通过插件才能实现。

  OBJ文件是一种文本文件,可以直接用写字板打开进行查看和编辑修改。另外,有一种与此相关二进制文件格式(*.MOD),其作为专利未公开,因此这里不作讨论。  阅读全文
posted @ 2008-06-13 17:12 lovedday 阅读(38606) | 评论 (0)编辑 收藏
     摘要: 一个网格模型中可以包含多个动画集,在渲染网格时通过动画控制器可以在各个动画集之间进行切换,从而可以在渲染网格模型时根据具体情况播放不同的动画。这里将具有多个骨骼动画的网格模型称为"多骨骼动画网格模型",当然骨骼动画网格模型也完全可以具有蒙皮信息,下面的示例程序演示了渲染多骨骼动画网格模型时骨骼动画之间的切换,骨骼动画间的切换是通过动画控制器来完成的。  阅读全文
posted @ 2008-06-13 14:35 lovedday 阅读(3412) | 评论 (0)编辑 收藏
     摘要: cSkinMesh类的实现与cAnimMesh的实现基本相同,区别在以下几点。

首先是在load_from_xfile()中增加了对网格模型骨骼矩阵的保存,接下来是DrawMeshContainer()的实现,该函数负责当前网格容器中具体网格模型的渲染.  阅读全文
posted @ 2008-06-13 13:11 lovedday 阅读(2912) | 评论 (0)编辑 收藏
     摘要: 蒙皮骨骼动画网格模型接口是对上一节骨骼动画网格模型接口的扩展,添加了处理蒙皮信息的功能。

为了在网格模型中包含蒙皮信息,需要进一步扩展D3DXMESHCONTAINER_DERIVEED。  阅读全文
posted @ 2008-06-13 12:39 lovedday 阅读(3279) | 评论 (2)编辑 收藏

2008年6月12日

     摘要: Direct3D通过索引顶点混合,扩展了使用多个混合矩阵对顶点进行混合的支持。在索引顶点混合中,混合矩阵被保存在矩阵调色板(可以看成一个矩阵数组)中,使用矩阵索引来引用特定的混合矩阵。矩阵索引使用8位无符号整数表示,由每个顶点提供,因为Direct3D中限定每个顶点最多受到4个混合矩阵的影响,所以每个顶点最多具有4个矩阵索引,每个顶点的矩阵索引被组合成一个DWORD类型的整数存储和表示。因为每个顶点最多受4个混合矩阵的影响,所以在渲染一个三角形时最多可能需要使用12个混合矩阵,在这种情况下,矩阵调色板中最少需要包含12个混合矩阵。  阅读全文
posted @ 2008-06-12 10:17 lovedday 阅读(2785) | 评论 (0)编辑 收藏

2008年6月11日

     摘要: 在骨骼动画网格模型中,骨骼的变动导致躯体网格模型的改变,于是就有了骨骼动画。网格模型是由一个个顶点构成的,如果任意一个顶点只受一块骨骼影响,那么网格模型在运动时很容易出现裂缝,特别是在一些结合部位,如肩关节、肘关节等。尽管可以使用缝合技术缩小这些裂痕,但当关节的旋转比较极端时,例如前臂绕肘关节旋转120度时,就会在肘关节处出现一个较大的剪缺。这是因为只有一个多边形跨越在上臂和前臂之间的整个间隙,间隙越大,裂缝就越大,最终的渲染效果也越差。  阅读全文
posted @ 2008-06-11 20:20 lovedday 阅读(2541) | 评论 (0)编辑 收藏
     摘要: 使用cAnimMesh类包含3个步骤,首先在回调函数OnCreateDevice()中创建cAnimMesh类的实例,接着在回调函数OnFrameRender()中渲染网格模型,最后在回调函数OnDestroy()中释放网格模型。  阅读全文
posted @ 2008-06-11 16:02 lovedday 阅读(1995) | 评论 (0)编辑 收藏
     摘要: 类cAnimMesh是最关键的一个类,所有与骨骼动画相关的具体实现细节都封装在该类中,该类还定义了类cAllocateHierarchy的一个对象m_alloc_hierarchy,该对象完成从文件中加载动画网格模型的骨骼层次结构、动画数据以及其他用于绘制模型的几何数据。  阅读全文
posted @ 2008-06-11 15:46 lovedday 阅读(3289) | 评论 (1)编辑 收藏
仅列出标题  下一页

公告

导航

统计

常用链接

随笔分类(178)

3D游戏编程相关链接

搜索

最新评论