电脑图像

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

1
我需要考虑眼虹膜的哪些影响?
虹膜(围绕眼睛瞳孔的彩色环)被一层水覆盖,并且似乎具有嵌入透明和半透明元素中的不透明元素。为了使虹膜看起来逼真的特写(虹膜占据图像区域的20%以上),我需要建模什么效果? 表面散射是必要的还是透明性足够?是否有必要考虑通过瞳孔进入眼睛的光线,还是可以将虹膜背面视为完全不透明?我还没有考虑其他影响吗? 我希望离线生成静止图像-该方法不需要实时工作。 到目前为止,我已经尝试用透明的薄膜覆盖眼睛以模拟水层,并将虹膜当作透明球的一部分,并以彩色透明径向排列的线束排列,因为它们从前到后分层。为了防止光线直射产生不必要的影响,我在虹膜上使用了无光泽的黑色球形部分作为后盾。这似乎仍使眼睛看起来有些虚假(无机)并且断开了连接。 我正在尝试使用诸如球体,圆锥体和圆柱体之类的几何图元进行此工作,但是如果这开辟了新的可能性,我愿意使用三角网格。

1
使用多种光源进行高效渲染
要使用phong阴影渲染具有单个光源的场景,可以基于材质和光源的环境/漫反射/镜面反射分量计算传递到片段着色器中的每个片段的最终颜色。 通过将将每个单独光源应用于片段的结果加在一起,可以很容易地扩展它以适应多个光源: final_color = (0, 0, 0, 1) for each light: final_color += apply_light(material, light) final_color = clamp(final_color, (0,0,0,1), (1,1,1,1)) 但是,在有大量光源的情况下,此过程非常缓慢;对于N灯光,这种方法需要计算phong阴影N每个片段的时间。 有没有更好的方法来渲染具有大量光源(数百个,数千个等)的场景?

1
3D静止图像中的景深是否不一致?
如果以2D渲染图像,则添加景深效果(将对象从焦距进一步模糊)会增加真实感,并吸引人眼注意图像的对象。对于3D(即立体)图像,以给定深度查看图像中的对象将使所有其他深度的对象散焦(不模糊,但眼睛错误对准,从而产生双重图像)。这意味着如果使用景深效果,将会产生矛盾的结果:查看处于不同深度的对象将导致该深度成为唯一没有双重图像的深度,但它也是模糊。这使对象具有被关注的特性和未被关注的特性。在3d静止图像中,景深效果是否不利于眼睛对图像的接受,还是有解决方法?


3
确定像素颜色的高斯分布的最佳半径是多少?
使用图像平面上的点的高斯分布来计算像素值,什么半径/标准偏差将在最终图像中提供最多信息?半径太大会产生模糊的图像,而半径太小则会忽略小于像素的信息,因此对最终图像没有帮助。最佳折衷在哪里?这个问题是否只有一个答案,或者在某些情况下可能会有所不同? 我正在考虑与光线追踪有关的问题,但我想它会同样适用于缩小图像等事情。在答案可能不同的地方,我对在连续图像平面采样时适用的内容感兴趣,因此无法使用较大图像中像素的位置来确定最佳半径。
10 sampling  pixels 

1
景深如何实现?
我知道景深涉及模糊。 在问题如何实现高斯模糊中,有一些有关如何进行高斯模糊的重要信息。 但是,除此之外,如何实现景深? 关于如何使每个像素模糊的规则是什么,以及当一个像素不想模糊太多时,如何处理这种情况呢? 我也听说过“混乱的圈子”,但不知道那是什么。 谁能用一种简单易懂的方式解释自由度?

3
为什么顶点缓冲区对象可以提高性能?
根据我的基本了解,顶点缓冲区对象的工作原理如下(伪代码): 通常,如果要说画一个正方形,可以发出画线命令。 line (0, 0) -> (1, 0) line (1, 0) -> (1, 1) line (1, 1) -> (0, 1) line (0, 1) -> (0, 0) 如果我理解正确,则使用VBO会将顶点加载到VBO中。 define VBO load (0,0) -> VBO load (1,0) -> VBO load (1,1) -> VBO load (0,1) -> VBO load (0,0) -> VBO 然后,您可以发出一个绘图命令。 …

1
创建JPEG时,如何最大程度地减少伪像的出现?
创建JPEG图像时,似乎有两个主要因素导致数字伪像:混淆和压缩。 例: 将带有字符的PNG转换为JPEG或将矢量图像放置在照片上,将导致其边缘像素化。抗锯齿通常会在其周围产生一种模糊,但是如果图像进行有损压缩,则部分细节也会丢失,因此模糊和像素化可能会变得不太明显。 这是正确的做法吗?即,由于无损压缩会生成非常详细的图像,因此因混叠而产生的伪影会更加明显,因此尽管会损害图像质量,但通过使用正确的压缩可以找到平衡点。 编辑 我只是将此JPEG保存在mspaint(3.46KB)中: 这是具有最大压缩率(最低质量,0.5KB)的相同JPEG: 这是具有50%压缩率的相同JPEG(注意大小差异为1.29KB): 相同的50%压缩率,但保存为“渐进JPG”,保留了原始EXIF和XMP数据,并“尝试以原始JPG质量保存”(您会注意到周围没有灰色像素,为2.96KB): 最后与禁用色度二次采样的文件相同(文件大小为2.96KB):

2
散射区光的总发射功率
我正在读《基于物理的渲染》一书(Pharr,Humphreys)。在“光”一章中,他们讨论了近似估算各种光的总发射功率。例如,点光源的总功率为intensity * 4 * pi。在此4pi表示整个球体的立体角。这对我来说很有意义,因为强度*立体角=功率(或辐射通量)。您也可以按单位查看。强度为W / sr,立体角为sr,因此W/sr * sr = W功率以瓦特为单位。它签出。 但是,我不了解的相应计算DiffuseAreaLight。根据我对这本书的理解,他们计算出散射区域光发出的总功率为emitted radiance * area * pi。因为辐射的单位是W /(sr * m ^ 2),所以乘以面积就得到W / sr。这使我认为pi因子代表立体角-但是为什么只有1pi?我会猜到2pi,因为区域光的每个点都会在一个完整的半球内辐射(相当于2pi球面度)。 您可以在此处找到本书中提到的实际代码。 我有什么误会?为什么total emitted power = emitted radiance * area * pi对于漫射区域灯有意义?

1
正射投影和透视投影之间有什么区别?
我一直在学习《计算机图形学基础》(但第三版)一书中的计算机图形学,最后阅读了有关投影的信息。但是,我不完全了解正投影和透视投影之间的区别是什么?为什么我们都需要它们,它们在哪里使用?我还想了解什么是透视投影中在正交投影之前应用的透视变换。最后,为什么我们需要进行视口转换?我的意思是,如果摄影机/查看器未查看 -direction,则使用视图转换,但是视口又如何?- ž-ž-z


1
跳跃洪水算法可分离吗?
JFA(此处描述的算法:http : //www.comp.nus.edu.sg/~tants/jfa/i3d06.pdf)可用于获得Voronoi图的近似值或距离变换。它是根据对数图像的大小而不是种子的数量在对数时间内完成的。 如果每个轴上的图像大小都不相同,该怎么办? 如果它们的大小相似,我相信您可以让较短的轴具有大小为1的额外JFA步长,而较大的轴则可以完成它的工作(例如具有512 x 256大小的图像)。但是,对于大小各异的轴尺寸,效率可能低得多-假设您的体积纹理为512 x 512 x 4。 是否可以在每个轴上分别运行JFA并仍然获得不错的结果? 还是那时候更适合使用其他算法?如果是这样,那可能是什么算法? 在我的情况下,理想情况下,我希望同时支持单点种子和任意形状的种子。甚至可能是加权种子,其中到种子的距离由乘数和/或加法器调整以或多或少地产生影响。

2
如何在GPU中更新深度缓冲区?
现在,我正在尝试在软件中实现某种深度缓冲区,并且在编写该缓冲区时遇到了一个大问题。拥有一个互斥体绝对是多余的。因此,我创建了数量与线程数相等的互斥体。我正在基于当前像素(pixel_index%Mutexes_number)锁定互斥锁,效果更好,但仍然非常慢。我不知道它是如何在真实的GPU中完成的?有聪明的算法或硬件可以处理吗?
10 buffers 

1
如何准确计算重叠分析曲线的覆盖率?
2D形状的抗锯齿归结为计算该形状所覆盖的像素分数。对于简单的非重叠形状,这并不是太困难:将形状裁剪到像素矩形上,​​然后计算结果形状的面积。但是,如果多个形状重叠同一像素,则会变得更加困难。如果忽略某个形状覆盖另一种形状的数量,仅对面积求和可能会导致计算的覆盖率过高。例如,请参见有关字体渲染的本文“限制”部分。您可能还会遇到两条曲线来自具有不同颜色的不同对象的情况(因此,这与两个形状的并集的总覆盖率无关,而是分别覆盖每个形状的覆盖率)。 如果您关心完全准确性,将如何计算?更棘手的是,如何为重叠的非多边形形状(如曲线)准确计算覆盖率?您别无选择,只能回到多重采样或随机技术吗?


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.