电脑图像

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

4
为什么网格中的T型结会导致裂缝?
我从许多消息来源获悉,在3D网格中包含T型结是一个坏主意,因为它可能在渲染过程中导致裂缝。有人可以解释为什么会发生这种情况吗?如何避免这种情况发生?
19 mesh 

2
Illustrator的矢量栅格化过程是什么?
我目前正在尝试了解有关矢量图形栅格化的一些知识,以及在各种应用程序类型中实现矢量栅格化的不同方式。 我测试并比较了一些程序,并注意到在光栅化过程中抗锯齿的行为方式存在很大差异。我对Illustrator中的渲染行为特别感兴趣。通过进一步阅读,您会明白为什么。 在我的测试中,我使用了非常简单的三角形组成,这些三角形以不规则的六边形组织,并具有不同的颜色。 矢量图形软件 这是Illustrator,Affinity和Inkscape中相同矢量图形的三个渲染。(在Affinity和Inkscape中生成的图像完全相同。) 如您所见,在用Affinity和Inkscape渲染的图像的每个边缘上都有一条多余的白线。抗锯齿不会用纯色填充此区域,从而导致相邻形状之间的间隙很小。 尽管Illustrator渲染中没有间隙,但是形状的边缘看起来像“亲和力”渲染一样平滑。 这是一张图像,显示每个图像放大后的相同区域。 这两个图像之间有非常细微的差异。Affinity渲染稍微更平滑,但是在查看原始大小的图像时几乎看不到差异。 浏览器 SVG渲染 在浏览器中显示导出为SVG的相同图形看起来与Affinity和Inkscape生成的栅格图像非常相似。 边缘抗锯齿的差异很小(在此处不值得展示),但是常见浏览器中的SVG光栅化行为几乎相同。 分解渲染 为了进一步测试Illustrator渲染,我尝试了分割图形的各个部分并分别导出它们,然后将它们与栅格编辑软件重新组合在一起。 从理论上讲,它会产生与单张图像相同的图像,但是使用此方法时,结果会略有不同。 如图所示,当两个部分组成时,它们之间有一个很小的间隙。尽管它更加微妙,但它与Affinity中呈现的图形非常相似。 多边形渲染 搅拌器(3D软件) Blender允许您导入SVG文件并将其作为曲线对象进行操作。这是3D视口中显示的导入图形。(默认情况下,材质将受到场景中灯光的影响。在材质属性面板中选中无阴影属性将允许使用原始颜色渲染形状。) 这是Blender内部的SVG制成的渲染。 三角形之间没有任何间隙。其他3D软件很有可能以相同的方式工作。那么Blender的行为就像Illustrator一样吗?也许是相反的方式? 真正的问题 Illustrator在幕后使用哪个矢量绘图库? Illustrator是否有可能使用某种3D渲染引擎?它是开源的吗?(可能不会?) 开罗和斯基亚(Skia)等任何知名的矢量绘图库都能实现相同的渲染行为吗?(形状之间无间隙) 有没有鲜为人知的矢量绘图库,具有相同的行为?

3
计算网格三角形主曲率的最简单方法是什么?
我有一个网格,在每个三角形周围的区域中,我想计算主曲率方向的估计值。我以前从未做过这种事情,而Wikipedia并没有太大帮助。您能描述或指出一个简单的算法来帮助我计算此估算吗? 假设我知道所有顶点的位置和法线。
19 mesh 

1
在OpenGL的上下文中,“ st”是什么意思?
st在查看其他OpenGL片段着色器时,我已经见过几次这个术语。但是,我不知道它代表什么或用途。这是一个例子: uniform vec2 u_resolution; vec2 st = gl_FragCoord.xy/u_resolution; 我可以理解,这是将像素坐标转换为0.0-1.0的规范化坐标,而不是640 x 480(例如)。 我也看过类似的东西position.st。 这是什么意思?
19 opengl 

4
如何射线追踪贝塞尔曲面?
我在math.SE上尝试了这个问题,令人惊讶的是,答案是“方程式太讨厌了,只需将函数提供给数值根查找器即可”。但是,如果您认为自己像我一样是“图形专家”,并且在设计工作中广泛使用Bezier曲线,那么我必须相信可以做得更好。Kajiya有一个已发布的算法,我没有背景知识(Sylvester矩阵),但是有关数学的建议是SE,其结果是t中的18度多项式,您仍然需要解决该问题。数值上。我有另一个想法,结果也差不多。 因此,希望以代数方式解决Ray / Bezier曲面相交问题,从而使其有可能进行明确的编码并具有超快的超光滑度,这是一个总的梦想吗? 除此以外,执行此计算最快的方法是什么?您是否可以“找到摆动”来获得递归细分的严格界限(和目标)?如果必须使用数字寻根器(叹气),它需要什么属性,并且速度是最佳选择吗? 我最初的想法是准备特定的表面,类似于我对三角形的其他数学问题的答案中所述的拉普拉斯展开。但是我也会对通用方法感兴趣。我只是在考虑一组固定的形状,例如犹他州的茶壶。但是我对优化动画帧之间的时间连贯性的方式非常感兴趣。

2
相关样本如何影响Monte Carlo渲染器的行为?
大多数有关蒙特卡洛渲染方法的描述(例如路径跟踪或双向路径跟踪)都假定样本是独立生成的;也就是说,使用标准随机数生成器来生成独立,均匀分布的数字流。 我们知道,在噪声方面,并非独立选择的样本可能会有所帮助。例如,分层采样和低差异序列是相关采样方案的两个示例,它们几乎总是可以改善渲染时间。 但是,在许多情况下,样本相关性的影响并不那么明确。例如,马尔可夫链蒙特卡罗方法(例如Metropolis Light Transport)使用马尔可夫链生成相关样本流。多光方法将一小束光路重用于许多相机路径,从而创建许多相关的阴影连接;甚至光子贴图也可以通过重用许多像素之间的光路来提高效率,同时还可以提高样本相关性(尽管有偏见)。 所有这些渲染方法在某些场景中都可以证明是有益的,但在其他场景中似乎会使情况变得更糟。除了用不同的渲染算法渲染场景并盯着一个外观是否比另一个外观好外,尚不清楚如何量化这些技术引入的错误质量。 所以问题是:样本相关性如何影响Monte Carlo估计量的方差和收敛性?我们能否以数学方式量化哪种样本相关性比其他样本更好?还有其他考虑因素可能会影响样本相关性是有益还是有害(例如,感知错误,动画闪烁)?

1
基于图块(延迟)渲染的数据结构
平铺渲染用于现代移动GPU架构中,通过将图像空间细分为规则的小(例如32x32像素)图块网格来增加内存访问的一致性。考虑到任意多个原始图元可能与任何给定的图块重叠,用于跟踪与每个图块关联的图元的数据结构类型的信息很少。 从驱动程序开发人员的角度来看,通常使用哪种数据结构来表示属于图块的原始集,并且这些结构是否根据与特定图块重叠的几何形状进行动态分配/调整大小?

2
地下散射的“偶极近似”是什么?
如果您阅读有关地下散射的论文,那么您会经常遇到对称为“偶极近似”的参考。这个术语似乎可以追溯到Henrik Wann Jensen等人的论文《地下光传输的实用模型》,但是这篇论文很难理解。 谁能用相对简单的术语解释什么是偶极子近似,以及如何在渲染地下散射时使用它?

2
如何正确组合漫反射和镜面反射项?
据我了解,在BRDF中,菲涅耳术语告诉我们光子撞击表面时被反射或折射的可能性。 反射光子将有助于镜面项,而折射光子将有助于散射项。因此,当以基于物理的方式确定光对材料颜色的贡献时,我很想写: // Assuming for example: // diffuse = dot(L, N); // specular = pow(dot(H, N), alpha) * (alpha + 2.0) / 8.0; // fresnel = f0 + (1.0 - f0) * pow(1.0 - dot(E, H), 5.0); color = lightIntensity * Lerp(diffuse * albedo, specular, fresnel); 但是,我认为我从未见过这样写过。我已经看到镜面反射项是根据菲涅耳项进行加权的,而不是弥散项。塞巴斯蒂安·拉加德 SébastienLagarde)在其关于PBR的大量引用文章中甚至指出,使用加权扩散项是不正确的。(1 − F)(1个-F)(1 …

2
什么是fwidth,它如何工作?
在OpenGL的文档指出fwidth returns the sum of the absolute value of derivatives in x and y。 用较少的数学术语表示什么,有没有办法将其可视化? 根据我对功能的理解,fwidth(p)可以访问p相邻像素中的值。它如何在GPU上工作而又不显着影响性能?它在所有像素上均可靠且均匀地工作吗?
18 opengl 

4
VR与显示器有何不同
显然,Macintosh计算机由于其“劣等”图形卡而无法处理Oculus Rift。但是,VR不仅应该像外接显示器一样吗?关于计算机图形,VR游戏与Macintosh可以轻松运行的其他游戏有何不同?问题出在哪里?


1
为什么要在半球(而不是球)上积分以解决渲染方程?
在我见过的大多数教科书中,渲染方程式是这样写的: 大号0(ω0)= LË(ω0)+ ∫ΩF(ω一世,ω0)L一世(ω一世)d ω一世大号0(ω0)=大号Ë(ω0)+∫ΩF(ω一世,ω0)大号一世(ω一世)dω一世L_0( \omega_0)= L_e(\omega_0)+\int_{\Omega}{f(\omega_i, \omega_0)L_i(\omega_i)\,\mathrm{d}\omega_i} 其中被定义为半球(所有这些函数都依赖于更多变量,为简单起见,在此省略)。ΩΩ\Omega 现在,假设要渲染的表面是某种玻璃或某种透明塑料。为什么只在半球范围内整合才有意义?我可以想象,可以有来自任何方向的入射光,因此积分域应该是整个球体。来自玻璃后面的光线如何解释?


1
没有任何输入几何体,是否可以在几何着色器中生成图元?
几年前,我尝试在OpenGL中实现此GPU Gem,以使用Marching Cubes生成3D程序地形。本文建议在几何着色器中实现Marching Cubes,以实现最高效率。这意味着我需要为域中的每个体素运行一次着色器,它将在该单元格中生成整个几何体。 我偶然发现的一个问题是如何运行几何着色器,而实际上没有在该着色器之外进行任何渲染。我的解决方案(似乎很棘手)是在每个单元格中渲染一个点,然后用几何着色器丢弃它,然后发出三角形。我从未找到合适的解决方案,并且此解决方法仍保留在最终代码中。 因此,是否有任何方法告诉OpenGL从几何着色器开始渲染过程而无需任何输入几何?还是我总是必须向GPU发送一些虚拟点才能使事情运行。

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.