模型轮廓绘制


女友刚走,中秋闲来无事,想试试怎么绘制模型轮廓。之前试过了最简单但不理想的方式来实现,那就是根据法线与视线的向量dot来实现。之前听过别人说过用缩放模型的方式来实现,今天便试试。
 
在RenderMonkey中,用了3pass,其中一个是正常绘制模型到一张纹理上,其二是按照模型的法线来缩放模型,然后绘制模型到另一张纹理上,其三是利用前面两张纹理实现最终效果,绘制到一个全屏大小的四边形上。
  其中按照法线缩放模型的基本代码如下:
void main(void)
{
   vec4 v4 =gl_Vertex + vec4(normalize(gl_Normal)*0.5,0.0);
    //gl_Position = ftransform();
   gl_Position = gl_ModelViewProjectionMatrix * v4;
}
最后合成所用的PS代码如下:
uniform sampler2D T1;
uniform sampler2D T2;
//uniform sampler2D base;
varying vec3 texcoord;
void main(void)
{
  
  gl_FragColor = texture2D(T1,texcoord);
  vec4 v4 = texture2D(T2,texcoord);
  if(gl_FragColor.a >0.0)
   gl_FragColor = v4;
}
这里可以有N多种处理方式。我用了个相对简单单能说明问题的方式,没有光照处理,没有其他高级着色处理,不过要加上来的话,也不在话下。
下面是效果:

模型轮廓绘制


模型轮廓绘制



权当是无聊瞎弄,欢迎交流。

你可能感兴趣的:(模型)