馑妣窟 发表于 2025-6-6 10:11:35

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

一.three框架材质原理与应用

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

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

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


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

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

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


动起来


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

先把模型加载进来


继续加载纹理和法相纹理


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


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


开启阴影后发现阴影有点问题

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



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

对于3D物体有一个方法

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

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


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



来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

赖琳芳 发表于 2025-10-23 16:32:26

这个有用。

嗦或 发表于 2025-11-3 15:31:14

鼓励转贴优秀软件安全工具和文档!

昝琳怡 发表于 2025-12-4 17:56:48

yyds。多谢分享

山芷兰 发表于 2025-12-13 11:34:38

不错,里面软件多更新就更好了

赖珊 发表于 2025-12-17 10:55:46

不错,里面软件多更新就更好了

吕颐然 发表于 2025-12-24 22:49:07

这个有用。

度阡舅 发表于 2026-1-8 02:00:44

谢谢分享,试用一下

蔺堰 发表于 2026-1-11 07:39:01

东西不错很实用谢谢分享

骆熙华 发表于 2026-1-14 09:18:15

这个好,看起来很实用

老僻贞 发表于 2026-1-16 18:00:25

收藏一下   不知道什么时候能用到

粒浊 发表于 2026-1-18 05:29:09

这个有用。

怒鼓踊 发表于 2026-1-19 23:31:47

感谢发布原创作品,程序园因你更精彩

姚望舒 发表于 2026-1-20 05:15:26

不错,里面软件多更新就更好了

狙兕 发表于 2026-1-20 10:53:27

感谢发布原创作品,程序园因你更精彩

松菊 发表于 2026-1-21 02:09:09

感谢分享

讥慰捷 发表于 2026-1-22 13:08:58

前排留名,哈哈哈

闵雇 发表于 2026-1-25 11:19:55

收藏一下   不知道什么时候能用到

聊账 发表于 2026-1-26 08:37:52

谢谢分享,辛苦了

窟聿湎 发表于 2026-1-26 08:52:00

感谢分享
页: [1] 2 3
查看完整版本: ThreeJs-12使用着色器加工材质