电脑图像

计算机图形学研究人员和程序员的问答

1
OpenGL兼容性,命名约定以及ARB与EXT
我以为我对OpenGL命名约定和扩展的工作方式已经形成了大致的了解,直到偶然发现一个令我困惑的案例。 到目前为止,这是我的理解: 没有后缀 -例如glGenBuffers()。此功能是核心配置文件的一部分。该wiki页面告诉我,这是添加到从1.5版本开始核心简档。 ARB-例如glGenBuffersARB()。此功能是标准化GL_ARB_vertex_buffer_object扩展的一部分。此扩展的规范GenBuffersARB()在“新过程和函数”部分中明确声明。“依赖关系”部分告诉我,如果硬件支持扩展,则可以从1.4+上下文访问此文件。 EXT-这些是特定于供应商的扩展和功能,只有某些供应商可以支持。顶点缓冲区对象在注册表中似乎没有EXT扩展名。 这是我的理解破裂的地方: glGenFramebuffers正如Wiki所示,在3.0中已添加到核心。 现在,我想以低于3.0的核心配置文件版本访问帧缓冲区功能。因此,我想将其用作扩展。规范注册表告诉我,有两个可用的扩展名-ARB和EXT。 问题1-如果存在ARB扩展名,为什么存在EXT扩展名?您是否总会选择标准化的而不是特定于供应商的一种? 查看“新过程和函数”部分中的ARB规范可知,该扩展定义了该GenRenderbuffers()函数。这次没有ARB后缀。GLEW根本没有功能原型glGenRenderbuffersARB()。奇怪的。 EXT规范GenRenderbuffersEXT()在新功能部分中确实具有功能,而GLEW也具有glGenRenderbuffersEXT()。 问题2-如果有EXT后缀,为什么没有ARB后缀?假设ARB函数的名称和核心函数的名称相同,这对ARB如何起作用? 问题3-我最终希望使用1.4配置文件中的Framebuffer功能。我应该使用哪个扩展名和哪个功能集,以便获得最大的硬件兼容性覆盖?
14 opengl 

3
环境图的重要性抽样
在基于MIS的单向路径跟踪器和类似类型的渲染器中,对环境地图(EM)进行采样的最佳方法是目前已知的最佳方法,并且也是经过生产验证的理想方法?与那些以超复杂且难以理解的实现为代价提供完美采样的解决方案相比,我宁愿选择相对复杂且功能合理的解决方案。 到目前为止我所知道的 有一些简单的EM采样方法。可以以余弦加权的方式采样所需的半球,而忽略了BSDF和EM函数形状。结果,它不适用于动态EM: 为了将采样提高到可用水平,可以对整个球体上的EM亮度进行采样。它相对容易实现,并且效果很好。但是,采样策略仍然忽略了半球可见性信息和余弦因子(以及BSDF),从而导致表面上的高噪声,而这些噪声并未被EM的高强度区域直接照亮: 文件 我找到了一些有关该主题的论文,但尚未阅读。其中任何一个值得在前向单向路径跟踪器中阅读和实现,还是有更好的选择? Agarwal等人(2003年)对环境图进行结构化重要性抽样。 Kartic Subr和Jim Arvo撰写的Steerable Importance Sampling(2007)。他们声称提出了“ ...一种用于环境图的有效分层重要性抽样的算法,该算法在考虑到余弦加权的情况下,在由任意表面的局部方向定义的正半球中生成样本。“论文《重要采样球谐函数》对此发表了评论:“他们创建了环境图的三角表示,并在每个顶点处存储了照明度并乘以前九个球谐基函数中的每一个。这形成了一个可操纵的基础,在该基础上可以将夹紧的余弦有效地旋转到任何方向。” Petrik Clarberg和TomasAkenine-Möller的直接照明实用产品重要性采样(2008)。一种对环境地图光照和表面反射率乘积进行采样的算法。使用基于小波的重要性抽样。 Jarosz,Carr和Jensenn撰写的《重要采样球形谐波》(2009年)。摘要说:“ ...我们提出了第一种实用的重要采样函数,表示为球谐(SH)...” Feng et al。(2015)的基于色调映射的均值漂移环境地图采样。这是很新的东西,我既没有找到它的参考,也没有找到论文本身。


3
有什么方法可以在OpenGL中渲染透明度
可以启用Alpha混合以使表面透明,如下所示: glDisable(GL_DEPTH_TEST); //or glDepthMask(GL_FALSE)? depth tests break blending glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 但这仅在对象以从前到后的顺序渲染时才有效。否则,背景中的物体会出现在较近的物体之前,例如下图的地板。对于粒子和GUI元素,可以进行排序,但是对于三角形网格,似乎需要太多的努力和速度,如此处所述:https : //www.opengl.org/wiki/Transparency_Sorting。 有哪些常见方法可以解决此问题?我知道这是相当广泛的,不需要深入的实现细节,而只是对一些方法以及可能涉及的内容进行了简要说明。

3
什么是球谐和光探头?
什么是球谐与光探头?它们在计算机图形学中有多大用处?他们到底在做什么?从Siggraph演示文稿到博客文章,我到处都听到过球谐和光探头这个词。 最近,马特·佩蒂诺(Matt Pettineo)在他们身上发布了由6部分组成的博客系列,但我仍然不明白它们是什么。 这是改善环境照明的另一种方法吗?

1
具有显式光采样的渐进路径跟踪
我了解了BRDF部分重要性抽样背后的逻辑。但是,当涉及对光源进行显式采样时,一切都会变得混乱。例如,如果我的场景中有一个点光源,并且如果我不断地在每个帧中直接对其进行采样,那么我是否应该将其算作蒙特卡洛积分的另一个采样?也就是说,我从余弦加权分布中获取一个样本,从点光源中获取另一个样本。是总共两个样本还是一个样本?另外,我应该将直接采样的辐射光除以任何项吗?

3
为什么在电影制作中使用四边形,在游戏中使用四边形?
在电影学院的3D建模课程中,有人告诉我,当我们为电影建模时,我们会保持4个有边多边形的拓扑。具有多于或少于4个边/顶点的任何多边形都被认为是不好的,应避免使用。如果在游戏中使用了相同的模型,则将其划分为三角形。 尽管我没有主修3D建模,但是我仍然想知道这个问题。为什么在游戏中使用3边多边形?渲染速度更快吗?那为什么不将它用于电影效果图呢?
14 3d  mesh  triangulation 

4
对于着色器数学,为什么线性RGB保持sRGB的色域?
sRGB通常与“线性RGB”形成对比。 图像存储在磁盘上,并以sRGB的形式传递到显示器,其强度在视觉上大致均匀。 着色器数学是在线性RGB上完成的,线性RGB在强度上是均匀的。 可以应用伽玛校正在两者之间进行转换。 现在,sRGB有一个标准,该标准可比色地指定其色域,准确说明纯红色,绿色,蓝色和白色的位置。但是,对于“线性RGB”没有相应的标准。 色度图上的任何三角形都可以说是线性的,实际上,有几个众所周知的色域可供选择: 实际上,当我们说“线性RGB”时,是指“没有伽马校正的sRGB”。(这是我们在将sRGB伽玛校正作为最后的后处理步骤但忽略其余渲染管线的颜色空间时所做的工作。) 但是,为什么是 RGB色域的正确使用进行插值,照明计算?似乎是任意的。如果有的话,我们不是要使用最大可能的色域进行内部计算,然后最后将颜色裁剪或缩放到输出设备的色域吗? 不管是什么,RGB照明都将是近似的,所以我们选择哪种色域都没有关系,我们还可以选择最接近显示器本身支持的色域?只是过失吗?还是以某种方式在这些不同色域中进行计算实际上得出了完全相同的结果?

3
Cook-Torrance / Torrance-Sparrow模型的正确镜面项
一段时间以来,我一直在进行基于物理的渲染这一主题的研究。一遍又一遍提到的反射模型是Cook-Torrance / Torrance-Sparrow模型。在此模型的每次提及或解释中,似乎都使用了不同形式的镜面反射项。我发现的版本是: Fd g ^π(N⃗ ⋅ V⃗ )(N⃗ ⋅ 大号⃗ )FDGπ(N→⋅V→)(N→⋅L→){\frac {FDG}{\pi ({\vec N}\cdot {\vec V})({\vec N}\cdot {\vec L})}} Fd g ^4 (N⃗ ⋅ V⃗ )(N⃗ ⋅ 大号⃗ )FDG4(N→⋅V→)(N→⋅L→){\frac {FDG}{4 ({\vec N}\cdot {\vec V})({\vec N}\cdot {\vec L})}} Fd g ^(N⃗ ⋅ V⃗ )(N⃗ ⋅ 大号⃗ )FDG(N→⋅V→)(N→⋅L→){\frac {FDG}{({\vec N}\cdot {\vec …

4
哪些物理属性“不足”以阻止此3D场景看起来像真实照片?
因此,我知道我基本上是在寻求确定创建逼真的3d图形时要解决的主要问题,但是作为一个在该领域没有太多技术经验的人,我很好奇,如果可以确定这些问题,那么问题出在哪里?以编程方式实施它们。 以下来自杀手的图片是我所说的“超现实”。但是,它肯定仍然看起来像3D模型。如果您要用真实的演员和背景拍摄同一场景的照片,那么可能会有一些明显的差异,足以指出哪个是哪个。 这是为什么?<100%准确的次表面散射?灯光是否过小?等等 PS,抱歉选择标签。我对该SE不够熟悉,无法选择。如果您知道,请在其中进行更好的编辑。


1
如何从Voronoï图进行三角剖分?
我从一组点(使用Boost.polygon)计算了一个Voronoï图。 我尝试找到一个Delaunay三角剖分,将每个Voronoï边的每个像元中心连接起来,但是我错过了一些边。 在下图中,红点是我的初始点,蓝线是Voronoï边缘(我忽略了无限边缘),绿线是三角剖分边缘(每个蓝色边缘一个绿色边缘,连接了两个像元起点)。 我们可以看到缺少对角线边缘。我想念什么?

3
VR和视锥剔除
在渲染VR(立体视图)环境时,你们是否建议仅进行2个视锥检查,以确定在视锥剔除过程中要绘制的内容,或者是否有其他一些检查可以将视锥组合在一起?

4
预计网格水位细节
我正在尝试使用C ++和DirectX11实现海洋场景。目前,我有一个投影网格,Gerstner波浪和基本的阴影。我的问题是,当我将相机水平对准目标时,即使在高顶点数的情况下,我也可以看到远处的水平面,投影网格变得不足。这些屏幕快照说明了问题: 我知道问题的原因在于投影网格的概念(网格在相机附近是详细的,距离相机很远),但是必须有一个最佳实践来解决这个问题。 有任何想法吗?

1
有关傅立叶基函数和球谐函数的详尽且可访问的资料?
球形谐波出现在几种计算机图形技术中。我觉得为了成为更好的计算机图形开发人员,我需要对它们的用途以及使用方式有深刻的了解。 似乎最常推荐的理解球谐函数的参考文献是Peter-Pike Sloan撰写的“愚蠢的球谐函数”。 我开始阅读它,但是没有找到SH的“令人满意的”定义,似乎该文档主要依赖于其他有关“基础知识”的参考。其他参考文献将傅里叶基础函数作为SH的“简单版本”进行了介绍,但是再次很难找到解释它们的好材料。 有哪些全面,易理解的参考资料可以理解傅里叶基函数和球谐函数?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.