《捕鱼达人3》讲解Cocos引擎3D技术(二):鱼身上的波光处理

大家好,在上一节的学习中,我们已经掌握了如何使用Cocos2d-x加载鱼的模型和播放鱼的动画,这一节我们来学习一下如何为鱼的模型增加波光处理,以使它看起来像在海水中游动。

2-1.jpg

在模型的身上加入波光的感觉,是通过纹理动画来实现的,其原理是给模型增加一个纹理,并循环的移动纹理贴图寻址的UV坐标,这样贴在模型表面的纹理就会按照不断变化的UV值来产生出贴图运动的效果。下面我们来实际做一下这个效果。


我们需要用到Shader文件UVAnimation.vsh和UVAnimation.fsh,它们在Resources\3D目录中。UVAnimation.vsh是一个模型骨骼动画的计算Shader,而UV动画的效果在UVAnimation.fsh中进行处理:

1
2
3
4
5
6
7
8
9
10
11
12
uniform sampler2D u_texture1;
uniform sampler2D u_lightTexture;   
uniform vec4 v_LightColor;      //颜色色彩
uniform vec2 v_animLight;      //UV动画纹理偏移
varying vec2 v_texCoord;       //模型的纹理UV值
 
void  main( void
{
     //通过UV值的移动形成UV动画
      vec4 lightcolor = texture2D(u_lightTexture, v_texCoord + v_animLight.xy) * v_LightColor;
     gl_FragColor = texture2D(u_texture1, v_texCoord) + lightcolor;
}


然后我们需要一张波光图caustics.png,它是黑白图,用于在模型上增加色值操作,这样的话,黑色的区域色值为0,与鱼原来的纹理色值相加不变,而白色区域的值大于0,与鱼原来的纹理色值相加后会有增亮效果。这张图我们放在工程的Resources\3D目录中。

2-2.jpg

我们在FishLayer中增加一个变化的UV值:

1
Vec2 _lightani;


在FishLayer::init函数中,我们将上面所写的vsh,fsh等组合成鱼模型可以使用的Shader并使用它:

1
2
3
4
5
6
7
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值