宾夕法尼亚大学, 计算机图形与游戏技术硕士
邮箱: yiyangch@seas.upenn.edu
使用C++和DirectX 12,主要在compute shader中实现基于SDF的软光追,具体见Github仓库
基于论文Responsive Real-Time Grass Rendering for General 3D Scenes,使用C++和Vulkan API编写程序渲染草。其中草用贝塞尔曲线表示,并实时计算草受力(风力等)的形变,具体见Github仓库
基于"Shape-Up: Shaping Discrete Geometry with Projections"和"Anderson Acceleration for Geometry Optimization and Physics Simulation"这两篇论文,用c++编写了一个创作工具,输入模型,执行操作,输出模型。操作包括planarization和ARAP deforamtion等。
我们制作了独立程序和Maya插件两个版本。
使用C++和Qt制作了一个基于物理的CPU渲染器。实现了Path Tracing算法,并且使用multiple importance sampling (MIS)来估计路径上每个顶点的贡献。
此程序首先加载一个json格式的场景文件,然后指定采样次数、深度限制和积分器进行渲染。在积分器的选项中,"Surface Normals"只是用来计算法线方向,"Full Lighting"是使用了Path tracing算法的积分器,"Direct Lighting"积分器只使用MIS计算直接光照,可以认为是深度限制固定为1的"Full Lighting"。
同时编写了一个使用相同算法的GPU渲染器。
以下是展示视频,分别是CPU渲染器和GPU渲染器,其中CPU渲染器剪掉了部分渲染过程。
使用Qt作为框架,使用OpenGL制作了一个简单的“我的世界(Minecraft)”游戏。玩家可以用飞行模式或地面模式自由移动,破坏方块或创造方块。地图随机生成,没有边界。下面的视频展示了我们所实现的所有功能。
制作了一个简单的Maya的LSystem插件和一个Houdini的LSystem插件。输入语法,迭代次数,角度和步长,就可以生成模型。
使用Qt作为框架,制作了一个简易编辑器,用于加载并编辑网格模型与骨架,还实现了鼠标点击选择物体,加中点,三角化,模型细分,蒙皮等操作。
使用UE4引擎制作了两个小游戏
这个游戏有点类似于“纪念碑谷”,利用了特定视角下的视觉错觉。你需要不断改变视角,发现新的“连通的”道路,并最终到达终点
这是一个VR游戏,可以视为3D版的三维弹球。你需要使用控制器击打球,防止其落到你身后,并使球撞到各种物体与机关,以获得分数。
使用OpenGL实现了一些有趣的渲染效果。
顶点变换:
后处理:
实现了FK和一些IK方法,比如几何方法,CCD算法和矩阵伪逆算法。在人物的走路循环中应用了IK。
在Unity中通过丢弃并重建像素,实现了一种简单的固定注视点渲染的方法。