irpas技术客

第六章:3ds max骨骼动画(下)_konkon2012_max选择所有子骨骼

网络投稿 4421

动画是由一系列的静态图像的不断更新显示而产生的。一般情况下,1秒钟要显示24张图像,人就会感觉到连续的动态图像。一般情况下使用30帧就足够了。在3ds max可以设置这个FPS值。右下角“时间配置”,可以设置FPS值。也可以设置“动画”->“结束时间”。这个结束时间的单位是帧,也就是3ds max下方的动画控制面板中帧滑块的长度。?

我们按照默认值就可以了,也就是动画控制面板中帧滑块的长度是100

关键帧:动画由一组关键帧组成,关键帧与关键帧之间的部分是由系统按照线性插值的方式自动计算而得到的。因此,关键帧和关键帧之间的动作幅度不能太大,否则系统自动计算可能造成一些不自然的中间动作。关键帧是一个红绿蓝颜色的滑块。假如,我们要完成30帧的一个动画,我们可能只需要完成0,5,10,15,20,25,30这几个关键帧就可以了。

3ds max设置关键帧有两种方式,一个自动关键帧,一个是设置关键帧。两种状态可以通过下图红框内的两个按钮来进行切换。两种状态只能使用一种。

自动关键帧状态下,将时间帧滑块移动的某一个时间帧位置的时候,然后调整模型的位置或动作,则系统自动将此设为关键帧。

设置关键帧状态下,调整模型的位置或动作后,然后将时间帧滑块移动到一个时间帧位置后,需要手动点击钥匙形状按钮(见上图),才能将此设为关键帧。

制作简单的动画:

1. 设置模型在世界坐标系原点,这里我们设置模型材质透明度,方便同时查看模型和骨骼。

2. 设置关键帧状态,这里我们使用“设置关键点”状态,也就是手动设置关键帧。

在工作区的边缘会显示红色,表示进入动画编辑状态。

3. 全选骨骼,点击钥匙形状按钮,设置0帧为一个关键帧。

为了方便全选骨骼,我们可以在对象过滤器中,选择“骨骼”。

关键帧是一个红绿蓝颜色的滑块,如果出现红绿蓝颜色的滑块,说明设置关键帧成功了。

4. 移动帧滑动到5帧的位置(数字要变化),旋转骨骼,点击钥匙形状按钮,制作关键帧。为了帮助我们精确旋转,我们可以设置旋转角度,同时打开旋转捕捉。

?

?5. 接下来,移动帧滑动到10帧的位置,旋转骨骼,点击钥匙形状按钮,制作关键帧。

这样,我们就制作了一个立方体向右倒的简单动画。我们可以播放看看效果,

点击上面中间的小三角“播放动画”按钮,就可以从0帧-100帧进行播放了。播放过程中,当滑动移动到0-10之间的时候,就会出现倒下的动画效果。

6. 我们将滑动移动到11帧的位置,将模型“采用默认姿势”,并设置关键帧

?7. 接下来,我们在第15帧和20帧的位置,设置模型向左倒的关键帧。

这样,我们就完成了两组动画,一个是向右倒(0-10帧),一个是向左倒(11-20帧)。

备注:滑块上的关键帧可以复制的。

6. 导出骨骼动画文件,以.X为例。我们知道在DirectX中播放动画的话,都是按照动画集“AnimationSet”进行播放的。我们上文中制作了两个动画集(向右倒下和向左倒下)。也就是说,在导出.X文件的时候,我们需要设置这两个动画集。

上图的设置中,我们看到“Animation Clips”的选项,也就是动画片段(动画集)。我们分别设置0-10帧为一个动画集,名称为“rotate_right”,然后又设置11-20帧为另一个动画集,名称为“rotate_left”。导出成功后,打开我们的.X文件,就能看到这两个动画集数据了。

7. 接下来,我们将导出的”skin.X”文件和贴图文件复制到“D3D_08_Bone”项目中去。同时,我们调整一下,首先是主文件main.cpp中加载我们的”skin.X”模型文件。

// 定义初始化场景函数 void initScene(HWND hwnd, HINSTANCE hInstance) { // 实例化骨骼动画网格对象 mesh = new SkinMesh(D3DDevice, L"asset/", L"skin.X");

紧接着就是SkinMesh的构造函数:

// 声明动画集 LPD3DXANIMATIONSET ppAnimSet = NULL; // 向左倒的动画集:根据ID或者名称获取动画集 //controller->GetAnimationSet(0, &ppAnimSet); //controller->GetAnimationSetByName("rotate_left", &ppAnimSet); // 向右倒的动画集:根据ID或者名称获取动画集 //controller->GetAnimationSet(1, &ppAnimSet); controller->GetAnimationSetByName("rotate_right", &ppAnimSet); // 将动画集应用于指定轨迹(0) int track = 0; controller->SetTrackAnimationSet(track, ppAnimSet); controller->SetTrackEnable(track, TRUE);

运行程序,就会看到播放向右倒的动画了,

?然后,我们调整播放另一个动画的代码,执行如下:

Biped动画的关键帧的手工设置不在动画控制面板中进行,是在命令面板中“运动”面板完成的。具体操作就是,调整Biped骨骼,让模型做好一个姿势后,选择所有骨骼,点击“关键点信息”中的第一个小红点“设置关键点”手动制作关键帧。

上图中除了“设置关键点”之外,还有“踩踏关键点”,“滑动关键点”,“自由关键点”几种类型,他们都可以解决不同的动画问题。例如:移动身体,脚会移动到地面以下,选择脚骨骼,在“关键点信息”中选择“设置滑动关键点”设置为滑动关键帧(从左往右第四个选项)。这样,脚就被固定在地面,做完动作后,还要取消滑动关键帧,点击“设置自由关键点”设置为自由关键帧即可。

“关键点信息”最后一个“~”代表动画轨迹,也就是运动过程中,根骨骼世界坐标的运动轨迹。从轨迹中可以看出模型的运行状况。如果轨迹不是很平滑的话,动画也会很生硬,需要重新调整关键帧中根骨骼的位置,直到所有轨迹很平滑和自然。比如说人体向前跳跃的话,运动轨迹应该是一个抛物线形状。

Biped动画的制作还是比较复杂的,主要在操作都集中在命令面板中“运动”子面板。骨骼的两种运动方式:一种是FK 父级骨骼带动子级骨骼,另一种IK 子级骨骼带动父级骨骼。两种运动方式在制作骨骼动画中,都经常使用。

我们创建的骨骼动画一般都是顶点动画,也就是说模型的位置是不变的。即便是走路的动画,它也是原地走路的动作。因为如果是位移动画的话,我们在游戏中就无法控制角色移动了。我们在游戏中需要控制动画的播放速度,然后同步的修改游戏角色的位移。

我们在创建游戏角色动画时候,通常包含休闲,行走,攻击,死亡,受伤等动画。

? ? ? ? ? ? ? ? ? ? ? ? |----休闲Pose

站立Pose-----|? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |----攻击动画

? ? ? ? ? ? ? ? ? ? ? ? |----战斗待机Pose-------|----受伤动画

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |----死亡动画

关于更多的骨骼动画内容,大家可以通过其他方式进行深入学习!

备注:这是我们游戏开发系列教程的第三个课程,这个课程主要讲解3ds max建模的基础知识。学习目标主要通过3ds max的操作来加深对游戏基础知识的了解。如果有兴趣的同学,可以通过其他方式来学习3ds max的专业知识。本课程中如果有一些错误的地方,请大家留言指正,感激不尽!


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #max选择所有子骨骼 #一般情况下使用30帧就足够了 #在3ds #max可以设置这个FPS值 #右下角时间配置可以设置FPS值