以前做过简单的rim light勾边,几何勾边,这次又做了后处理的勾边,工程化的时候,都遇到很多问题,简单总结一下。

首先是火炬之光勾边效果,类似轮廓光的实现,简单的卡通渲染也是通过类似的算法加采样色阶图实现。

火炬中的勾边相当于为角色添加内测光的效果,即通过计算标准散射点积运算来确定顶点法线N和光线向量L之间角度的余弦,用以确定顶点或像素接收到多少光线:s=L·N。

算法的优势就是:

实现比较简单,通过调整参数就可以开关内测勾边光的效果。可以使用顶点法线,这样更省,火炬中就是vertex Shader中处理的。

算法评估:

效果一般,而且勾边的效果与模型本身的几何关系密切。某些特殊的几何效果很差,例如也无法处理片儿的勾边。

方案简单,使用的指令数有限

不同物体可以有不同勾边的粗细,颜色。

与深度排序、半透明绘制等因素无关。

简单粗暴的法线放大几何勾边法:

算法简单描述:

将模型的顶点沿法线方向外移一定距离得到一个比原模型稍大的模型,绘制时采用剔除正面绘制背面的方式,将模型绘制为边界颜色,

再按正常方式绘制原来的模型,结果就产生了一定宽度的勾边,勾边的宽度可以通过将顶点沿法线外移的距离来控制。

 

优点:

模型多绘制一遍,消耗较小,简单粗暴。

缺点:

1、因为与模型表面法线相关,所以对于片儿的边缘可能会有勾边错误,例如扇子

2、绘制边缘的pass不能写深度且需要检测深度,因此会产生因为渲染顺序导致的遮挡问题。

 

后处理方法:

在场景绘制结束后,使用特定的shader再次绘制需要勾边的角色一遍到某RenderTarget上,处理此Rendertarget找到模型轮廓边界,并融合到场景中。

找边的方法很多,例如可以对这张图进行边缘检测算法(如Sobel)。或者直接对其做高斯模糊,通过alpha的值来找到编辑并且还能方便的融合到背景(暗黑三)

缺点就是:

增加了时空的消耗:

时间上:一次全屏的绘制,需要勾边的模型多一次绘制。

空间上,需要申请一张全屏大小的RenderTarget。

问题:

第二次绘制模型时是否开启深度检测会有两种不同的效果,均有一些问题:

一、关闭深度检测:

勾出的边不会被深度遮挡,因此不管在什么角度,都可以看到完整的模型的勾边效果:

上图,模型的边界不会被石头挡住

二、开启深度检测:

绘制纯色模型时会被前置的角色或者模型挡住,因此在勾边模型与前置模型的交界处会有勾边。

蜘蛛与草的边界处会有勾边效果

绘制纯色模型时会被前置的角色或者模型挡住,因此在勾边模型与前置模型的交界处会有勾边。

暗黑三中算法类似,例如暗黑中被模型挡住的门的勾边效果:(为方便查看,勾了粗边)。

暗黑中被角色遮挡的门的勾边

转载于:https://www.cnblogs.com/hellohuan/p/3670666.html

总结一下一般游戏中3D模型各种勾边方法遇到的工程性问题相关推荐

  1. 不用找,你想要的游戏成套3d模型素材都在这里

    天天各大网站找游戏成套3d模型素材?最后空手而归?今天为大家推荐游戏成套3d模型素材网站,质量上乘适合资源慌缺的你,话不多说准备开始收藏吧! 接下来就给大家介绍一下我珍藏已久的网站,我的工作灵感都是来 ...

  2. 按头安利 好看又实用的游戏场景3d模型素材看这里

    看到大家都在问游戏场景3d模型素材,既要免费又要质量好,数量还要多,小编好不容易挖到了宝藏素材网站哦,资源优质数量庞大,使用体验也很好,要是需要的话,赶紧看一看,小编会给大家详细介绍噢 本人曾经也是废 ...

  3. 《阴阳师》全套游戏角色3d模型和贴图分享

    <阴阳师>全套游戏角色3d模型和贴图分享 在这里插入图片描述 白嫖分享!

  4. Chem 3D模型的参数值更改方法

    在化学绘图软件ChemOffice 15.1中有个专门用于绘制三维结构的组件,就是Chem 3D.通过这个组件用户可以绘制3D模型并可以通过这个组件来计算一些化学数据.在使用Chem 3D组件过程中, ...

  5. WPF 3D模型的一个扩展方法

    原文:WPF 3D模型的一个扩展方法 在WPF 3D中,我们常常需要改变一个ModelVisual3D对象的颜色. 先说说ModelVisual3D,本质上3D模型都是由一个个的三角形构成的,并且经过 ...

  6. [独立游戏]用3D模型做2D动画,像素风也可以独当一面

    像素风 对于 玩家来说 是别具一格,可以接受的. 好游戏,并不意味着必须 要多高的模型,多好的写实的 场景. 用简陋的3D模型,可以减少成本.再渲染成2D动画,像素风格.反而 无心插柳柳成荫,成就了 ...

  7. Unity导入3D模型的过程与方法

    一.介绍 资源是游戏开发中的原材料,也就是组成游戏的模块. Unity只是一个游戏开发引擎,而并不是一个资源开发软件.这就意味着在游戏中需要的资源通常是由一些设计者使用其他软件开发出来的,然后设计者会 ...

  8. [游戏技术]求生之路stripper:source游戏中创建模型

    目录 Stirpper:Source Stirpper:Source Stirpper网址 http://www.bailopan.net/stripper/ 版本大全   安装方法 picker   ...

  9. 仿真软件中器件模型无LAYOUT解决方法

    在使用仿真软件时可能会有器件模型再生成版图时无对应的layout,此时可以采用以下方法:1 新建layout,再在上面画上需要的焊盘,并放置对应的引脚.2 点击版图页面内生成并更新原理图的选项.3 在 ...

最新文章

  1. 云炬金融每日一题20211008
  2. 一个人的成功取决于晚上的8点至10点--经典语录必读
  3. @ConfigurationProperties和@Value不同的使用场景,@Bean添加组件 (6.spring boot配置文件注入)...
  4. php pdo 参数绑定,PDO预处理之参数绑定和列绑定
  5. mysql和mybatis面试题_BATJ面试题汇总详解:MyBatis+MySQL+Spring+Redis+多线程
  6. Unity3d面向英特尔 x86 平台的 Unity* 优化指南: 第 2 部分
  7. 控制变频器调节电机梯形图_如何通过PLC控制变频器进行电机转速控制,含代码...
  8. Chrome调试vue项目时session异常,后端tp6 session使用异常
  9. ActiveRecord::Fixture::FixtureError: table users has no column named activated_at.
  10. 统计模型混响信号预报matlab,基于MATLAB的混响效果设计课程设计
  11. 推荐6本Java书籍,助你在Java路上更精进!
  12. Zigbee之旅(十):综合小实验——基于CC2430的温度监测系统(转)
  13. PS网页设计教程XXI——在Photoshop中创建一个光质感网页设计
  14. 原来微信“对方正在输入”在这种情况下才显示
  15. 【2021-11-16】小红书web端数美验证码
  16. PHP Web应用开发 -用PHP实现简单的个人博客网站
  17. Ziperello汉化版下载
  18. abb焊接机器人编程全解_ABB机器人的离线编程与仿真之原程序详解!!!——ABB机器人...
  19. 现行的常用的文件格式类别 简析
  20. 浅谈数字人民币什么时候正式推出DCEP钱包在哪里下载

热门文章

  1. 从0到70%:Chrome上位揭秘!
  2. 五款主流 Linux 发行版性能对比,稳而不强?
  3. 区块链究竟是什么鬼?看完漫画秒懂
  4. 网络:TCP停止等待、超时重传、滑动窗口、拥塞控制、快重传和快恢复
  5. c语言作业皇帝的许诺,C语言函数大全(s开头) (1)/继
  6. android数据存放map_android - Java后台把数据用json发到手机端,里面是map存放的,必须要说明数据的类型?...
  7. 数据中心暖通相关知识与空调规划设计知识
  8. 模块化是数据中心设计的未来
  9. 建议收藏:服务器和存储技术知识
  10. 环境监控告警系统之TIM即时消息推送部署(二)