网易互娱校招实习-预研游戏引擎项目面经
网易互娱游戏引擎项目-基于波函数坍塌的程序化mesh生成项目
投了大概两周收到面试通知
面试时间1h15***要因为我反应太慢了= =。
面试结果:已收到offer
面试问题:
1.对该项目的了解,主要流程
投之前查的波函数坍塌算法,讲了主要的slot处理,slot坍缩,规则的传播(可选集合更新)和回溯。这部分和投的项目有关,了解一下就可以。
2.项目资源
答:主要存储消耗为自定义的单位模型,用于拼搭建筑
3.模型制作,你会怎么做?
答:用3dmax制作,还不会,但很快能学会。
4.算法题,一个整数数组,只有两个数字只出现一次,其他数字出现两次,找出这两个数字。
答:我想用python写,但是要求我用C#。鉴于C#只在之前实习里用过,而且还是半吊子,刷题一直用的python,几个月没写已经忘得差不多了(ー ー;),面试官就让我先讲思路,这题我没刷过...就讲了两个方法,空间优先的双指针,两次循环。时间优先,用字典存数字频率,返回频率为1的。面完之后查了是用异或操作。
代码用了双指针的方法,只写了主体部分。
5. 场景,物体以及运动问题,有一架坦克,可以运动,上半部分可以旋转,如何实现这个场景。
答:unity里坦克的各个模型组建成坦克。在update里更新炮台和轮子的旋转角度,更新坦克父物体坐标,实现运动效果。
追问:轮子转动效果和实际有差别怎么办?
答:(这里理解花了几分钟...)用前进距离除以轮子周长来确定旋转角度。
6. 英文和技术词汇考察,给了一小段英文技术介绍,讲阴影渲染的。概括了前半部分的可见性测试,渲染序列,后面没有看懂技术原理。
7.各种图形学问题
-如何判断球,立方体,三角形相交?
答:(都是基础的图形学问题,然鹅三角形那一下没转过来,花了一点时间)球比较球心距离和半径和,立方体比较中心在xyz方向距离和立方体边长和的一半。三角形用线面相交判断,平面方程和直线联立求交点,判断点是否在三角形内。
-凸包问题,点的集合,找到最小包围长度。
答:分顺时针和逆时针两部分,顺时针每次确定凸包上的点时,遍历其余点,夹角逆时针变大则暂留,变小则舍弃,遍历结束找到的是最外侧的点。(忘记讲点的排序了)
-判断物体在视锥内
答:先说了把视锥转换成归一化坐标空间,再判断物体极点是否在立方体内。
追问:不要转换,就在视锥内
答:通过相似三角形和z值计算一个物体极点所在视锥切面的长宽,比较极点到切面中心距离和切面长宽的大小,再比较z值是否在前后面的z值范围内。
-估算一个物体在屏幕上的像素面积
答:在摄像机空间计算物体的AABB包围盒,包围盒的前面面积用于估算。按z值进行比例放缩,再通过视锥前后面的长宽设定和屏幕分辨率,转换成屏幕上的面积大小。
追问:在哪里实现,CPU,GPU?
答:GPU
追问:具体
答:顶点着色器里,转换到摄像机空间后。
8.反问问题
最后合理吐槽了我的图形学水平(因为我答得太慢了...)
#网易互娱##面经##实习##c#工程师#