位置: 编程技术 - 正文

unity 给物体边缘加高光轮廓的办法,付Demo(增加一组算法)(unity物体边缘发光)

编辑:rootadmin
原文链接: Light):Unity官方教程里有例子,其中核心是这两句代码: half rim = 1.0 - saturate(dot (normalize(IN.viewDir), IN.worldNormal));o.Emission = _RimColor.rgb * pow (rim, _RimPower);IN.viewDir是当前视角向量,IN.worldNormal是物体的法线。dot是计算视角和法线的点积,等于视角和法线夹角的cos&#;,如下图: Cos的&#;域是1-0,1-cos就成了0-1,在夹角度时达到最大&#;,正好用来模拟侧光的强度(与视角成度的部分光线最强,就是边缘光了)把这个&#;的变化率用一个pow函数(rim的_rimPower次方)进行放大,就能强化边缘发亮的效果。比较一下: 没有经过Pow放大变化率的边缘光,cos函数的变化是比较平缓的,造成大片区域被染色。 经过Pow函数放大变化率,就有了边缘发亮的效果。这个图大致体现了放大前后变化率的曲线: 这种边缘光在复杂几何形体的时候效果还是不错的。 但是在平直的物体上,边缘光就不见了 到了方形物体,几乎很难看见了 很好理解,正方形每个面法线都是一个方向的,没法体现出变化和轮廓了。另外这种方法在描绘凹的几何体时,凹的部分(包括法线贴图造成的凹凸)的边缘也都会被画出来,并不是真正意义上的边缘轮廓,就是一种侧光效果。该方法的好处是简单,只要把官方的shader改写,加上计算边缘光的几句,就能实现。要显示的时候动态切换shader就可以。基本不需要代码干预,效率高。 2.单个物体轮廓渲染方法这个方法实现比较复杂,只能介绍大致思路:1.把要渲染轮廓的物体放在一个单独的层里2.在层里设置一个disable的摄像机,culling mask是渲染物体所在层。3.主摄像机保持culling mask是everything4.生成1个renderTexture5.把那个disable的辅助摄像机用RenderWithShader方法,指定一个单色渲染的shader(只需要轮廓,不需要光照计算)渲染物体的轮廓到一个renderTexture6.继续用单色Shader,用Unity自带Blur类&#;的方法,把物体轮廓图上下左右移动几个像素,叠加在一起,得到一个比原来轮廓大,边缘模糊的轮廓图,存到一个临时renderTexture7.把大的轮廓图和原始轮廓图叠加,把中间清晰轮廓部分消除掉,就能得到一个完整带透明度的轮廓图。8.在主摄像机的OnRenderImage里,把这个透明轮廓图和主摄像机渲染的图像进行alpha混合,就能产生一个完整并且不被遮挡的轮廓效果了。效果如图: 明显效果比侧光好多了。不过这种方法开销比较大,而且需要很多代码的支持。 附上一个小Demo,包含了上述两种方法。鼠标可以控制镜头平移、旋转、缩放。鼠标划过物体显示侧光效果,点击物体显示清晰轮廓效果,再次点击效果消除。 可以设置边缘颜色 和宽度 模糊度目标按照材质进行分组以方便处理 变换成细线 绿色 ---------------------------------------------------------------------------------------------------------------------优化了代码,减少了一组RenderTexture,这个东西还是很耗资源的,减少了计算的次数。另外增加了一组模糊、裁剪一次完成的shader,资源上更节省,不过边缘较模糊。两种算法效果比较: 多次模糊再裁剪的算法,边缘光滑,模型的锯齿在边缘线被光滑了,开销略大 一次同时模糊、裁剪算法,边缘较模糊,锯齿也被等比放大,但开销较省。根据需要使用。总体上因为是全屏效果,与被渲染物体数量无关,所以基本上显示轮廓物体的多少不会影响效率。附件里包含两种方法的代码和shader。RimLight方法一个shader就能对应一种材质效果,不需要代码支持。后一种方法需要代码加shader,类&#;官方的Image Effect效果。outline.unitypackage

推荐整理分享unity 给物体边缘加高光轮廓的办法,付Demo(增加一组算法)(unity物体边缘发光),希望有所帮助,仅作参考,欢迎阅读内容。

unity 给物体边缘加高光轮廓的办法,付Demo(增加一组算法)(unity物体边缘发光)

文章相关热门搜索词:unity 边框,unity边缘检测,unity物体描边,unity边界,unity物体描边,unity物体边缘发光,unity 边框,unity物体描边,内容如对您有帮助,希望把文章链接给更多的朋友!

Unity3D性能优化总结 原文

Unity 相关经典博客资源总结(持续更新) 原文:

关于unity3d碰撞的一些东西 具体的一些,可以看unity3d的manualrefrernce的东西,有几个表在后面可以参考:几个类型碰撞器:1.静态碰撞器:就是只有碰撞器,但没有刚体的2.刚体碰撞

标签: unity物体边缘发光

本文链接地址:https://www.jiuchutong.com/biancheng/375703.html 转载请保留说明!

上一篇:Unity3D开发经验(unity3d应用开发)

下一篇:Unity3D性能优化总结(unity3d性能优化之贴图科普篇)

  • 退税收入如何做账
  • 销售部门使用的管理设备计提的折旧应计入的账户为
  • 交车船税需要提交哪些资料?
  • 简易计税方法使用范围
  • 印花税税源明细表怎么填
  • 出口退税进项税
  • 进项税额不允许抵扣怎么计算
  • 企业土地使用税征收标准
  • 制造业的税率是多少啊
  • 境外增值税代扣代缴
  • 民办非企业单位属于什么类型
  • 外购已税什么意思
  • 暂估入库商品作暂估冲红处理如何做?
  • 电子商务支付平台有哪些
  • 银行借款的利息支出属于什么会计要素
  • 发票超过2个月可以报销吗
  • 银票贴现需要银行授信吗
  • 企业股权投资损失
  • 购买化妆品可以税前扣除吗
  • 税前可以扣除的管理费用计算公式
  • 公司接受安全罚款的账务处理
  • 普通发票也属于增值税发票吗
  • 王者荣耀中牛魔王的技能
  • 备用金冲销会计怎么做账
  • 百内国家公园塔状尖峰
  • 实物资产股权投资包括
  • php怎么配置环境
  • 去年的发票忘记报销了 今年可以报销吗
  • 商业一般纳税人辅导期截止时间
  • 运行项目报错Couldn't import Django
  • the Pura Meduwe Karang神庙中雕刻艺术家W.O.J.Nieuwenkamp的作品,印度尼西亚巴厘岛 (© John Elk III/Getty Images)
  • php自学
  • PHP:Memcached::deleteByKey()的用法_Memcached类
  • 哪些资产损失可以转回
  • 最好卖的游戏机排行榜
  • 使用灭火器人要站在上风口还是下风口
  • 只有收据没有发票怎么报销
  • 坏账损失属于或有事项吗
  • 红嘴牛文鸟图片
  • 税务三方协议怎么重签
  • mysql的使用实验总结与分析
  • python filter dict
  • 购买商标入账
  • 发票作废是冲红吗
  • SQLServer 2008 :error 40出现连接错误的解决方法
  • 个人工资薪金如何零申报
  • 典当行必须出具当票吗
  • 产权出典是啥意思
  • 稳岗补贴支付范围
  • 公司开出发票但未收到款如何写分录?
  • 成本少了怎么处理
  • 主播工资不发应该到哪里投诉
  • 增值税发票开负数怎么做账?
  • 已认证的发票开具红字发票账务处理?
  • 小企业会计准则没有以前年度损益调整科目
  • 基本户转账到法院怎么转
  • 固定资产清理的借贷方向
  • 没有外币账户可以收外币吗
  • 建筑企业总公司施工可否由分公司开发票
  • 公司注销固定资产清理怎么做账务处理
  • win8系统如何安装软件
  • win8.1 下载
  • archlinux安装教程2023 无线网络
  • windows xp隐藏文件夹
  • win8 开机
  • 自定义ui界面
  • opengl
  • vue mint-ui 官网
  • jquery购物车商品价格计算
  • node.js web
  • 用js改变css样式
  • js mvvm 原理
  • android自定义view的三大流程
  • Android-Universal-Image-Loader最新框架解析
  • 差额征收怎么填报表
  • 固定资产评估增值的税务处理
  • 广西电票科技有限公司
  • 国家税务总局成都市武侯区税务局
  • 税务局临时工工资多少
  • 襄城是现在的哪个城市
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设