HTML5技术

神奇的深度图:复杂的效果,不复杂的原理 - 慕容小匹夫(3)

字号+ 作者:H5之家 来源:H5之家 2017-06-28 14:03 我要评论( )

完整的项目可以到这里到这里下载:UnitySpecialEffectWithDepth 0x05 边缘检测 边缘检测的目的是标识数字图像中属性显著变化的点。图像属性中的显著变化通常反映了属性的重要变化。这些包括: 需要注意的是边缘可能

unitytip901.gif


完整的项目可以到这里到这里下载:UnitySpecialEffectWithDepth

0x05 边缘检测

边缘检测的目的是标识数字图像中属性显著变化的点。图像属性中的显著变化通常反映了属性的重要变化。这些包括:

QQ截图20170623191104.png

需要注意的是边缘可能与观察方向有关——也就是说边缘可能随着观察方形的不同而变化,例如上文中的描边实现;也可能与观察方向无关——这通常反映被观察物体的属性如表面纹理和表面形状。在这个部分,我们的关注点主要是后者。

因此,根据不同的属性变化也有很多种策略来处理边缘检测,例如利用深度、利用法线、利用深度+法线、利用颜色等等。边缘是灰度值不连续的结果,这种不连续常可利用求导数方便地检测到,一般常用一阶和二阶导数来检测边缘。其中一阶导数的幅度值来检测边缘的存在,幅度峰值一般对应边缘位置。

11.png


不过为了简化计算,在实际中常用小区域模板卷积来近似计算偏导数。对Gx和Gy各用1个模板,所以需要2个模板组合起来以构成1个梯度算子。最简单的梯度算子是罗伯特交叉(Roberts cross)算子。

Roberts-Cross-convolution-filter.png

其实在unity的image effect中就包含了描边这个效果,而其中又有5种不同的方式,其中的一种叫做RobertsCrossDepthNormals便是利用了罗伯特算子,各位如果有兴趣的话可以参考。

0x06 小结

以上便是常见的几种利用深度信息来实现的视觉效果。
完整的项目可以到这里到这里下载:UnitySpecialEffectWithDepth
各位如果觉得有趣的话,欢迎点个赞。

ref:

【1】Siggraph2011_SpecialEffectsWithDepth_WithNotes。“Special Effects with Depth” talk at SIGGRAPH – Unity Blog

【2】Unity Shaders - Depth and Normal Textures (Part 2)

【3】题图来自《杀手5:赦免》

-华丽的分割线-
最后打个广告,欢迎支持我的书《Unity 3D脚本编程》


欢迎大家关注我的公众号慕容的游戏编程:chenjd01

posted @

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 神奇的 conic-gradient 圆锥渐变 - ChokCoco

    神奇的 conic-gradient 圆锥渐变 - ChokCoco

    2017-06-27 14:00

  • 复杂而艰辛的重构之路--起步 - James.Ying

    复杂而艰辛的重构之路--起步 - James.Ying

    2017-04-11 17:05

  • 神奇的css!竟然可以这样玩转表格 - dudu

    神奇的css!竟然可以这样玩转表格 - dudu

    2016-11-07 10:00

  • 吉特仓库管理系统- 斑马打印机 ZPL语言的腐朽和神奇 - 贺臣

    吉特仓库管理系统- 斑马打印机 ZPL语言的腐朽和神奇 - 贺臣

    2016-07-21 16:00

网友点评
c