资讯动态

3D引擎开发工程师笔试:计算机视觉核心考点全解析

发布时间:2026/8/29 22:25:01 来源:尧图企业网站定制
2019年搜狐畅游校招季3D引擎开发工程师计算机视觉这个岗位放出来的时候不少准备投递的应届生第一反应是“这到底算引擎岗还是算法岗”。有这个疑问很正常。游戏公司的引擎组里常年需要做动作捕捉数据处理、表情追踪、贴图自动生成这些事情的工程师这些活儿既离不开图形学渲染逻辑又要用视觉算法做信息提取所以干脆设一个交叉方向的岗位。它考察的不完全是纯视觉的论文复现能力也不完全是让GPU跑得更快的传统引擎能力而是“你能不能把视觉算法在游戏引擎的场景里用起来”。这篇文章就按我实际准备这类笔试的经验把整个考察体系拆开核心知识有哪些、高频题型长什么样、复习顺序怎么排、哪些坑不该踩。目标读者是正在准备游戏公司校招笔试的同学尤其是想投3D引擎开发工程师、图形学工程师却被“计算机视觉”这个方向绕晕的。就算你暂时不投畅游这套复习框架对国内其他游戏公司的同类型岗位也完全适用。1. 先拆清楚为什么游戏引擎岗要考计算机视觉1.1 这个岗位在游戏公司里到底做什么先说结论游戏公司招聘计算机视觉方向的人核心目的永远是“帮美术、策划、程序省出更多做内容的时间”。引擎渲染本身有很成熟的管线不需要视觉算法去代替但视觉算法在内容生产环节里能做的事情非常多。举几个真实场景。动作捕捉mocap是游戏开发里最常规的视觉应用。演员穿上带有标记点的动捕服多台光学摄像头同时记录标记点的2D位置系统通过多视角几何重建出三维轨迹再解算出骨骼旋转数据最后映射到游戏内的3D模型骨骼上。这个完整链条里前三步全是计算机视觉的经典问题相机标定、多视图匹配、三维重建。引擎开发工程师在这条链路里负责的是数据和引擎的对接比如把解算后的骨骼数据在引擎里做平滑、重定向、与动画状态机衔接。表情捕捉、手势追踪、AR玩法比如基于手机的AR试装也是同一个逻辑摄像头输入二维图像视觉算法输出三维姿态或语义信息引擎消费这些信息做渲染和交互。还有一类需求落在美术资产生产上。一张真实世界的照片要变成游戏里的贴图需要做透视校正、光照一致性处理、无缝拼接一张扫描模型要进引擎需要做点云配准、网格简化、纹理映射。这些都是视觉算法密集的环节。所以这个岗位描述里虽然写着3D引擎开发但实际上是在引擎组里写视觉工具的工程师。笔试自然会同时照顾到引擎基础、视觉算法、工程落地三个维度。1.2 这场笔试和纯算法岗、纯引擎岗的差异纯算法岗笔试考什么机器学习理论基础、模型推导、手写SVM/KNN、卷积累积运算解题。但这场笔试不会把重心放在机器学习上即使偶尔有几道图像处理相关的题也偏向经典算法而非深度学习。纯引擎岗笔试考什么渲染管线、GPU架构、图形API、shader编写。这场笔试会涉及其中一部分但不会深到写GPU底层优化。交叉岗笔试的最大特点就是知识面广但每项都考得浅考得实用。这意味着你不需要把计算机视觉的教材背完但基础知识必须非常牢靠因为题目往往会以“一个引擎开发中常见的计算问题”的形式出现。比如它不会直接问“请写出四元数的乘法公式”而是会让你计算一个物体绕某个轴旋转90度后再做投影的坐标不会让你从零推导相机标定算法而是让你解释为什么标定板角点检测是标定流程的第一环。这些细节我会在后面几节里详细展开。2. 笔试考察的知识体系全景数学和空间底子比任何框架都重要2.1 数学基础线性代数与三维几何是绝对主线我来做个大胆的判断这份笔试如果只允许复习一门课那就复习线性代数和三维几何别的都可以往后放。原因很简单。3D引擎里的所有变换——模型矩阵、视图矩阵、投影矩阵——本质都是线性变换计算机视觉里的相机成像、多视图几何、三维重建也全是线性代数在三维空间中的应用。所有题目无论表面上是视觉题还是引擎题最后都会化成一堆矩阵和向量计算。重点要掌握的知识点我列一下矩阵乘法、逆矩阵、转置、行列式正交矩阵的性质旋转矩阵就是正交矩阵向量的点乘、叉乘以及它们各自在几何上的含义特征值与特征向量在PCA、椭球拟合、协方差分析中高频出现线性方程组的求解思路最小二乘、SVD分解其中叉乘容易被人忽略但在游戏开发里它无处不在叉乘可用来求法向量可用来判断点的左右朝向可用来构建坐标系的第三个正交轴。视觉里三角化也需要用到叉乘构造约束方程。笔试不一定会单独出一道叉乘的计算题但在多道题目的推导过程里都会出现。2.2 图形学核心概念和视觉核心概念其实是同一套底层引擎和视觉交叉最集中的地方是坐标系和投影。引擎里的坐标系约定需要记清楚模型坐标系、世界坐标系、视图坐标系相机坐标系、裁剪坐标系、屏幕坐标系。模型顶点从本地空间到屏幕空间要依次经过模型矩阵、视图矩阵、投影矩阵、视口变换。这里面的每一环在计算机视觉里都有一个对应的概念模型矩阵对应物体在世界中的位姿视图矩阵对应相机的外参投影矩阵对应相机的内参视口变换对应图像分辨率。二者讲的其实是同一件事只是术语不同。所以复习的时候千万别把图形学和视觉当成两门独立的课。把一条链路打通顶点在模型空间里的坐标经过引擎的MVP矩阵到屏幕同样一个点经过视觉里的外参和内参到像素坐标。你会发现核心计算过程完全一致。理解这条链路比背下20道真题都管用。2.3 工程基础C、数据结构和性能意识3D引擎开发工程师的笔试里C和算法题永远不会缺席而且占比不会低。毕竟你的代码最终要跑在引擎里引擎是C写的你的工具也大概率是C写的。C的考察集中在内存管理RAII、智能指针、new/delete、STL容器原理vector扩容、map与unordered_map的底层差异、多线程线程同步、锁、原子操作、面向对象虚函数、多态、菱形继承、现代C移动语义、lambda、完美转发。这些是引擎岗笔试的常客和互联网后端岗考察的点高度重合反而比纯算法岗考得更细。数据结构与算法方面不追求极难但基础必须扎实。数组、链表、栈、队列、二叉树、图、哈希表、堆这些结构的基本操作要能当面手写排序、二分、双指针、DFS/BFS、动态规划这些算法要练到肌肉记忆。游戏公司笔试算法的总体难度低于一线互联网大厂但代码风格和边界条件处理会被挑剔。还有一项经常被忽略性能意识。笔试可能不直接考但面试环节一定会被追问“你写的这段代码在引擎里每秒要跑多少次缓存命中怎么考虑能不能用SIMD优化”。所以复习时要带着性能指标去看问题比如实现一个矩阵乘法时想想怎么让数据在缓存里更友好而不是简单套公式。3. 核心考点拆解坐标变换与旋转表示3.1 旋转矩阵、欧拉角、四元数的考察方式三维坐标变换在3D引擎和计算机视觉里都是高频考点没有之一。先看旋转的三种表示。旋转矩阵直观适合作为中间计算格式但有9个参数实际上只有3个自由度且存在冗余欧拉角用三个角度表示人最容易理解但有万向锁问题在12种顺序约定下还容易产生歧义四元数是4个参数的复数扩展插值方便没有万向锁是引擎里实际存储旋转最常用的格式。笔试里常见的问法有几种第一给出绕X轴或绕Y轴旋转一定角度的旋转矩阵要求写出或计算某点变换后的坐标。这种题是送分题但送分的前提是你把三轴旋转矩阵记熟了并且分清楚旋转正方向是按右手定则还是左手定则引擎通常用左手系视觉通常用右手系这个细节极易踩坑。第二给出一条旋转轴的向量和一个旋转角度要求用Rodrigues公式计算旋转矩阵。这题如果把公式记熟就是直接代入但公式里有个小陷阱叉乘矩阵的构造要正确尤其注意符号。第三问四元数和旋转矩阵如何互转。这是引擎岗的高频题四元数q w xi yj zk模长为1转旋转矩阵的公式要能写出大概至少知道主对角线元素与w、x、y、z的关系以及非对角元素与旋转轴和角度的关系。反过来从旋转矩阵提取四元数核心思路是用矩阵的对角线元素求得w再通过w反解x、y、z。3.2 一个典型的坐标变换题怎么做假设题目是这样的世界坐标系下有一个点Pw (2, 1, 3)相机在世界坐标系下的位置是(0, 0, 5)相机朝向为Z轴正方向求Pw在相机坐标系下的坐标。这个题几乎没有难度核心是理解刚体变换Pc R(Pw - C)或等价地写成Pc R·Pw t。相机在(0,0,5)、朝向Z正方向意味着R是单位阵t -R·C (0, 0, -5)。所以Pc (2, 1, -2)。但如果相机朝向变了比如相机绕Y轴旋转了90度矩阵R就不再是单位阵你必须先写出R再做矩阵乘法。这题要想不丢分关键是把坐标系的建立顺序记清楚先平移后旋转、还是先旋转后平移在公式上只有写法的区别但很容易搞混。我个人的习惯是永远先做旋转再做平移也就是 Pc R(Pw - C)。这样相机中心C先被旋转抵消剩下的t就只是-R·C非常干净。如果题目进一步要求计算这个点在图像上的投影坐标就会引入相机内参。这部分我放在下一节先不展开但你要意识到坐标变换题往往是投影题的前置步骤做对了这一步后面才谈得上对。4. 核心考点拆解相机模型与投影关系4.1 针孔相机模型必须烂熟于心的公式在计算机视觉的笔试里针孔相机模型是“保留项目”。这个模型描述了一个三维空间点如何通过一个小孔成像到相机的图像平面上。公式很简单u fx * Xc / Zc cx v fy * Yc / Zc cy其中(Xc, Yc, Zc)是点在相机坐标系下的三维坐标(u, v)是成像后的像素坐标fx、fy是焦距的像素表示cx、cy是主点坐标。这个公式一定要能闭着眼睛写出来并且要理解每个参数的含义。fx f / dxdx是一个像素的物理宽度fy同理。cx、cy是光轴与成像平面交点对应的像素坐标理论上在图像中心实际上由于传感器制造安装偏差不在中心。笔试里常见的直接考察方式给出相机内参fx500, fy500, cx320, cy240给出一个三维点在相机坐标系下的坐标(X10, Y20, Z100)求像素坐标。代入公式得到u 50010/100 320 370v 50020/100 240 340。如果这题的Z特别小比如Z0或者负数点就在相机背面理论上不会成像这种边界条件也常被拿来做干扰项——考你物理直觉看你会不会检查Z的正负。4.2 从像素到三维的逆推正向投影是画得出来的但实际应用中更多是逆向需求已知图像里某个像素点怎么知道它在世界中的位置这是一个典型的欠约束问题。一个像素点对应的是相机发射的一条射线而不是一个确定的三维点。要想得到确定的三维坐标要么已知深度Z要么找到另一个视角的对应点做三角化要么假设物体在某个平面上。笔试里最常考的是“已知深度求三维坐标”这类题。思路是先把像素坐标去归一化Xc (u - cx) / fx * ZcYc (v - cy) / fy * Zc。注意这里一定要把像素坐标做“减主点、除焦距”的步骤得到归一化平面坐标再乘深度Zc。再把相机坐标转成世界坐标Pw R^T(Pc - t)因为旋转矩阵是正交矩阵R的逆等于R的转置。这一步如果写成Pw R·Pc t就会错方向完全反了。这是笔试里最经典的失分点我见过太多人在这个符号上栽跟头。4.3 畸变与相机标定的概念题镜头畸变在笔试里通常不会要求做复杂的矫正计算但概念必须清楚。径向畸变桶形/枕形由透镜形状引起切向畸变由镜头与传感器不平行引起。畸变的数学表达一般用多项式近似视觉里叫Brown-Conrady模型笔试只要记住畸变发生在像素坐标转归一化坐标之后、投影之前以及畸变矫正是标定的一部分基本够用。相机标定流程是另一个高频概念题。张正友标定法基本是标准答案准备棋盘格标定板从多个角度拍摄检测棋盘格角点建立像素坐标和已知物理网格坐标的对应关系计算单应矩阵H再基于多视图间的旋转正交约束求解内参矩阵K最后用最小二乘估计畸变系数并做全局优化。为什么标定是视觉算法在游戏落地时的第一步因为在动捕、AR、扫描重建所有环节里先算清楚相机内参和外参后续所有三维计算的正确性才有保障。这一点在笔试答题时如果能主动点出会让阅卷人觉得你是有工程直觉的而不是只会背公式。5. 核心考点拆解图像处理与特征点识别5.1 卷积、滤波与边缘检测图像处理在游戏公司的视觉笔试里是性价比非常高的部分考点明确准备起来也不难。卷积是图像处理最基础的操作用一个小的核kernel在图像上滑动每个位置的输出是邻域像素与核的加权和。高斯滤波的核是一个二维高斯分布采样值用于降噪Sobel算子用于计算图像梯度分为水平方向Gx和垂直方向Gy本质是对图像做一阶导数的近似。笔试里可能直接给出Sobel核要求计算某个3x3区域的梯度幅值和方向。梯度幅值 sqrt(Gx^2 Gy^2)方向 atan2(Gy, Gx)。这个计算本身不难但要注意核的符号方向和坐标轴方向的关系别把梯度方向判反。Canny边缘检测的流程是另一个经典概念题高斯滤波降噪 — 计算梯度幅值与方向 — 非极大值抑制 — 双阈值检测 — 滞后连接。在回答这类问题时要能说明每一步在做什么、解决了什么问题。比如非极大值抑制是把局部的梯度极大值保留下来、把边缘变细双阈值检测是把高阈值确定的强边缘和低阈值保留的弱边缘区分开弱边缘只有在与强边缘相连时才被保留。这些概念在游戏引擎里也有直接应用后处理中的边缘检测如描边效果、屏幕空间环境光遮蔽SSAO中用到深度和法线的滤波思路都源于图像处理。5.2 特征点与描述子特征点检测与匹配是视觉算法在游戏开发里最常见的应用。核心考点是三种经典特征点一定要能说清楚各自的特点和区别。SIFT尺度不变特征变换在尺度空间找极值点特征对缩放、旋转、光照变化有较强的鲁棒性但计算量大SURF本质是SIFT的加速版用Haar小波求特征速度更快但鲁棒性略降ORB结合了FAST角点检测和BRIEF二值描述子计算速度极快适合手机端和实时场景。笔试里常见的问法是为什么SIFT具有旋转不变性和尺度不变性答案要点是旋转不变性来自关键点方向的主方向估计描述子会沿主方向旋转对齐尺度不变性来自高斯差分金字塔DoG的尺度空间极值检测。另一个常考的是描述子的匹配暴力匹配是两两计算描述子的距离取最近但对噪声敏感更常用的是最近邻比次近邻ratio test只有当最近邻距离明显小于次近邻时才算匹配成功。这个比例通常取0.6到0.8之间。这类题在笔试里会以“你怎么过滤错误匹配”的形式出现直接答ratio test再配合基础矩阵约束或单应矩阵剔除外点基本就能拿分。5.3 视觉算法在游戏开发里的实际落地笔试虽然考的是概念但你答题时如果能自然地联系到游戏开发场景绝对是加分项。前面提到一个典型场景贴图材质自动生成。设计师拍摄一张真实材质的照片需要透视矫正这就是用特征点匹配求单应矩阵的过程照片有反光、光照不均需要做滤波和直方图均衡化照片分辨率不够需要做超分辨率或细节增强。骨骼动画的重定向也与视觉联动。后期想要自动解算骨骼长度比例、自动匹配不同模型的体型差异都需要视觉特征来辅助对齐。还有一类很容易被忽略但实际上很有价值的方向是“渲染优化中的感知模拟”。比如把图像质量评分和质量调优做在渲染管线的自动调节里用视觉效果做动态分辨率缩放这套逻辑也是视觉与引擎结合的场景。笔试如果问你“视觉算法在游戏引擎里除了动捕还有什么用途”脑海中一定要有这几个方向内容生产自动化、交互感知、渲染反馈优化。6. 工程能力考察C细节和算法题准备6.1 C必考知识点清单除非你的目标岗位是纯算法研究员否则3D引擎开发岗的笔试一定绕不开C。我整理了一份我当年用过的自查清单你可以逐项检查智能指针三种类型的语义区别和使用场景unique_ptr独占所有权shared_ptr共享所有权并通过引用计数管理生命周期weak_ptr解决循环引用和悬空引用引用计数本身的线程安全性vector的扩容机制到底怎么实现的capacity翻倍增长、元素逐个移动/拷贝、这会导致迭代器失效emplace_back和push_back的差异map与unordered_map的底层区别红黑树 vs 哈希表对应的时间复杂度、有序性、内存占用虚函数的实现机制虚函数表指针、动态绑定、以及虚析构函数的必要性移动语义与完美转发什么时候会触发移动构造std::move的本质是什么这些点不需要每个都能写五千字但每个都要能举出一个具体的代码例子来说明。比如被问到shared_ptr循环引用例子就是两个对象互相持有shared_ptr导致引用计数永远归不了零内存泄漏解决方法是改用weak_ptr。6.2 算法题侧重点与刷题策略算法题在游戏公司的笔试里更偏向基础应用不会刻意出那种一看就要推半天结论的智力题。但反过来说正因为难度不高代码的规范和正确性要求会更严格。高频题型包括数组和字符串的操作滑动窗口、双指针、前缀和、链表反转、找环、合并有序链表、二叉树遍历、层次遍历、最近公共祖先、图DFS/BFS、拓扑排序、最短路径、动态规划背包、最长子序列、编辑距离。我的建议是不要只刷难题主线放在中等难度的题目上把每种题型的模板写法练熟。考场时间有限第一分钟内判断出题型的熟练度往往比思考一小时憋出个精巧解法更重要。代码风格也会被考察。命名规范、边界条件处理、空指针判断这些细节在笔试评分时分量不小。写代码前先用一两行注释说明思路写完再检查一遍边界这些都是提高通过率的习惯。7. 常见问题与避坑指南如果你现在开始准备该按什么顺序来7.1 复习排序建议不同基础的同学复习优先级不一样但核心思路可以统一先补数学和三维空间基础再复习C和算法最后熟悉视觉和图形学的概念。我给一个具体的顺序参考第一周集中搞定线性代数和三维几何。矩阵、旋转、坐标变换、四元数这些不仅仅是为了应付笔试里的数学题更是后面理解和做题的地基。第二周到第三周刷C和数据结构算法题。每天保证3-5道手写代码题的量核心是建立手感让自己在考场上写代码不卡壳。第三周后半段到第四周复习图像处理和相机模型。卷积、滤波、边缘检测、特征点、相机内参外参这些是视觉考题的重心而且很多可以直接用到前面的数学功底来辅助理解。考前两天把各知识点过一遍尤其是旋转矩阵和相机投影这两块必考内容。考前过一遍的价值在于避免公式遗忘而不是临时学新东西。这个顺序最核心的逻辑是数学为你提供理解工具C和算法为你提供写题手段视觉和图形学是应用场景。倒过来复习会非常痛苦因为你每遇到一个公式都要临时补数学背景。7.2 笔试中容易失分的几个细节第一个细节是坐标系约定。引擎里常用左手系视觉论文里常用右手系答题时不标注会得错。两个系的旋转矩阵方向完全相反如果你用左手系的答案去回答右手系的问题结果必错。拿到题目先看坐标系再看旋转方向这是第一优先级。第二个细节是公式里的正负号。相机投影公式中像素坐标的u、v与Z的正负性外参变换中的平移向量方向畸变矫正公式的符号这些地方最容易因为细节丢分。写完之后把结果代回公式验证一遍数值合理性是一个很有效的检查方法。第三个细节是概念题的陷阱。比如“欧拉角是不是唯一表示法”这种问题答案是“不是”因为不同旋转顺序产生不同结果再比如“四元数能不能表示缩放”答案是“不能”四元数只编码旋转不含缩放信息缩放要另行处理。这些概念性的“一句话考点”在笔试里非常常见复习时不要把注意力全部放在计算题上概念题同样要兼顾。第四个细节也是最容易被忽视的不要忽视Z值的取值范围。任何一个三维点投影到图像平面之前它的深度必须为正。很多计算题设置的点可能在相机背后或者深度极小的位置这种情况下投影结果没有物理意义。我在批改同学模拟题的时候经常看到有人算出负的深度还不自知直接导致整个题的分数泡汤。写到这里关于这场笔试的核心内容基本就拆完了。最后说一点我自己的体会准备这类“3D引擎计算机视觉”交叉岗位时最怕的不是知识面不够而是把自己定位错了。如果你把自己当成纯算法方向的CV工程师你会花大量时间在深度学习模型和论文复现上但这些在笔试里根本不怎么考如果你把自己当成纯引擎工程师又会忽略相机模型、特征匹配这些视觉基础同样失分。正确的定位是“会用视觉算法解决引擎问题的工程师”所有复习的落脚点都应该是这个算法在游戏开发流程里能解决什么问题怎么和引擎的数据结构对接性能上能不能扛得住。带着这个视角去准备笔试和面试都会顺很多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价