1.3 案例功能实现1.3.1 播放音乐 本例介绍如何在webmax里面添加背景音乐。 ⑴在function SceneIsDown()里面写添加背景音乐函数 CreateAudio(name, audioFile, repeatCnt) 创建Audio对象,声音文件必须为WMA或mp3格式。 参数: Ø name 对象名称。 Ø audioFile 声音文件名。 Ø repeatCnt 循环次数。 例: VGS2.CreateAudio(“Audio 1”, “music.wma”, 5); 参数说明: audio1是给取的对象名,为了以后操作该对象。 1.mp3是音乐路径名称。(注意:路径只能存放在于发布的html同目录下) 5表示播放次数,-1时表示为无数次。 ⑵ 然后用用对象名去控制播放。 VGS2.PlayAudio("audio1"); VGS2.PauseAudio(“audio 1”); 1.3.2 前景图的控制 本例介绍了如何控制webmax里面的前景图。 ⑴在webmax界面新建一个前景图。 ⑵在网页里面可以通过以下函数来控制它的可视与透明度。 用到的函数如下: 设置前景图是否可见: SetOverlayVisibility(“overlayName”, visible); //overlayName是前景图的名字,visible为1或0 //设置前景图的透明属性: SetOverlayOpacity(“overlayname”, opacity); // opacity为透明度 1.3.3 动画播放控制 在页面我们可以加载3dmax动画,webmax提供了相关的函数进行动画的控制。预先在3dmax里做好动画,记得导出时要记住勾上输出关键帧动画。 
下面一个例子说明如何实现的: 即用一个按钮实现动画中的模型移动控制。 动画制作说明:在3dmax里面制作动画时,移动模型到某一个位置,到第50帧停止移动,然后在第100帧上复制第0帧即可。那么从第0-50帧是模型移动的动画,第50-100帧是模型的复位动画。 ⑴首先介绍一下用到的函数与变量。 设置公共变量 Var modemoveback=false; //表示模型的当前状态(移动与复位) ModeMove()是按钮对应的函数 SetModelKfrPlayStatus(modelName, bKfrPlay) 设定模型是否播放关键帧动画。系统默认不自动播放模型关键帧动画,需要设定后才能播放。如果不设定播放关键帧的起始帧和终了帧(PlayModelKfr)则自动从模型关键帧动画第0帧开始播放直到最后一帧。 参数: Ø modelName 模型名称。 Ø bKfrPlay 是否播放关键帧动画,1表示播放,0表示不播放。 例: VGS2.SetModelKfrPlayStatus(“MODEL 1”, 1); VGS2.PlayKeyFrame1(begin,end) 播放动画从第begin帧到第end帧。 ⑵代码实现部分 function ModeMove() { //首先设置动画里面,模型DEMO05是可动的 VGS2.SetModelKfrPlayStatus("DEMO05", 1); if(modemoveback)//当前状态为复位 { //然后用播放函数从第50帧放到第100帧 ,即复位 VGS2.PlayKeyFrame1(50,100); VGS2.SetRenderStatus(1);//记住要渲染场景 Modemoveback=false;//改变状态 } else{ //当前状态为移动 VGS2.PlayKeyFrame1(0,50);//移动模型 VGS2.SetRenderStatus(1); Modemoveback=true; } } 1.3.4 动画相机的控制 该部分讲了如何控制动画相机的播放以及在播放过程中如何执行别的函数操作。 ⑴首先设置当前使用的相机。 VGS2.SetCurrentCameraByName("CAMERA01");//"CAMERA01"是相机名字。 ⑵一般在alldown函数里面设置动画相机的播放函数: VGS2.PlayCameraKfr(“CAMERA 01”, 1);//1表示播放,0表示停止。 注:在运行不可以移动模型,但可以执行回调函数来同时操作别的物体 ⑶在相机动画运行的过程中想执行别的函数,得预先进行设置。 VGS2.SetCameraKfrCallBackFunc(cameraName, frameIndex, funcName) 设置动画相机的帧回调JS函数。 参数: Ø cameraName 相机名称。 Ø frameIndex 帧编号。 Ø funcName 回调函数名称。 例: VGS2.SetCameraKfrCallBackFunc("CAMERA01", 880, "CAM01KFR_CallBackC1") //上面表示在动画相机第880帧时执行函数CAM01KFR_CallBackC1,可以在这个函数里面同步地干一些事。 ⑷暂停与停止动画相机的播放 VGS2.PauseCameraKfr(camName) VGS2. StopCameraKfr((camName);// camName是相机的名字。 1.3.5 动态移动相机该部分说明如何动态的移动相机与关于webmax的视图坐标。 动态移动相机函数: MoveCurrentCameraTo(from_x, from_y, from_z, at_x, at_y, at_z, frameCnt, accType) 函数说明:移动当前摄像机。 Ø From (x,y,z)指的是相机从哪一个坐标看, Ø At(x,y,z)指的是相机瞄的目标的坐标。 Ø frameCnt 帧数。 Ø accType 加速模式。 ² 0 匀速运动。 ² 1 匀加速。 ² 2 匀减速。 例: VGS2.MoveCurrentCameraTo(50.0, 100.0, 284.0, 0, 0, 0, 142, 0); 注意:我们是从3dmax哪个视图(左视图,右视图,镜头视图等)的导出s3d文件,不同的视图它们观察的x,y,z对应顺序不一样。在webmax观察的视图与从3dmax导出的视图是一样的。而屏幕的坐标是 
from_x, from_y, from_z, at_x, at_y, at_z都对应的屏幕坐标。屏幕坐标是固定的,与从3dmax里面导出的视图坐标存在对应关系。 例如3dmax里面的camera视图坐标是:  通过观察,我们发现3dmax导出视图与屏幕坐标的y,z正好互换,。 当我们要用VGS2.MoveCurrentCameraTo设置from_x, from_y, from_z, at_x, at_y, at_z坐标时,要注意从3dmax导出视图的坐标映射到屏幕坐标上面来。即 ------- --- -----
( , , )为模型在3dmax的坐标,( , , )为模型在屏幕的表示坐标。 它们的对应映射关系是从3dmax的camera视图坐标到屏幕坐标的映射关系。 下面是一个例子:实现以某一模型为中心进行旋转的设置。 VGS2.MoveCurrentCameraTo(50,170,-650,modex/2,modey/2,modez /2,20,2); / /modex/2,modey/2 ,mode/2分别存放是模型屏幕坐标的x/2,y/2,z/2(即坐标值的一半)。 这样设置镜头的瞄准的目标点的位置,在editor浏览方式下旋转的中心将移到模型的中心上。 1.3.6 动态模型消隐 该例展示了如何动态地消隐模型,每一循环一次减去模型10点的透明度,直至模型的透明度为0。 代码实现如下: 设置公共变量: Var Fadeopacity;//表示模型的透明度 function HideTooths()//实现的函数 { Fadeopacity=100; for(var i=0;i<10;i++) //循环进行十次的设置模型的透明度 { ModefadeOut();//执行函数 } } function ModefadeOut() { fadeopacity=fadeopacity-10; /./每一次消隐10的透明度 var fademodename="TOOTH "; var index; for(index=11;index<=18;index++) { fademodename=fademodename+index; VGS2.SetModelOpacity(fademodename,fadeopacity);//设置模型新的透明度 fademodename="TOOTH "; VGS2.SetRenderStatus(1);//必须渲染模型才行。 } } 下一页有关flash与webmax的交互控制
上一页 [1] [2] [3] [4] 下一页
|