3D模型和动画播放
程序员文章站
2022-03-26 17:22:56
...
1)笔记
1)导入和显示3D模型:
(1)3D模型是美术制作的, fbx格式-->可以携带有【模型+动画】
visual studio打开模型,点击一下显示出来网格
(2)fbx+贴图
贴图的类型一般是Texture(纹理):3D
但是还有:
normal map(法线贴图)
sprite-frame(UI贴图): 一般是2D
texture cube(立方盒贴图,做天空盒用到)
cocos creator又把里面部分给分割出来了:
Body:网格Mesh
Material: 只读的材质,没办法改写
Take 001: 动画文件
UnnamedSkeleton: 骨骼
在cocos creator如何使用:
直接拖拽到场景一放即可,但是发现材质没有正确关联
我们关联上正确材质和shader的办法: 自己创建一个材质-->材质就是一个配置文件,选择effect-->builtin-unlit(高效且不受光照影响)
USE TEXTURE勾选-->MainTexture--》纹理对象穿起来
(3)一般做web游戏时,选择effect-->builtin-unlit(高效且不受光照影响)
其它的,选择standard,带的有法线贴图
(4)替换材质,材质在渲染组件上,首先你找到3D渲染组件,因为材质是在模型渲染组件上带上的,在这里设置到GPU配置对应的Shader;
蒙皮网格渲染
模型渲染
2)模型动画的切割
(1)模型往往要带上动画,FBX是可以内置动画的,美术可以把素哟偶的3D动画做到一个动画clip里面,也可以分几个动作来处理;
所有的都做一个,你就看到一个动画:Take 001
(2)creator有工具可以把一整套动画分割开来;
一整套动画是: 把各种各样的动画都做到一个点上:idle、攻击、跳跃、奔跑、死亡
动画分割,没事会提供你一些参数txt: 0~多少s是什么动画, 这样就可以把动画分割出来了
3)2个creator3D物体的显示的常用组件
(1)cc.ModelComponent: 绘制3D物体的组件-->普通网格 MeshRender, 你到底选择哪个网格(读取到形状),使用哪个材质(读取到shader);
Mesh:组件绘制的物体的网格,甚至可以把人的Mesh拖过来
ShadowCastingMode: OFF 是否有阴影
Materials: 材质
(2)cc.SkinningModelComponent: 绘制蒙皮网格,如:People, 没有这个组件,则显示不出来
Mesh:物体的网格
Materials: 材质
Skeleton:骨骼
SkinningRoot: 如People就在这个地方
4)动画组件的基本原理与播放动画
播放动画的基本原理: 读取动画组件文件里面的内容,每一帧修改网格Mesh顶点里面的位置,修改完毕-->传递给Shader-->shader绘制出来-->看到动画;
动画组件非常消耗性能,如:同屏动画过多则卡顿;
每次Shader绘制都是动画改变后的这些顶点的位置,这样子随着时间的推移,就产生了动画的改变;
动画播放组件: cc.SkeletalAnimationComponent
clips: 是当前这个组件带了哪些动画剪辑(attack、run、idle),AnimationClip -->动画数组
DefaultClip: 默认的动画剪辑
PlayOnLoad:是否在装载的时候就开始播放,勾选上就会播放默认的AnimationClip
代码里面如何播放动画:
step1:获取动画播放组件实例-->cc.SkeletalAnimationComponent
step2:动画组件的播放接口:播放你指定的动画;
step3:播放动画的时候足以下,动画切换-->idle-->attack-->动画过度
play:播放我们的动画,如果没有给动画名字-->默认的动画
clips:获取我们动画组件上面的,所有动画剪辑-->cc.AnimationClip数组
defaultClip: 默认的动画剪辑
crossFade:切换动画加上了平滑过渡;
stop:停止播放动画
pause:暂停播放,停到某个地方
上一篇: jq select获取选中项
下一篇: 数字时钟