大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei。
在上一篇文章中,我们通过自定义着色器实现了一个简单的在3D游戏中选取、显示物体轮廓的实例。在文章最后,博主给大家留下了一个问题,就是我们的这种方法存在一定的问题,无法运用到复杂的模型上。原因是什么呢?这要从这种方法的原理上来说,其实这种方法类似于摄像机的视角方向上对物体进行了一个投影。这样的话,如果模型被其它物体遮挡的话,就会出现渲染不完全的问题,如图所示,有一位朋友在评论中提出了这个问题。那么,怎么解决这个问题呢?对于遮挡的问题,我们一般采取的方法是拉近摄像机,因此,我们这里依然采取这种方法,即如果被渲染的物体前面有遮挡物体,则将摄像机拉近,这样就可以解决这个问题了。
那么解决了上一篇文章中的问题后,我们就来开始学习今天的内容——《Unity3D游戏开发复杂模型的选取与轮廓高亮显示》。首先,我们今天的内容是基于边缘光(RimLight)的方法来实现的,在Unity3D的官方示例中,我们可以找到这个算法,其核心算法是:
half rim = 1.0 - s

本文介绍了如何在Unity3D中解决3D模型选择时的遮挡问题,采用拉近摄像机的方法。接着,基于边缘光(RimLight)原理,实现复杂模型的轮廓高亮显示,详细讲解了Shader的编写,强调了着色器名称与文件名一致的重要性。通过这种方法,可以得到理想的高光边缘效果。
订阅专栏 解锁全文
2万+





