简历 - VN02/Personal-profile GitHub Wiki

最后更新日期:2022.12.2

基本信息:

Head Message
姓名/性别 王玉龙/男
出生年月 1997.1/25岁
所在学校/所属专业 上海海事大学硕士/航海模拟仿真方向
目前状态 工作于上海哔哩哔哩科技有限公司
联系电话 15292078231
电子邮箱 [email protected]
个人主页 https://github.com/OneYoungMean

教育背景

Head 学校 学历 毕业时间
2015.9 - 2019.6 就读于 湖南城市学院 本科 于2019年6月毕业
2020.9 - 2022.6 就读于 上海海事大学 硕士 于2022年6月毕业

工作经历

2021.11~至今       就职于 上海哔哩哔哩科技有限公司

2021.11就职于上海哔哩哔哩科技有限公司,主要负责方向包括:

  • B站自研物理项目B站自研物理项目是在个人开源物理项目基础上开发的物理项目,拥有相较原版更丰富的功能与更好的Eidtor功能,并提供mmd/vrm物理到unity物理驱动的转换,目前集成在自研格式当中。(见作品集P3) 个人主要开发了更好的物理效果,包括:

    • 参考magica cloth与vrm的spring bone对现有的自研物理进行优化,增加了penetration与spring dynamic等特性,提升了物理骨骼的润滑感与物理抗穿模的特性。
    • 参考了VRM格式的物理信息与MMD格式中的物理信息,并在unity自研物理当中进行复现,其中自研物理模拟结果与VRM中Spring bone物理模拟结果几乎一致
    • 开发了新的Editor操作界面,提升了操作性和易用性。
  • B站自研格式项目B站自研格式项目是一款基于GLTF格式开发的Unity自研格式,能够支持任意跨平台的人物模型的转换与编辑,在Editor与runtime下自由导入/导出模型的网格,贴图,材质,物理等多种信息。(见作品集P4) 个人主要负责mmd/vrm格式到到自研格式的转换,主要包括

    • 为自研格式提供物理导入/导出的功能,使得格式能够包含物理信息。
    • 为vrm/mmd常见格式提供转换为自研格式的方法,并提供了对应的物理转换方案。
    • 为mesh/submesh、texture、blendShape加载过程job化,使得加载速率得到显著的提升。
    • 开发与维护项目的UPM功能与Hotfix Package,使得项目能够与vrm等常用项目不发生冲突。
    • 为自研格式提供导入加速算法,提升加载速度。
  • 3D虚拟开播直播姬项目3D虚拟开播直播姬是一款为3D虚拟主播提供一键开播等功能的软件,目前已经在哔哩哔哩直播姬(pc)上线与安卓端直播姬 (Anidord)上线与正常运行。(见作品集P4) 个人主要负责包括:

    • 为项目引入mmd的动作文件(vmd)播放器与录制器,并针对现有vmd开源库中存在的bug进行修复,使得能够在非mmd模型上播放与录制vmd文件。(见作品集P5)
    • 开发主播虚拟视角功能,使得主播可以根据头部位置观察3D房间信息。(见作品集P12)
    • 采用Jobs对滤波算法进行重写,提升识别的效率。
    • 采用Kabsch算法分离面捕数据的头部位置与脸部变形,提升识别BlendShape准确性到83%。
    • 采用Unity Jobs系统对现有图像处理的代码进行改进,使得面捕识别环节从原先的5ms降低到0.35ms,提升近十倍的性能。(见作品集P9)
  • 虚拟人系统SDK项目:虚拟人系统SDK项目是在小K 面动捕SDK开发的单目视觉虚拟人Unity_SDK,负责为不同unity项目提供虚拟人支持与服务。 个人主要负责负小K面动捕模块接入,IK模块,第三人称控制模块开发。主要包括

    • 开发虚拟人SDK部分中的面动捕模块,采用Final IK 开发了IK 拾取模块,并开发了第三人称控制模块,粒子模块等关键性模块。(见作品集P7)
    • 对小K面动捕系统所提供的SDK进行分析,并在Unity当中复现,使得面动捕效果与小K直播姬效果几乎一致。(见作品集P8)
    • 在UE4环境中接入小k面捕的SDK,能够驱动UE4的模型进行面捕。(见作品集P11)

2021.1~2021.2        实习于 杭州市字节跳动 于2021年2月结束

2021年1月于朝夕光年Asoul项目组实习,主要业务方向是针对现有Magica Cloth布料物理系统开销过高的问题进行研究。 实习期间阅读了Magica Cloth的源码,并尝试寻找对布料系统进行优化与简并的方法,主要手段包括:

  • 减少访存的开销,增加cache命中率。
  • 利用AABB盒特性对碰撞体进行预判断,减少不必要的碰撞计算。
  • 采用矩阵运算进行计算,充分利用Burst中SIMD指令优化特性。
  • 集中进行if判断操作,利用CPU分支预测的特性节约开销。
  • 预先计算或用低精度值替换无法并行的数学函数。
  • 合理规划执行时间,在渲染的期间分配多线程任务。
  • 同时还增加OBB碰撞体的碰撞计算,增加了碰撞效果等。

通过上述手段的优化,使得最终使得其开销降低至原来的71%,每帧计算开销从8ms降低至6ms,为渲染预留了更加充分的时间.


个人经历

0.对物理仿真与性能优化有着独到的见解 .开发并维护一款采用unity多线程骨骼布料插件,现有800的star与110+的fork,对于类似的物理插件(DynamicBone,SPCRCloth,Magica Cloth)等有着较深的了解,对采用Jobs系统进行优化有着较深的见解,对于3D数学与线性代数有着较为良好的基础.

1.对动画系统中的重定向与IK有着较深的了解,开发并维护一款基于BIO-IK原理的人体骨骼重定向插件,采用BFGS算法与凸优化进行肌肉模拟解算目标动作,并采用Jobs系统重写了整套模拟流程,对于动作系统较感兴趣。

2.拥有四年使用unity开发的经验。熟悉Unity文档与C#编程规范,拥有良好的编码规范与命名规则.熟悉Unity中使用profile等工具对代码进行性能分析与合理优化,能够使用UnityEditor与ScriptObject进行二次开发;对Unity中的前沿技术(Dots,Hybird等)非常感兴趣.

3.熟悉C#面向对象编程,熟悉C#常用数据结构,对反射与异步有着一定的使用经验.熟悉部分常用设计模式,熟悉常用基础算法,刷过leetcode并拥有自己的笔记.

4.学习过unity shader的基础编程,对unity渲染流程与以及相关图形学基础内容有一些了解,曾经手动实现过一个基于Unity的小型软光栅器.

5.接触过unreal 4的蓝图与应用,对unreal的C++编程略有一些了解.

6.对神经网络,卡尔曼滤波,遗传算法等经典论文算法比较熟悉,并尝试过复现其中一些算法.

7.老二次元,MMD狂热爱好者

个人主页

https://github.com/OneYoungMean