上一篇从渲染史的角度,通过栅格化和光线追踪两个渲染技术,给出了真实感渲染的三个标准:照片级别,物理正确和高性能。本篇是系列二,从技术角度介绍当前真实感渲染。
2019年12月,洛桑联邦理工学院和瑞士生物信息研究所的研究者在nature methods上提出使用分子表面的化学和几何指纹,来预测蛋白质和其他分子间的相互作用。
这段时间真的好忙,周更啊什么的都停滞了。前几天又看了一圈谭平的关于如何提高光度立体成像法线分辨率的这个论文,看完也写了长长的笔记。
近来关注了下近年火热起来的衣物布料增强,于是看了前段时间刚刚新鲜出炉的Adobe和miHoYo参与的这篇文章,这篇文章运用网络实现了低性能代价的衣物褶皱增强效果,效果也还算可以
忙完手头的工作,紧接着开始接下来的活。这两天看了14年的这篇CVPR论文,由于题目限制没有写全,全名是《Surface-from-Gradients:An Approach Based on Discrete Geometry Processing》。主要贡献是运用离散优化的思路,优化了从梯度图/法线图进行三维重建的流程,得到了不错的实验效果
2023 年 7 月 7 日,计算机图形学顶级会议 ACM SIGGRAPH 2023 最佳论文奖评选结果揭晓。其中,山东大学计算机科学与技术学院交叉研究中心(IRC)的科研团队发表的学术论文 “Globally Consistent Normal Orientation for Point Clouds by Regularizing the Winding-Number Field” 被评为五篇最佳论文之一。这是自 SIGGRAPH (NA) 设立最佳论文奖以来,国内科研团队首次以第一单位荣获该奖项。
对于一个三维空间的正则曲面R(u, v), 点(u, v)处的切平面(Ru, Rv)的法向量即为曲面在点(u, v)的法向量。点云是曲面的一个点采样,采样曲面的法向量就是点云的法向量。
今天介绍一下UE中的lightmap(LM)技术,lightmap算是一个高级版的irradiance environment map(envmap),而irradiance envmap[1]则是Ravi教授在2001年首次将球谐引入到图形学中。所以,本文先介绍irradiance envmap技术,如何使用球谐函数;然后介绍LM对envmap的升级,最后是UE中如何生成和使用LM。
这是关于渲染的系列教程的第四部分。上一部分是关于组合纹理的。这次,我们将研究如何计算光照。
对通过基于图像的神经渲染来恢复密集的 3D 表面,神经表面重建已被证明是可行的。然而,目前的方法很难恢复真实世界场景的详细结构。
物体的 3D 形状测量有许多应用领域,如机器人,3D接口、存档和复制等,而 3D 扫描仪已经商用。尽管如此,现存大多数 3D 形状测量系统捕获多个子帧,来测量单个深度图或单个点云,帧速率仅为 30 fps。这种方法在测量动态对象时,系统可能会因子帧之间的模糊或位移而导致噪声和误差。因此,需要单帧高速测量方法来处理移动或变形的目标,例如传送带上的产品、手势和非刚体。另一方面,在仅具有单帧的基于三角测量的方法中,测量的 3D 点云将是稀疏的,因为它难以获得密集的对应关系。而在使用飞行时间 (ToF)相机的情况下,由于散粒噪声,单帧深度的精度也相对较低。因此,为了实现对动态物体的密集、准确和高速的 3D 形状测量,不仅需要简单地在单帧中加速过程,还需要用别的方式提升测量精度和效率。
【GiantPandaCV导语】本文针对3维视觉中的深度图补全问题,介绍了一下近年基于深度学习的RGB-D深度图补全算法进展。深度图的质量对3维视觉至关重要,深度图的优劣极大地影响了后续的3d识别等工作,但目前较多研究聚焦于自动驾驶领域的Lidar深度图的补全,而对RGB-D相机涉猎较少,故本文介绍几篇基于consumer RGB-D cameras深度图补全的深度学习方法,以此来看看近期该领域的发展现状。
这系列的笔记来自著名的图形学虎书《Fundamentals of Computer Graphics》,这里我为了保证与最新的技术接轨看的是英文第五版,而没有选择第二版的中文翻译版本。不过在记笔记时多少也会参考一下中文版本
大家好,我是阿潘,今天给大家分享一篇最新的成果NeROIC,号称可以从在线图像集合获取对象表示的新方法,从具有不同相机、照明和背景的照片中捕获任意对象的高质量几何和材料属性!
本章是前面第四章光线追踪内容的扩展内容,内容比较少,字数4.4k,补充了一些实现光线追踪中常用的更进一步的技术,包括对透明物体的渲染,实例化技术在光线追踪中的应用,如何在光线追踪中渲染构造实体几何(CSG)和利用分布式光线追踪可以达到的很多华丽的效果。
原文链接: http://www.gamedev.net/reference/programming/features/simpleSSAO/
(温馨提示:本系列知识是循序渐进的,推荐第一次阅读的同学从第一章看起,链接在文章底部)
在网上查资料时,无意间发现了一门课叫《现代计算机图形学入门》。于是事隔将近3年后,我再一次尝试图形学入门。这次学习从8月20号开始,一直到10月11日,约持续了一个半月。
ID3DXMesh继承自ID3DXBaseMesh接口 ID3DXBaseMesh包含一个顶点缓存和一个索引缓存 一个mesh是由一组子集(subset)组成的 子集是具有相同属性的一组三角形 这里的属性指材质,纹理,渲染状态 属性ID存在mesh的属性缓存中,DWORD类型 子集i与材质和纹理数组的第i项对应 Mesh的顶点和索引缓存可以被重组以便更快地渲染,如根据属性把三角形重新排一下序 优化有时要用到邻接数组 Mesh可以被拷贝,拷贝的同时可以改变顶点格式 Mesh不包括顶点法线数据时,可以
1球心坐标(ECEF)与本地坐标(NEU) 假如你来到一个陌生城市,你很可能需要问路、通常会告诉你向北走100米,右转,向东走100米,理解起来很直观。你给儿子买了一个地球仪,你从北京(39,115)转到伦敦 (51,0),这个动作就可以分解为两步:先转到同一个经度(39,0),在转到同一个维度(51,0) 这个例子体现了一个问题:不同的地理范围下会使用更适合的坐标系。比如前者是局部的平面坐标,而后者是球面坐标。因此,同一个点相对不同的原点,具有不同的相对位置:既是地球上的一个经纬度,又是“出门右转富士康
这是关于渲染的系列教程的第十部分。上一次,我们使用了多个纹理来创建复杂的材质。这次我们再增加一些复杂度,并且还支持多材质编辑。
Open3D是一个开源库,支持快速开发和处理3D数据。Open3D在c++和Python中公开了一组精心选择的数据结构和算法。后端是高度优化的,并且是为并行化而设置的。
在UE系列[1]第一篇材质篇中,我们提到了UE的材质定义:Controlling the appearance of surfaces in the world using shaders。
目标识别、深度估计、边缘检测、姿态估计等都是研究界认为有用的和已解决的常见视觉任务的例子。其中一些任务之间有着明显的相关性:我们知道曲面法线和深度是相关的(其中一个是另外一个的导数),或者空间中的灭点(vanishing point)对于定位是有帮助的。其他任务相关性不太明显:关键点检测和空间中的阴影如何共同执行姿态估计。
这项研究由加州大学洛杉矶分校(UCLA)的六位学者完成,并已被欧洲计算机视觉国际会议(ECCV)采纳。
两个点云要注册在一块,一般分两个步骤:先做一个大致的对齐,也就是所谓的初始注册,一般可以通过一些可靠的点对来计算得到(如图3所示);然后在初始注册的基础上进行精细注册,提升注册的精度(如图4所示)。精细注册的方法,一般采用ICP算法,也就是最近点迭代的方法。
基于物理的渲染(PBR,Physically Based Rendering)1 指在不同程度上基于现实世界的物理理论的渲染技术的集合。它包括了 2:
3D点云特征描述与提取是点云信息处理中最基础也是最关键的一部分,点云的识别。分割,重采样,配准曲面重建等处理大部分算法,都严重依赖特征描述与提取的结果。从尺度上来分,一般分为局部特征的描述和全局特征的描述,例如局部的法线等几何形状特征的描述,全局的拓朴特征的描述,都属于3D点云特征描述与提取的范畴,
1.Instant3D: Instant Text-to-3D Generation
如果要创建一个更加真实的场景,我们就需要模拟光和物体表面的交互。这比我们之前制作的不受光的着色器要复杂的多。
文章:LOG-LIO: A LiDAR-Inertial Odometry with Efficient Local Geometric Information Estimation
出于实用目的,这些着色和光照方程当然必须在代码中实现。在本节中,我们将讨论设计和编写此类实现的一些关键考虑因素。我们还将介绍一个简单的实现示例。
流水线 1.应用阶段:(CPU)输出渲染图元,粗粒度剔除等 比如完全不在相机范围内的需要剔除,文件系统的粒子系统实现就用到粗粒度剔除。 2.几何阶段:(GPU)把顶点坐标转换到屏幕空间,包含了模型空间 到世界空间 到观察空间(相机视角view) 到齐次裁剪空间(投影project2维空间,四维矩阵,通过-w<x<w判断是否在裁剪空间) 到归一化设备坐标NDC(四维矩阵通过齐次除法,齐次坐标的w除以xyz实现归一化) 到屏幕空间(通过屏幕宽高和归一化坐标计算)。 a.顶点着色器:坐标变换和逐顶点光照,将顶点空间转换到齐次裁剪空间。 b.曲面细分着色器:可选 c.几何着色器:可选 d.裁剪:通过齐次裁剪坐标的-w<x<w判断不在视野范围内的部分或者全部裁剪,归一化。 e.屏幕映射:把NDC坐标转换为屏幕坐标 3.光栅化阶段:(GPU)把几何阶段传来的数据来产生屏幕上的像素,计算每个图元覆盖了哪些像素,计算他们的颜色、 a.三角形设置:计算网格的三角形表达式 b.三角形遍历:检查每个像素是否被网格覆盖,被覆盖就生成一个片元。 c.片元着色器:对片元进行渲染操作 d.逐片元操作:模板测试,深度测试 混合等 e.屏幕图像 ------------------------------------------------------- 矩阵: M*A=A*M的转置(M是矩阵,A是向量,该公式不适合矩阵与矩阵) 坐标转换: o.pos = mul(UNITY_MATRIX_MVP, v.vertex);顶点位置模型空间到齐次空间 o.worldNormal = mul((float3x3)_Object2World,v.normal);//游戏中正常的法向量转换,转换后法向量可能不与原切线垂直,但是不影响游戏显示,而且大部分显示也是差不多的。一般用这个就行了。 o.worldNormal = mul(v.normal, (float3x3)_World2Object);顶点法向量从模型空间转换到世界空间的精确算法,公式是用_Object2World该矩阵的逆转置矩阵去转换法线。然后通过换算得到该行。 ------------------------------------------------------- API: UNITY_MATRIX_MVP 将顶点方向矢量从模型空间变换到裁剪空间 UNITY_MATRIX_MV 将顶点方向矢量从模型空间变换到观察空间 UNITY_MATRIX_V 将顶点方向矢量从世界空间变换到观察空间 UNITY_MATRIX_P 将顶点方向矢量从观察空间变换到裁剪空间 UNITY_MATRIX_VP 将顶点方向矢量从世界空间变换到裁剪空间 UNITY_MATRIX_T_MV UNITY_MATRIX_MV的转置矩阵 UNITY_MATRIX_IT_MV UNITY_MATRIX_MV的逆转置矩阵,用于将法线从模型空间转换到观察空间 _Object2World将顶点方向矢量从模型空间变换到世界空间,矩阵。 _World2Object将顶点方向矢量从世界空间变换到模型空间,矩阵。 模型空间到世界空间的矩阵简称M矩阵,世界空间到View空间的矩阵简称V矩阵,View到Project空间的矩阵简称P矩阵。 --------------------------------------------- _WorldSpaceCameraPos该摄像机在世界空间中的坐标 _ProjectionParams _ScreenParams _ZBufferParams unity_OrthoParams unity_Cameraprojection unity_CameraInvProjection unity_CameraWorldClipPlanes[6]摄像机在世界坐标下的6个裁剪面,分别是左右上下近远、 ---------------------------- 1.表面着色器 void surf (Input IN, inout SurfaceOutput o) {}表面着色器,unity特殊封装的着色器 Input IN:可以引用外部定义输入参数 inout SurfaceOutput o:输出参数 struct SurfaceOutput//普通光照 { half3 Albedo;//纹理,反射率,是漫反射的颜色值 half3 Normal;//法线坐标 half3 Emission;//自发光颜色 half Specular;//高光,镜面反射系数 half Gloss;//光泽度 half Alpha;//alpha通道 } 基于物理的光照模型:金属工作流Surfa
如下图示,通常一个光滑的表面(比如水晶球)会反射环境光,因此我们可以看到球面上会被映射出其他物体。那么计算机中如何表示这个呢?
《玩具帝国》是一款Windows+安卓平台的双端游戏,使用Unity URP进行开发。画面属于写实风格。
这里讲一下为什么我们需要光线追踪,主要是因为光栅化没有办法很好的处理全局的光照效果,就像上节课我们说的到软阴影,还有这个毛玻璃一样的反射光,以及这种间接的光照效果,光栅化无法很好处理,虽然光栅化很快,光线追踪很慢,但是光线追踪的效果很好
1.Globally Consistent Normal Orientation for Point Clouds by Regularizing the Winding-Number Field(SIGGRAPH 2023 Best Paper)
图 1:DeepSDF 通过潜在编码和前馈解码器网络来表征形状的符号距离函数。以上图像是 DeepSDF 在学习到的形状潜在空间中进行两个形状的插值后的光线投射渲染。
如果液体不动时,在视觉上是无法与固体区分开的。你看的到底是水,果冻还是玻璃杯呢?水池是结冰的吗?但可以肯定的是,如果干扰它并观察它是否会变形,以及变形多少就可以区分。仅从创建上看起来像流体的材质是远远不够的,实际上它必须要能动起来。否则,它就是看起来像是水的玻璃雕塑或已经结冰的水。当然,这对于一张照片来说已经足够了,但对于电影或游戏来说远远足够。
本节介绍最基本的变换,例如平移、旋转、缩放、剪切、变换级联、刚体变换、法线(normal)变换(不太normal)和逆计算。对于有经验的读者,它可以作为简单变换的参考手册,对于新手,它可以作为对该主题的介绍。这些材料是本章其余部分和本书其他章节的必要背景。我们从最简单的变换开始——平移。
代码:https://github.com/LiangliangNan/Easy3D
文章:Optimising the selection of samples for robust lidar camera calibration
现有的视觉SLAM一般假定环境是刚性的,这种假设很大程度上限制了算法的应用,因为现实环境是动态变化的(汽车,行人等)。现有的解决方法一是通过动态物体去除来缓解这个问题,但是随着动态物体点占比的提升,直接采取去除的方式会大大降低定位的精度;二是利用深度学习来标注动态物体从而来维持静态环境的假设,但是这样会导致环境信息的丢失;三是基于语义来同时解决SLAM和目标跟踪问题,这也是这篇文章的技术基础之一。
偏导数函数(HLSL中的ddx和ddy,GLSL中的dFdx和dFdy)是片元着色器中的一个用于计算任何变量基于屏幕空间坐标的变化率的指令(函数)。在WebGL中,使用的是dFdx和dFdy,还有另外一个函数fwidth = dFdx + dFdy。
领取专属 10元无门槛券
手把手带您无忧上云