代码改变世界

我,又回来了!

2014-07-21 12:12 by 风恋残雪, 926 阅读, 3 推荐, 收藏, 编辑
摘要:看看最近一篇随笔的纪录,居然是2012年11月的一篇,很遗憾没有坚持下来,其实好多时候都想把自己在工作过程中遇到的问题和解决方法记录下来,使自己在以后做同样的事情的时候有个参考,当然如果能帮到其他的人是最好的。最近两年一直引擎开发和维护的工作,也多少有些心得吧。本篇文章不会具体讲某个东西算是一个... 阅读全文

游戏中反向运动学(ik)的研究与简介

2012-11-12 00:05 by 风恋残雪, 5788 阅读, 0 推荐, 收藏, 编辑
摘要:反向运动学(ik),英文名称是inverse kinematics,主要应用在机器人手臂操作及计算机动画等领域,它与正向运动学即fk是相反的过程,具体定义在此不多说,感兴趣的可以看下wikipedia对于ik的定义。本文主要讲述一下我所看过的求解ik的方法。求解Ik的方法主要分为两种,一种是分析法,即通过三角函数等进行分析计算,对于骨骼数少的可以进行此种运算,但是对于链很长的情况,用此方法就行不通,有些文章对此进行了改进,可以对多个骨骼进行分析计算得出结果,比如这篇文章:A 12-DOF Analytic Inverse Kinematics Solverfor Human Motion C. 阅读全文

Improved collision detection and response简要分析与小的改进

2012-07-22 22:57 by 风恋残雪, 1002 阅读, 0 推荐, 收藏, 编辑
摘要:游戏中角色控制是不可或缺的一部分,无论是第一人称还是第三人称游戏,而角色控制有分为Kinematic 和dynamic两种,前者使用碰撞检测方法来实现,一些物理特性如重力、阻力等可以模拟出来,而后者则是基于物体的物理特性控制的,两者各有优缺点,具体可参考There are at least two ways to implement a character controller for a 3D game: Kinematic and Dynamic Character Controllers. In this post we discuss the difference and which 阅读全文

阅读一款3D引擎的方法备忘(转载)

2011-12-13 23:32 by 风恋残雪, 475 阅读, 1 推荐, 收藏, 编辑
摘要:阅读一款3D引擎的方法备忘要带着引擎系统所共有的问题去阅读,不要被具体引擎的实现思路牵着走,要思考这个引擎如何实现或绕过(如不考虑低端机)这些必然要面临的问题.首先,最重要的必须,在Debug模式下调试起来一个主场景程序,然后沿着代码流走几遍,在代码里闲逛,生成第一印象,留意基础工具设施类(如字符串内存管理),大约3小时.然后带着如下每一个问题(不分先后)去走流程,走逻辑,弄清引擎的业务处理方法.1.SetStreamSource,SetIndices,DrawIndexedPrimitive的调用是在哪里(哪个cpp哪个类的哪个函数),整个工程有几个DrawIndexedPrimitve,D 阅读全文

如何使用svn管理google code上的代码。

2011-12-08 22:40 by 风恋残雪, 1186 阅读, 0 推荐, 收藏, 编辑
摘要:最近想写个简单的骨骼动画系统,苦于代码拷起来麻烦,于是就在google code上申请了个项目空间,用于存放代码,并可以随时下载和上传。svn只是大概了解,所以在搭建简单环境的过程中不免遇到了一些问题。下面就和大家分享我遇到的问题以为解决方法。 1. google code在某些地方不能访问,这个问题改个host或者申请个vpn,更推荐前者。 2.申请project hosting过程还算简单,这里就不说了。这里说下代码上传的问题,选定要上传的文件夹然后选择import,输入你的项目所在的网址,注意是https 的,然后输入google的帐户名和项目的密码,不是google帐户的密码... 阅读全文

一个Google Docs的客户端GDocsDrive

2011-05-09 21:06 by 风恋残雪, 1881 阅读, 1 推荐, 收藏, 编辑
摘要:Google Docs作为在线协作的文档服务,目前拥有数千万的忠实用户,并对MS的的Office产品构成了巨大的挑战。相对于传统的桌面型的Office软件,Google Docs有很多明显的优势:比如可以在任何时候,任何地点的访问需要的文档。文档的协作,共享非常容易。另外,Google Docs和Google其他的服务如Gmail, Google Contact, Google Calendar可以很好的集成在一起,形成低成本的企业级应用的解决方案。据Google称,其企业级客户就有300多万家,而且这个数目还在不断地扩大。Google Docs 在2010年初开始允许用户上传任意类型的文件, 阅读全文

我的实习总结

2011-03-04 21:09 by 风恋残雪, 723 阅读, 1 推荐, 收藏, 编辑
摘要:大四了,学校的课程基本没有了,我也没有考研的打算,所以就一个人跑到了北京找工作,找工作过程还算顺利,从面试通过的公司中选了一个比较好的,忘记提一下,我面试的是游戏开发和引擎开发。结果最后到一家游戏公司做了游戏客户端开发。来公司已经1个半月了,多少有些体会,跟大家分享下。 刚来到公司,自然不会让你立马去做游戏。我从svn服务器上下下来代码,然后开始研究,主程给我一些bug,让我通过bug来修改程序。程序很大,我也不知道从何看起,只能调试程序,跟着程序走一下,看看哪里产生的逻辑错误,这样一天改一两个bug,慢慢地对程序有些了解。由于我是年底来的,所以过了两星期就要回家了,而我对整个程序运行的流程. 阅读全文

如何学好3D游戏引擎编程(转载)

2011-02-16 11:54 by 风恋残雪, 5558 阅读, 5 推荐, 收藏, 编辑
摘要:此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰 ——阿哲VS自己 QQ79134054多希望大家一起交流与沟通这篇文章是我一年半前,找工作时候写的,那时是发到学校的BBS上。现在我工作了,想法和以前也有不同,但对游戏引擎编程理念还是基本差不多。在我没遇到U3以前,一直研究WILDMAGIC,可以说是GAMEBRYO的前身吧,他们基本框架都差不多,是完全面向对象,代码容易读,但它发展存在严重的弊端,这个也是它为什么不是牛B引擎的原因。但从渲染和动画方面来看,U3的 MATERIAL TREE 和 ANIM TREEE 阅读全文

边标志法填充多边形

2010-12-04 22:11 by 风恋残雪, 831 阅读, 0 推荐, 收藏, 编辑
摘要:这里不仔细讲原理,只是把我写的算法发出来,跟大家分享下,如果有错误的话,还请大家告诉我,如果写的不好,也请指出来,一起讨论进步。基本思想: 先用一种特殊的颜色在帧缓冲器中将多边形的边界(水平边界除外)勾画出来,然后将着色的像素点依x坐标递增的顺序两两配对,再将每一对像素所构成的扫描线区间内的所有像素置为填充色。具体分为两个步骤;(1) 打标记。对多边形的每条边进行直线扫描转换。(2) 填充。 对每条与多边形相交的扫描线,依从左到右顺序,按“左闭右开”的原则对扫描线上的像素点进行填充。使用一个布尔量inside来指示当前点的状态,若点在多边形内,则inside为真,否则为假。inside初值为假 阅读全文

改进的有效边表算法,多边形的扫描转换

2010-12-04 21:51 by 风恋残雪, 3421 阅读, 1 推荐, 收藏, 编辑
摘要:这里不仔细讲原理,只是把我写的算法发出来,跟大家分享下,如果有错误的话,还请大家告诉我,如果写的不好,也请指出来,一起讨论进步。边表构造的算法:(1) 首先构造一个纵向链表,链表的长度为多边形所占有的最大扫描线数,链表的每个结点,称为一个桶,则对应多边形覆盖的每一条扫描线。(2) 将每条边的信息链入与该边最小y坐标相对的桶处。也就是说,若某条边的较低点为ymin,则该边就放在相应的扫描线中。(3) 每条边的数据形成一个结点,内容包括:该扫描线与该的初始交点x(即较低端点的x值),1/k,以及该边的最大y值ymax如下:x|ymin  ymax  1/k  next(4) 同一桶中若干条边按x| 阅读全文