找回密码
 立即注册
首页 业界区 业界 ThreeJs-12使用着色器加工材质

ThreeJs-12使用着色器加工材质

馑妣窟 昨天 10:11
一.three框架材质原理与应用

其实three里面所有的材质不管是基础还是点等等之类最终都会编译为shader然后执行,所以如果拿到一个材质我想对某个地方小改一下,那么也是可以用shader来进行修改的
1.png

这里用基础材质创建一个平面
2.png

通过材质的这个回调就可以拿到他的shader并且里面也有顶点着色器和片段着色器
3.png

4.png

当然这里面这些定义都不是目前学的,因为这是three自己封装的,要看其源码都可以在这个目录下面找到
像commen就是封装了一些可以快速使用的变量函数等
5.png

还比如这个导入就是对position做出了一个封装,可以快速修改位置通过transformed变量
6.png

当然如果我们要修改一些参数
因为glsl是字符串,所以需要通过字符串的方法来修改
比如偏移位置
7.png

8.png

动起来
9.png

10.gif

二.修改物理光照材质制作人物被打效果

先把模型加载进来
11.png

12.png

继续加载纹理和法相纹理
13.png

14.png

修改被打效果,核心就是脸扭曲变形
比如让连续旋转180度,PI就是3.14就是180度,注意旋转角度是x轴和z轴同时转
15.png

16.png

当然要捏造被打的形象,扭曲应该围绕着y轴为角度
17.png

18.png

开启阴影后发现阴影有点问题
19.png

这时候需要调整法相的旋转角度跟刚才保持一致
注意几个问题:法相在前,此时还没有transformed用原始的position
还有就是法相的位置是objectNormal
第三个就是法相前面已经声明了angle这些后面不用在声明直接用
20.png

21.png

22.png

这个问题解决后但是投射到后面的还是不对
23.png

对于3D物体有一个方法
24.png

首先需要设置一个自定义深度材质
25.png

有了这个材质后,跟刚才的材质一样也要去设置旋转角度,只是没有了法相的设置
26.png

27.png

最后添加来回被打的效果,加上时间器
注意来回要加sin函数
28.png

29.gif


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册