CG_10.15

看了一天TI11比赛,LGD首日表现极差,看得郁闷。计划还是学一下贴图、光照、材质,然后再搞骨骼动画,都通了再搞物理。仍是先自己摸索,再看标准做法,费点事,但是训练一下数学思维。

用assimp重写了模型加载代码,导致之前随便写的代码更乱了。下载了个有骨骼动画的模型,加载了包含diffuse、emission、specular的材质贴图,自己胡乱加减乘除出来一个勉强可看的光照渲染效果。最开始贴图贴上去不对,仔细对比发现不知道为什么贴图和原图比在Y轴上是反的,需要(1 – vex_coord.y)变换一下贴图坐标的y分量才行,花了好长时间,莫非是因为左右手坐标系的问题?没注意模型文件里是不是有坐标系的描述。

接下来摸索法线贴图的原理,然后要停下来把代码重写一遍。大概是时候认真设计一下场景、实体这些东西的数据结构,考虑如何构建基本的pipeline,支持操作模型移动旋转,然后支持UI查看编辑实体属性、帧率等调试信息。一个简单的CG程序就不太好写,涉及到的对象太多,Entity、Mesh、Vertex(Positions/Indices/Normal/TexCoord)、Texture(Texture Unit, Texture)、Material、Shader、Antimation、Bone、Camera、SceneGraph之间的关系都要理清楚,还要考虑如何组织OpenGL接口的调用,正确且清晰的处理缓存数据和状态,另外稍微有点用的程序还需要支持扩展,支持编写实体的游戏逻辑。

Leave a Reply

Your email address will not be published. Required fields are marked *