俯拍书桌:暖光下的彩色文具、手写便笺与手绘画册

你好,我是张俊(Jun Zhang)

欢迎来到我的网站。过去几年里,我一直在计算机图形学的方向上深耕:3D 建模、贴图、Python 工具链与图形渲染, 也熟悉 C++ 编程和 OpenGL 相关技术;目前正在学习 OpenGL/Vulkan 方面更进阶的内容。 这里展示我的项目作品,也记录一些技术笔记与生活里的想法。

项目总览(Projects Overview)

以下是我近年来完成的项目,点击标题可查看完整介绍:

新迪轻量化引擎-数据转换与3D可视化

2023.8.21 - 2026.9.30 CAD3D可视化数据转换WebGL / OpenGL

我于2023年8月加入新迪,负责新迪轻量化引擎项目中,核心的渲染模块的功能拓展与开发。并深度参与了数据轻量化之后的数据准确性的验证。确保了数据在渲染过程中的准确性和稳定性。

项目演示

新迪轻量化引擎渲染效果

产品官网:新迪轻量化引擎 · 3DOpen

我的工作

负责轻量化引擎核心功能模块、CAD 插件与几何算法开发(C++ / JavaScript / WebGL)。

在渲染方向,主导重构了轻量化引擎的渲染效率,优化 10 万+节点、10 亿离散三角面级别的模型在 Web 端的渲染性能,达到 30fps 以上;同时完善了 CAD 剖切功能,对剖切轮廓进行分类与特征提取(弧、圆等)并添加特征测量能力;还设计并实现了多视口核心模块,支持从不同视角观察模型并处理相应的用户输入事件,并利用后处理 pass 优化选中模型的勾边高亮效果。

在几何算法方向,主导设计了模型干涉检查的全流程,参与空间加速与干涉状态回显等核心流程的开发;基于 Creo 二开框架,主导设计并开发了 CAD 数据对比工具的全部流程,包括中间数据结构与获取流程管理、对比线程管理,以及差异报告(截图+差异日志)的输出。

此外,担任广东省铸魂工程模型轻量化引擎三期攻关项目的项目经理,对内负责主要功能点的研发排期,对外协调软件集成方与最终用户方的问题修复、功能演示与进度对齐。

Google AR 眼镜(实时翻译与转录)

2021 - 2024 AR翻译转录Google AR devicesJavaKotlin

我于2019年11月加入Google XR 团队,负责AR眼镜项目中,核心的实时翻译与转录功能开发。当时和其余3位核心SWEs合作,完成了整个app端从设计到最终落地的所有工作。

项目演示

我的工作

在这个小组项目中,我负责搭建核心的用户体验模块。之前ASR模块负责将用户 say 转换为文本,而翻译模块负责将文本翻译为其他语言。其中解决的一个巨大问题就是ASR输出文本的不确定性导致文本输出到小窗口上,会有比较明显跳动和回滚。我们设计了基于token的追踪算法。稳定了整个文本的输出。

CryoVR

2018 – 2019 UE4VR教育

一个研究型项目,目标是做出有效的训练模拟器,帮助结构生物学背景的学生学习使用 Cryo-EM(冷冻电子显微镜)技术。基于 Unreal Engine 4 开发。

项目演示

我的工作

  • 负责项目整体进度管理:状态报告、变更日志与技术文档全部规范留存
  • 设计训练模拟器的系统结构,Demo 包含三种关卡:
    • 教程关:为新手用户提供细致的分步引导
    • 自由练习关:不提供提示,让学员独立练习完整流程
    • 考核关:对学员操作给出详细的表现反馈
  • 在 UE4 中设计完整训练流程,把真实需求转化为可视化或代码实现。例如学员在虚拟环境中拾取物品时,我们针对不同物体设计了不同的手部抓取手势,为抓取行为提供自然直观的视觉反馈
  • 使用 Maya 精修全部 3D 模型与贴图,尽可能还原真实 CP30 设备的外观
  • 优化 UE4 中的着色器、光照与渲染效果,呈现漂亮生动的画面

Planetary Landscape Generation(程序化行星地形生成)

2018 秋 C++OpenGLGLSL程序化生成

一个个人项目,目标是生成一颗程序化生成的行星。Demo 使用 C++/OpenGL/GLSL 实现。

自适应 LOD

行星基础几何体采用了自适应细节层次(Level of Detail)算法,包含两个核心部分:

  • 高层几何划分:根据行星与相机之间的距离,对三角网格进行递归细分(Subdivide)或合并(Merge),在函数调用中递归实现
  • 底层细分:利用 OpenGL 的曲面细分(Tessellation)特性,把基础球面进一步划分为极小的子三角形,为地形提供高分辨率细节

两者结合,近处山脊清晰、远处轮廓完整,同时保持可接受的性能开销。

行星 LOD 细分过程演示

LOD 细分过程演示:相机靠近时网格逐级细分

Underwater Rendering(水下渲染)

2017.10 – 2017.12 C++OpenGLGLSL渲染

“水下渲染”是一个技术 Demo,描绘了生动美丽的浅海景色。我想把学到的光照与着色技术结合起来,加上自己过去的美术功底,模拟一个生动的水下世界。

项目演示

技术实现

代码使用 C++ 编写,应用了多个 OpenGL 特性:

  • 多重采样(Multisampling)抗锯齿
  • 纹理映射与切线空间法线贴图(Tangent Space Normal Mapping)
  • 光照与深度贴图阴影(Depth Map Shadows)

我还编写了多个不同的着色器(GLSL)来区分场景中的不同物体:所有鱼类的动画都在着色器程序中完成,并用一个有趣的粒子容器来控制鱼群的行为。

相关链接