3D角色遮挡住UI的实现,关于Stencil Buffer,描边,以及其他
3D角色遮挡住UI的实现,关于Stencil Buffer,描边,以及其他
我这么懒的人能会写这篇博客,主因是这个需求对我造成的大量伤害~~~
起因
最近服务器AI的工作刚刚阶段性完成,马上被策划拉过去做一个渲染的效果,需求是这样的:在游戏中被选中敌人是有一个红色描边的,同时会有一个感知箭头(一个UI提示图表),现在这两个都会显示在主角上面。现象如下
前面的这个怪物X假设为主角(原谅我只能拿以前项目的资源了,那公司黄了应该不会来找我吧~~),更远处的那个是怪物,白色格子是一个UI 图片,现在均可以渲染在主角上面,影响视觉感受。希望主角可以挡住描边以及特定UI。
这里要先提前说一下描边的实现,目前主要的描边实现方式有几种
(1)有的是渲染在角色上的,即对角色模型根据法线方向或者offset进行外扩,实现描边
(2) 类似于posteffect的方式,用一个摄像机单独渲染需要描边角色,然后对得到的rendertexture进行模糊放大,再cut off掉原图进而得到描边的rendertexture,然后合并到场景摄像机上面渲染即可。
(3) 根据模型法线方向以及view 方向进行计算,叠加颜色实现边缘光的效果。
项目现在的是第二种方法,后面代码部分会有展示,另外几种方式大家如果感兴趣可以自行google下,相关的帖子很多。
坑坑坑,biu
于是乎~~这需求就是要某个3D角色可以盖住UI以及这个描边图呗。其实在最初的需求中是没有挡住描边的,所以我的第一个想法是利用Stencil Buffer。订制主角和UI的Shader,主角会写入特定的stencilValue,UI在这个值下不会通过stencil test,代码如下:
UI部分
Stencil{<span style="white-space:pre"> </span>Ref [_StencilValue]Comp NotEqual//Pass [_StencilOp] //ReadMask [_StencilReadMask]//WriteMask [_StencilWriteMask]}
主角部分
Stencil{Ref[_StencilValue]Comp AlwaysPass replace}
这样就应该是OK了!!(这里推荐一篇Stencil Buffer相关的博客:)在测试场景中,角色成功挡住了UI图标。然而,,在运行时,,并没有效果。。。Orz。。
经过测试,涉及stencil buffer的代码并没有问题。那么,只有一个可能是模板缓存被清掉。
谁偷走了我的Stencil Buffer?
上面提到过,我们的描边实现是posteffect的方式做的,在OnRenderImage中做了很多处理。在OnRenderImage中实现功能必然会使用到Graphics.Blits这个方法,类似代码:
void OnRenderImage(RenderTexture src, RenderTexture dest )
{Graphics.Blits(src,dest);
}
经过排查发现,注释掉上面代码之后效果恢复正常。
这是为什么呢!!!让我们看看官方的解释:
解决方案
项目下载:http://pan.baidu.com/s/1bpiaqWv
3D角色遮挡住UI的实现,关于Stencil Buffer,描边,以及其他相关推荐
- 如何利用Shader来渲染游戏中的3D角色
杨航最近在学Unity3D 本文主要介绍一下如何利用Shader来渲染游戏中的3D角色,以及如何利用Unity提供的Surface Shader来书写自定义Shader. 一.从Shader开始 ...
- 3D角色模型欣赏:韩国3D设计师 Jiwoong Choi 科幻3d角色
今天给大家分享来自韩国3D设计师 Jiwoong Choi 的科幻3d角色作品,整体造型炫酷,欢迎欣赏 ![upload-images.jianshu.io/upload_images/2425227 ...
- 简述3D角色动画的应用及三大类型
一.概述3D角色动画的应用 3D角色动画是计算机动画技术的一个重要组成部分,也是计算机图形学的一个分支.无论是在离 线渲染环境下,还是在实时渲染环境下,3D角色动画都得到了广泛的应用.在离线渲染环境下 ...
- Poser v7.0 1DVD(3D 角色动画)
Ulead产品: Ulead.Videostudio.v10.Plus-ISO 1CD Ulead.Video.Studio.9.CHS-ISO 1CD(简体中文,会声会影 是一套专为个人及家庭所设计 ...
- 专访王博,国内资深游戏3D角色美术大神
王博简介 原Massive Black (Shang Hai) 3Dartist, 原网龙U3美术组资深角色设计师,原金山西山居成都研发中心3D角色指导, 现就职于腾讯游戏天美工作室. 曾参与制作&l ...
- DirectX游戏开发之3D角色动起(下)
DirectX游戏开发之3D角色动起(下) 直接先上图吧! 动作idle 动作attack 动作walk 动作run 看,多动作的模型搞下来了.原则上只要在此基础上略做修改就可以实现3d游戏的基本制作 ...
- Unity3D游戏制作(二)——如何渲染3D角色
本系列文章由 Amazonzx 编写,欢迎转载,转载请注明出处. http://blog.csdn.net/amazonzx/article/details/7935341 本文主要介绍一下如何利用S ...
- 3D模型欣赏:强肌肉男的壮汉3d角色 肉跟血管的纹理材质超级写实
本作品是由国外3D设计师 FabricioBatista创作的,是一个超强肌肉男的壮汉3d角色.肌肉跟血管的纹理材质超级写实,处理细腻,整体造型动作设计带感,值得参考 文章推荐阅读 [ 学习企鹅圈:1 ...
- 学习游戏模型3d角色,出来好找工作吗?
游戏行业的发展如火如荼,目前已经成为了时下热门的就业行业之一,不仅带来了大量的就业岗位需求,同时也拥有了相当可观的发展前景,吸引了不少人将学习游戏相关专业列为学习目标. 其中,3d游戏模型专业成为许多 ...
最新文章
- Cell:无症状新冠患者阳性持续105天
- 百度编辑器ueditor每次编辑后多一个空行的解决办法
- 当文员学计算机二级,二本学生毕业后在干什么?多半做3种工作,过来人深有同感...
- 深度学习之利用TensorFlow实现简单的卷积神经网络(MNIST数据集)
- Android 开发技能图谱
- css3 animation
- 图例解析四大UML关系图使用
- Ruby gem 更换国内源
- Linux安装GCC方法
- scratch3文件转exe文件方法
- Qt android 开发环境搭建
- 最新抖音下载无水印视频
- 轻松读懂三极管,原来它是这样工作的
- gw node节点 xshell连接 访问外网
- apache的动态网站部署,discuz论坛系统和ecshop电商系统
- 对List<Map>数据排序
- 手机老是收不到短信验证码?我来告诉你为什么!
- GYM 101350 I. Mirrored String II
- 软件测试周刊(第61期):内心强大的人都有三个共性「不和他人作比较」「不对他人有期待」「不批判他人」
- Unity知识点总结(1)
热门文章
- 前端安全系列(一):如何防止XSS攻击?
- java连接数据库,jdbc四要素,jdbc六大步
- c语言char s[] 语句,35、若有定义和语句: char s[10]=abcd;printf(%s\n,s); 则结果是(以下u代表空格)...
- IDEA+Java控制台实现医院管理系统
- Windows CMD中的findstr命令详解
- 明确不站队BAT,帆软——这家只有几百人的BI公司靠什么赢得生存?
- 【YOLO-Pose】在Windows上的部署与测试(调用摄像头)
- Ruby on Rails,创建和执行migrations迁移文件
- python基于爬虫技术的海量电影数据分析源码,数据处理分析可视化,GUI界面展示
- 腾讯企业邮箱设置与企业微信绑定