这种 方式其实效果不太佳 最好的办法还是通过放大这个物体顶点 两个相减去着色可能会比较好,不过这种对于简单物体的描边也够用了,看实际用途把
点乘的几何意义:引用自 https://zhuanlan.zhihu.com/p/142483832
Dot ( )
俩个3维向量(a,b),点乘的结果为一个常量。
(一般在写Shader的时候用点乘求俩个向量之间的夹角。)
关系如下图。
叉乘的几何意义
Cross()
俩个3维向量(a,b),叉乘得到的结果为一个3维向量(c),c垂直于a并且垂直于b.
边缘检测的原理:引用自https://zhuanlan.zhihu.com/p/25339585
边缘检测的原理非常简单,就是法线和视线的点乘。公式如下:
Edge = Dot( Normal , View );
大家想想越是物体边缘的地方,是不是法线(物体表面朝外的方向)和视线(观察者看向物体的方向)的夹角越接近90度?把法线和视线点成得到了一个边缘参数,这个参数越接近0说明该点越处于边缘。用这个原理,就可以把边缘的颜色描黑。