[转]Meshlab:网格phong渲染及depth/normal渲染

背景

最近需要展示一些网格模型,受fb_help大佬的指点,发现meshlab支持phong渲染,相比默认的渲染结果,可以得到更加漂亮的渲染图。
下图展示了分别用默认渲染结果和phong渲染结果,不难发现右图看起来舒服多了。
在这里插入图片描述

phong渲染模型

转载自:https://learnopengl-cn.github.io/02%20Lighting/02%20Basic%20Lighting/
phong渲染模型包括由3个分量组成:环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照。下面这张图展示了这些光照分量看起来的样子。环境光是场景的基本亮度,主要指离当前场景比较远的光源;漫反射很好理解了,如果物体表面不是完整光滑的,光线应该朝多个方向传播;但是通常物体应该介于光滑和粗糙之间,所以还要考虑一点镜面反射。
具体的数学公式请参考转载链接。
在这里插入图片描述

操作

额外提示,shift+alt+鼠标左键 可以 调节光线方向。

1. phong渲染

在这里插入图片描述
在这里插入图片描述

2. depth渲染

在这里插入图片描述
在这里插入图片描述

3. normal渲染

normal渲染前参考https://stackoverflow.com/questions/45869953/meshlab-normalmap修改一下渲染方式,具体原理我也暂时不懂~~~
修改的文件的具体路径在meshlab的安装目录/shaders/下。

normalmap.frag

//uniform sampler2D bump;
//uniform float Kd;
//uniform float Ks;
//uniform float Ke;
varying vec4 baseColor;
//varying vec3 ViewDirection;
//varying vec3 LightDirection;

void main(void)
{

   //vec3 bumpPert = normalize( -(0.5,0.5,0.5) + texture2D(bump, gl_TexCoord[0].st).rgb );

   //vec3 LightDir = normalize(LightDirection);
   //vec3 ViewDir = normalize(ViewDirection);
   //vec3 nNormal =  normalize(gl_NormalMatrix * bumpPert);
   
   //float diffuse = clamp(dot(LightDir, nNormal), 0.0, 1.0);
   //float specular = pow(clamp(dot(reflect(ViewDir, nNormal),-LightDir),0.0, 1.0), Ke);
   //gl_FragColor = (Kd * diffuse * baseColor) +  (Ks * specular)*baseColor;
  gl_FragColor = baseColor;
}

normalmap.vert

//varying vec3 ViewDirection;
//varying vec3 LightDirection;
varying vec4 baseColor;
void main(void)
{
   //gl_Position = ftransform();
   //gl_TexCoord[0] = gl_MultiTexCoord0;
   
   //ViewDirection = -vec3(gl_ModelViewMatrix * gl_Vertex);
   //LightDirection = gl_LightSource[0].position.xyz;
   //baseColor = gl_Color;
  gl_Position = ftransform();
  baseColor = vec4(gl_Normal, 1.0);
}

在这里插入图片描述
在这里插入图片描述


---------------------
作者:yanqs_whu
来源:CSDN
原文:https://blog.csdn.net/u012348774/article/details/110532039
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值