近期热门
粉丝3
关注 0
获赞 0
技术贴:解决三维出图黑白边缘溢出问题

[模型] 技术贴:解决三维出图黑白边缘溢出问题

 !heats_icon! [复制链接]
12624 7 0 1 9年前 举报



     我之前做后期时,有时候三维模型渲染出来的图片有黑白边缘溢出,三角形锯齿,为了解决这个问题,我咨询了一些同行和一个在龙渲渲染农场工作的朋友,因为他们公司是做云渲染方面业务,和朋友也是在几次使用龙渲的时候认识的,龙渲的渲染速度比一般的渲染农场更快,发现他们的工作人员在这方面很专业的。这里也顺便给大家推荐一下这个渲染农场,是和梦工厂一样的渲染架构,而且最近有活动可以免费渲1个月,很划算。

     下面,我结合朋友和一些网友的案例,帖子,摸索出了一些解决方法,今天在这里来和大家探讨分享一下,不足之处,敬请指正。

     像素、抗锯齿的基本概念:

     黑白边产生的原因——AA抗锯齿,要知道我们渲染出来的图都是位图,

     在位图中,只有完全水平或者垂直的直线那么它像素都是100%不透明的,任何斜线都必然带有很多透明像素才能让视觉效果看着像斜线。抗锯齿就是指对图像边缘进行柔化处理,使图像边缘看起来更平滑,更接近实物的物体。

     物体边缘总会或多或少的呈现三角形的锯齿,而抗锯齿就是指对图像边缘进行柔化处理,这就是抗锯齿。


0.jpg

     从小图看的话,就是黑色的直线。


1.jpg

     从大图看的话,实则斜线的边缘很多黑色都是半透明的。

     龙渲的朋友说因为每个像素都是一个方格,而且并不是无限小,从近处看是很多像素方格,但是放远了看,就很像一根斜线了。这是位图对图形的一种近似描述方式。而轮廓线边缘这种像素呈半透明现象要做抗锯齿(anti-aliasing)。叫这个名字的原因是,如果边缘轮廓像素都是纯黑色的话,图像看起来就会有明显的锯齿感!


2.jpg

     alpha的两种类型,直通和预乘:

     龙渲的朋友告诉我,带alpha的图片有两种计算方法,一种叫做直通alpha(straight alpha),一种叫做预乘alpha(premultiplied alpha)。这两种类型在AE软件里可以看到的,当你从AE导入一张带通道的图片,比如说Tag。AE就会问你,这张图的alpha是怎么来的,是直通类型还是预乘类型。

     区别:这两种类型的唯一区别在于,直通alpha图片保留最原本的RGB数值;而预乘alpha,是原本的RGB信息乘以alpha的数值以后得到的结果(预乘意思就是预先乘以alpha)。


3.jpg

     我在三维软件中渲染了一个透明的球。


4.jpg

     它的alpha通道明显是这样的。

     但其实这张图片原本并不是你看到的那样,它其实应该是下图所示,你看到的球里面多出来的颜色,是场景本身的背景。过程是这样的:本来完好的一张图,前景和背景都有,你分开渲染的时候,前景部分使用alpha通道抠除,就会得到透明效果,而没有被alpha通道抠除之前的效果呢,就是下图这样的。这两种状态呢,其实就是对应的我们alpha通道的两种计算方式:直通和预乘。


5.jpg

   这张图其实就是一张直通类型的图片,它其实就是我们之前透明的预乘图片,除以alpha值得到的结果,这一个除法的步骤,相当于预乘的原图乘以alpha的逆运算,抵消掉了,就可以得到原始的可以看到背景的图片了;图中黑色区域没有原先的背景,是由于我们这张直通的图片,是通过预乘的图片除以alpha通道的值得来的,因为纯透的地方alpha值为0,任何数除以0都得到无限大,所以这些地方原本的信息已经丢失了,只好显示黑色。

     所以你会发现,直通和预乘,就是两个逆运算的关系。你原图不用alpha去抠,就是直通的效果,乘以alpha以后就是预乘的效果,预乘的效果除以alpha又得到直通的效果。这就是直通和预乘的关系。

     PS中渲染输出黑白边解决方法:

     说回图片黑边白边的问题。当你把渲染好的图片导入ps的时候,比如说你用的TGA,那么,你会有一个背景为黑色或者白色的实心图片,顺带一个alpha通道,你要把这个图合到背景上去,你就会用alpha把图抠了,再放到背景上去。这时候图片就会有黑边,除非你背景是黑色看不出来。


6.jpg

     原因是这样的,你导入ps的图片本身是这样的。


7.jpg

     这是三维软件里直接渲染出来的图,是一种预乘类型的图。也就是说,这图已经被alpha乘过了,你就可以理解成已经被alpha扣过了。但是ps这个软件,它理解不了这个事情,它以为世界上所有的图片都是直通类型的,就是没有过被alpha扣过的图。也就是说,它以为这图本身的背景就是黑色的。而其实这个图是有一个黄色背景的。

     然后,你在ps里面做的事情是用alpha通道去扣这张图,而这张图原本其实是一张预乘的图。或者说,这张图已经被alpha扣过一次了,那么你再去扣一次,会让很多地方看起来比从前更黑,于是黑边就这么产生了。(在图像边缘,有抗锯齿的地方,抗锯齿就是透明,我就不放大看了。)

     而在ps里面想要解决的方案是,把一张直通的图导进去。


8.jpg

     再用alpha去抠,才能得到正确的结果。

     mental ray里渲染得到直通图的方法是勾除premultiply。vray里无法实现。


9.jpg



0
点赞
0
打赏
1
添加到收藏夹

0

点击复制链接

使用微信扫码分享
一次扣10个券
全部评论7
您需要登录后才可以回帖 登录

啥也没解决,不能抗锯齿 ,出图了还有什么用?
4年前
回复

使用道具 举报

谢谢楼主分享
8年前
回复

使用道具 举报

谢谢lz,我这就去试试。

9年前
回复

使用道具 举报

推荐给大家!龙渲网站: ht t p ://www.loongrender.com/。
9年前
回复

使用道具 举报

之前遇到过这种问题,但是不清楚原因,默默收了。

9年前
回复

使用道具 举报

龙渲云渲染在这方面做的真的很专业,渲染速度确实杠杠的。而且渲染出的图片也很清晰。
{:7_288:}
9年前
回复

使用道具 举报

提示: 作者被禁止或删除 内容自动屏蔽
9年前
回复

使用道具 举报

您当前使用的浏览器IE内核版本过低会导致网站显示错误

请使用高速内核浏览器或其他浏览器