Feiran Yu

屏幕空间反射Vulkan实现

简介 实时渲染中重要的一环是计算间接光照,间接光照有多种实现方式,屏幕空间反射是其中的一种,我将尝试实现屏幕空间反射,把它加进我的渲染器中。 原理 原理就是在视口空间中做简单的raymarch。 对于屏幕上任意一点( p ): 1.根据摄像机方向( L )与当前点( p )的法向( N ),计算反射方向 ( RDir = reflect(L,N) ) 2.从p点出发,沿着反射的方向进行光线步进:( rayPos = p + step * RDir ),其中step为步进的长度 3.对于每次步进,比较( rayPos )和( rayPos.xy )对应屏幕空间的( z )值。 ->如果相差小于一个阈值 ( eps ) 则发生相交,取该点的颜色为( p )点的反射值; -> 否则回到第2步循环。 原理十分简单,

By Feiran Yu

NeRF/3DGaissian与人体重建

NeRF代表"Neural Radiance Fields",是一种用于三维场景重建和渲染的计算机图形学技术。它是由Benjamin Mildenhall等人于2020年提出的一篇论文中引入的。NeRF旨在解决传统基于多视角图像的三维重建方法中存在的一些问题,例如视角依赖性和合成新视角时的不真实感。 NeRF与人体重建总结ppt 下面是结合网络上的资料和我自己的理解写了一个ppt: 📁 File: NeRFDigitalHuman Download 📁 File: NeRFDigitalHuman Download Instant Volumetric Head Avatars 论文解析 概述 本篇论文介绍了一种使用Instant-ngp加速的NeRF与人体参数化模型结合的工作。 本文将会尝试介绍它的原理以及运行作者提供的代码。 INSTA parper主页https://zielon.github.io/insta/ code https://github.com/Zielon/INSTA 原理解析 结合网络上的资料和自己的理解,写了一个解析

By Feiran Yu

Vulkan Real-Time Ray Tracing

本文会介绍使用Vulkan来实现实时光线追踪的过程。 Vulkan是一个低开销、跨平台的二维、三维图形与计算的API,比起OpenGL更加底层,更加底层意味着可以优化性能表现的地方更多,可以提供较高的性能表现。 光线追踪(英语:ray tracing)是三维计算机图形学中的特殊渲染算法,追踪光线从来源开始照射到物体上,再由物体反射的光线“路径”,由于完整运算所有路径十分消耗运算资源,因此现有光线追踪技术仅运算“目所能及”的光线路径。 实时光线追踪(Real-Time Ray Tracing)原理上与光线追踪没有区别,而是使用了硬件加速、减少采样量、步进长度来减少计算量,最后可以达到实时水平(每秒可以绘制多帧画面)。细节可以参考高质量实时渲染:实时光线追踪 图1是实时光追在 Wolfenstein: Youngblood 中的应用对比。 图1 (左侧没有开启反射 右侧开启光线追踪的反射) 技术路线 1 学习vulkan 过程: 通过学习https://vulkan-tutorial.com/ 和https://vkguide.dev/

By Feiran Yu

人体几何模型重建

背景 最近在做三维人体重建方向的工作,本文会试着系统的介绍使用神经网络从二维图片/视频中提取出人体参数化模型以及纹理贴图的过程。 [0]SMPL模型学习和使用 背景 最近在做三维人体重建方向的工作,SMPL是基础,所以准备学习它。 什么是SMPL 在人体动作捕捉(motion capture)领域,SMPL 算法最为常见,它是由德国马普所提出的一种参数化的三维人体动捕模型,具有通用性、易于渲染和兼容现有商业软件(比如 UE4 和 Unity)的优点。 原理 它是一个使用几组参数就能生成一个人体模型和姿态模型的框架。 运行 1. 从官网下载SMPL模型 https://smpl.is.tue.mpg.de/download.php 2. 需要注意需要linux或者macos才能运行,我安装了WSL2 的Ubuntu 3. 解决环境依赖,把缺少的库都用apt和pip安装了,参考这个SMPL源码安装:安装成功并实现 4. 注意需要把smpl放入python的path中,放入后我这里需要将

By Feiran Yu

OpenPose 调研

背景 我们实验室做人体重建方向比较多,这个OpenPose是人体姿态估计方面非常厉害的项目,通过学习它,有助于入门人体重建。同时,它也是一个在GitHub现在拥有25k star 代码行数约12w行的开源项目,从软件开发的角度,它的设计架构也很值得学习。所以我将进行调研。 下图是OpenPose的一个运行效果。 可以看到每个人都被绘制上了合理的躯干和关节位置,而且这个算法可以实时运行!效果还是不错的。 0.ppt 结合网络资料和我自己的理解,我整理的OpenPose原理ppt: 📁 File: OpenPose Download OpenPose软件设计的ppt: 📁 File: OpenPose Download 调研计划 调研主要就是看懂论文,跑明白代码,将由以下部分组成: 1. 论文阅读分析 2. 下载和编译源代码 3. 跑通它提供的一些demo 4. 阅读和分析OpenPose的代码架构 1.论文阅读分析 整个OpenPose工作的历程是由几篇工作组成的: 首先是Realtime Multi-Person 2D Po

By Feiran Yu

最优化算法c++实现

背景 最优化方法是一门关于找凸函数的最值点的一系列方法,本文会介绍一些最优化方法的原理以及使用C++的实现。 代码在https://github.com/yufeiran/ConvexOptimization 中 目录 [1] 内点法(interior point method) [2] 2d fused lasso [3] Soft Thresholding [4] Proximal gradient descent [5] ADMM [1] 内点法(interior point method) 主要参考这篇文章【学界/编码】凸优化算法 I: 内点法(interior point method)求解线性规划问题,根据自己的理解进行实现。 主要分为两部分:数学推导和C++实现 数学推导 C+

By Feiran Yu