3D 程序员面试题
[三维 /OGRE ] 2010-07-10 19:48:57 阅读 292 评论 0 字号:大中小 订阅
下面是一技术问题,用于考察应聘人员的各方面的知识程度。回答请尽量详细,最好能举例说明。
一、一些 3D 问题:
(公司使用的是 D3D,如果不熟,用 OpenGL 举例回答也可以)
1.请介绍 D3D 或 OpenGL 中渲染对象时需要设置的 3 个矩阵及它们各自的作用
世界矩阵(World Matrix)、视图矩阵(View Matrix)以及投影矩阵(Projection Matirx);
世界矩阵确定一个统一的世界坐标,用于组织独立的物体形成一个完整的场景;
视图矩阵就是我们能看到的那部分场景,由虚拟摄像机负责拍摄;
投影矩阵就是 3 维物体的平面影射.把三维场景在一个二维的平面上显示.
2.请简单介绍 D3D 的渲染流水线流程及各步骤的作用,以及实际应用中我们可以在这些步骤做些什么效
果应用?
可分为两个阶段,T&L 和光栅化处理;主要步骤包括世界变换、视图变换、照明、投影变换、裁剪、w 切
分、视口变换等.通过渲染流水线可以得到视觉上的三维场景及其变换效果.
3.ZBuffer 有什么作用,渲染任何物体时是否都一定要打开 ZBuffer?为什么?
深度缓冲.作用是确保多边形能够正确的显示在它们本来的深度.对于两个物体以上的场景来说,一般都要
求打开 ZBuffer,否则可能出现非正常的立体感观.
4.请介绍你所有知道的纹理 Alpha 混合方式,原理(公式),以及他们的实际应用(做什么样的效果时需要这
种方式)
公式为: Color = (源颜色 * 源系数) OP (目标颜色 * 目标系数);其中 OP(混合方式)有
加,减,反减,取最小,取最大; Alpha 混合用于做半透明效果.
5.请介绍你所知道的所有 3D 动画方式、实现原理,以及他们的实际应用(做什么样的效果时需要这种方
式)
主要有关节动画、单一网格模型动画(关键帧动画)、骨骼动画.关节动画把角色分成若干独立部分,一个部
分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活 Quake2 中使用了这种动画;单一
网络模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然
后插值运算实现动画效果,角色动画较真实;骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点;
骨骼按角色特点组成一定的层次结构,由关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决
定角色的外观。皮肤网格每一个顶点都会受到骨骼的影响,从而实现完美的动画.
6.现在的显卡已经可以每秒渲染上千万个三角形以上(而一般的游戏场景也就几万个三角形),而已已经有
了很多自动的显示剪裁,是否意味着使用 BSP 或其他优化方法组织场景数据已经没有必要了?为什么?
不是。MMORPG 一个特别重要的问题就是同步,如果不使用优化方法组织场景数据,减轻计算负荷,在