随笔分类 -  渲染

摘要:今天花了些时间写了一个四元数的算法类,提供了四元数的基本操作,四元数乘法,Log,Exp,Power和球面插值,四方体插值的功能.四元数在平滑插值和表示旋转变换上能比矩阵提供更快速和方便的算法.它的表达形式是W + Xi + Yj + Zk 是一个4维复数空间的值. 其中W = theta/2, (x,y,z)是旋转轴 阅读全文
posted @ 2005-03-28 17:22 BadKeeper 阅读(2684) 评论(4) 推荐(0)
摘要:场景管理机制能使引擎更加有效率的进行碰撞测试,拾取算法,阴影算法,裁剪算法等需要遍历整个场景的各种操作.而且对骨骼动画也有天生的好处. 通常我们把场景中物体的层次关系用一张场景图(Scene Graph)来表示.场景图中最下层的叶子节点是几何体.场景中所有的几何体数据都只存在于叶子节点中.场景中除叶子外,每个节点都有1个以上的子节点,除最初的节点外,每个节点有且只有一个父节点. 每个节点所处的坐标系都是不同的,每个节点中都包含了一个Local Transform,用来记录从当前坐标系到父坐标系的线性变换. 初节点的Local Transform表示它到World坐标系... 阅读全文
posted @ 2005-03-24 15:59 BadKeeper 阅读(812) 评论(0) 推荐(0)
摘要:今天终于把Seralization 的基本框架搭好了,简单的测试了一下,存储没问题,读取好像还有点问题.由于现在还没有写由Object派生出来的类,测试不出什么东西,等把场景管理的部分完成后再回来改. 由于整个Seralization的机制比较烦琐,我今天把整个思路整理一下,一是作为交流,另外也作为CoagelEngine的开发文档. Seralization 又叫串行化,简单的讲,就是一种保存当前运行程序的状态,下次运行程序时可以将被保存的状态提取出来,这样就可以从上次保存的状态开始往后运行.在游戏设计中,这也就是所谓的存档/读档功能. 那么Seralization如何才能实现呢. 在... 阅读全文
posted @ 2005-03-22 20:16 BadKeeper 阅读(322) 评论(0) 推荐(0)
摘要:今天终于把Seralization 的基本框架搭好了,简单的测试了一下,存储没问题,读取好像还有点问题.由于现在还没有写由Object派生出来的类,测试不出什么东西,等把场景管理的部分完成后再回来改. 由于整个Seralization的机制比较烦琐,我今天把整个思路整理一下,一是作为交流,另外也作为CoagelEngine的开发文档. Seralization 又叫串行化,简单的讲,就是一种保存当前运行程序的状态,下次运行程序时可以将被保存的状态提取出来,这样就可以从上次保存的状态开始往后运行.在游戏设计中,这也就是所谓的存档/读档功能. 那么Seralization如何才能实现呢... 阅读全文
posted @ 2005-03-22 20:14 BadKeeper 阅读(2343) 评论(2) 推荐(0)
摘要:利用这个机制,就可以随时还原场景结构图了.当然每当程序创建了一个新实例,都必须register到场景表中,这样才能保证在存储是每个实例的内容都被存到的Stream(也就是最下面那个结构块)中.实例之间的关系是在所有实例都重建后才建立的. 需要注意的是 Stream中保存的实例指针之能作为实例的标示符,因为重新创建实例后,该实例的指针和Stream中的(即上次保存的指针)是不相同的.正是因为这个原因,才不能在实例的重建过程中就之间建立实例关系. 所以才会在创建完成后Update Stream.将实例指针更新.RTTI : Runtime Type Information 阅读全文
posted @ 2005-03-20 22:41 BadKeeper 阅读(1157) 评论(2) 推荐(0)
摘要:今天总算把串行化和物体的关联关系管理想明白了.利用STL的map,把类实例的指针当标示符.加上RTTI的获取类的类型的功能,就能实现Object Factory的方法了.把stream里的内容都读出来,动态的决定是创建什么类(这个时候可以把类的非指针成员变量的值都得到),全部创建完后才根据早先保留的类之间的关系图来进一本将新创建的类相互联系起来(这个过程是获得类的指针成员变量值).这样就可以实现存档读档功能了. 明天实验室要去春游,具体的代码实现拖延到后天. 下一步是创建基本物体的抽象类型了.在此之前需要把算法库完成.3D算法方面主要是矩阵,向量,四元数,其中SVD,QL,L... 阅读全文
posted @ 2005-03-18 17:02 BadKeeper 阅读(918) 评论(1) 推荐(0)
摘要:今天开始正式制作引擎,名字就暂定为CoagleEngine吧.为了方便,暂时在MFC框架下开发.之前已经作了很多效果的demo,但是还是第一次架构规模如此庞大的工程,很棘手啊.看来会很长时间不能玩游戏了 首先要作的是RTTI的实现,既然要以软件工程的模式开发,那基础结构是很重要的. 不打算用MFC的serializationz机制,打算自己写一个.由于程序没调好,先附张以前的Demo 的截图 阅读全文
posted @ 2005-03-16 11:02 BadKeeper 阅读(1873) 评论(15) 推荐(0)