游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7253|回复: 11

[原创]卡通渲染另类勾边方法。

[复制链接]

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-2-21 10:11:00 | 显示全部楼层 |阅读模式
根据D3D8里面卡通渲染的例子,里面在勾边的时候是采用对三角形进行着色来实现黑边的效果,对于面比较少的模型来说,会产生很粗糙甚至于不可接受的边缘效果。另外一种比较常用的勾边渲染则是算出法线和光线的夹角接近PI的线,然后来渲染线,这种方法的弊端则是效率太低。

我的方法需要用到stencil buffer,实现步簇是:
1,打开stencil buffer,通过方式设置为always,然后通过之后加1
2,然后渲染原图
3,然后改stencil buffer的配置,通过方式设置为只有等于0的时候才通过
4,加一个vertex shader,其作用是将每个顶点往它的法线方向拉伸一点点
5,把材质的颜色设为黑色,把贴图设置为D3DTOP_SELECTARG1
6,同样的模型渲染第二次

这样就出了黑色勾边的效果,通过调整vs里面往法线方向拉伸的额度来调整勾边的边框的宽。

效果图:
sf_200522110118.jpg

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
 楼主| 发表于 2005-2-21 10:13:00 | 显示全部楼层

Re: [原创]卡通渲染另类勾边方法。

sf_2005221101338.jpg

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2005-2-21 10:36:00 | 显示全部楼层

Re:[原创]卡通渲染另类勾边方法。

这有点画蛇添足。。。
如果是用VS拉伸,直接汇制两遍模型就OK,无须用到模板

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2005-2-21 10:45:00 | 显示全部楼层

Re: [原创]卡通渲染另类勾边方法。

呵呵,膨胀式勾边法,不错不错。
不过可惜,这个方法只能勾出整个模型所占fragment的外轮廓。比如下图中的红框内的轮廓就很难实现咯,因为它是由图像空间的法线通过sobel filter勾勒出来的。
sf_2005221104510.jpg

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
 楼主| 发表于 2005-2-21 10:53:00 | 显示全部楼层

Re:[原创]卡通渲染另类勾边方法。

。。。至于除了边缘之外的勾边方法的话,直接在贴图上下工夫就可以了,没必要动态的勾。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
 楼主| 发表于 2005-2-21 10:54:00 | 显示全部楼层

Re:[原创]卡通渲染另类勾边方法。

回secondage:

有两个vs,第一次是画阴影的渐变,第二次是勾边。

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2005-2-21 11:19:00 | 显示全部楼层

Re:[原创]卡通渲染另类勾边方法。

如果是用扩展轮廓的话,根本不用stencil buffer 的
画一个黑色的膨胀物体,然后在上面画上原始模型,就得到你所说的结果
不需要做stencil操作的,不过就如4楼所说,这个方法只能是用效率换效果
仔细看就不中了,而且在alpha blend的场合,也需要特别处理

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
 楼主| 发表于 2005-2-21 11:21:00 | 显示全部楼层

Re:[原创]卡通渲染另类勾边方法。

不用stencil?那渲染出来的是大模型把小模型包住了,有z值的。

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2005-2-21 11:33:00 | 显示全部楼层

Re: Re:[原创]卡通渲染另类勾边方法。

tarkey: Re:[原创]卡通渲染另类勾边方法。

不用stencil?那渲染出来的是大模型把小模型包住了,有z值的。

第一遍渲染膨胀模型时,打开ztest但是关闭zwrite不就行了。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
 楼主| 发表于 2005-2-21 11:45:00 | 显示全部楼层

Re:[原创]卡通渲染另类勾边方法。

-。- 恩,也是个方法。
不过目的都是一样。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-24 11:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表