- 1 public void onDrawFrame(GL10 gl) {
- 2 // Your rendering code goes here
- 3 //对于OpenGL的设置
- 4 gl.glMatrixMode(GL10.GL_MODELVIEW ) ;
- 5 gl.glLoadIdentity() ;
- 6 gl.glClear( GL10.GL_COLOR_BUFFER_BIT ) ;
- 7 gl.glEnable( GL10.GL_BLEND ) ;
- 8 gl.glBlendFunc( GL10.GL_ONE , GL10.GL_ONE_MINUS_SRC_ALPHA ) ;
- 9 gl.glDisable( GL10.GL_DEPTH_TEST ) ;
- 10 gl.glDisable( GL10.GL_CULL_FACE ) ;
- 11
- 12
- 13 live2DModel.loadParam();
- 14
- 15 /*motionMgr是MotionQueueManager.class的,从名字就能看出来的个用于存放Motion(.mtn)文件的队列*/
- 16 if(motionMgr.isFinished())
- 17 {
- 18 /*播放动画需要使用MotionQueueManager的startMotion函数
- 19 * 第二个参数可以设定动作结束以后删除与否(设置为true时,Live2D会自动调用delete()函数)
- 20 */
- 21 motionMgr.startMotion(motion, false);
- 22 }
- 23 else
- 24 {
- 25 /*当然只是Motion肯定不能动的,所以必须调用updateParam()函数设定将正在播放的动作参数设定到模型中*/
- 26 motionMgr.updateParam(live2DModel);
- 27 }
- 28 //暂时保存目前所有数值
- 29 live2DModel.saveParam();
- 30 /*dragMgr是L2DTargetPoint类的,这个L2DTargetPoint用于管理拖拽的坐标,
- 31 关于触碰的获取、设备坐标的变换方法,也是壁纸中点击屏幕的任意一点模型就会看向哪里的实现*/
- 32 dragMgr.update();
- 33
- 34 float dragX=dragMgr.getX();
- 35 float dragY=dragMgr.getY();
- 36
- 37 //调整脸的方向
- 38 live2DModel.addToParamFloat(L2DStandardID.PARAM_ANGLE_X, dragX*30);
- 39 live2DModel.addToParamFloat(L2DStandardID.PARAM_ANGLE_Y, dragY*30);
- 40
- 41 //调整身体的方向
- 42 live2DModel.addToParamFloat(L2DStandardID.PARAM_BODY_ANGLE_X, dragX*10);
- 43
- 44 //调整眼球方向,本例中不需要
- 45 /*live2DModel.addToParamFloat( "PARAM_EYE_BALL_X", dragX , 1 );
- 46 live2DModel.addToParamFloat( "PARAM_EYE_BALL_Y", dragY , 1 );*/
- 47
- 48 /*这个类是 Live2D 库中简易使用物理演算的封装类。
- 49 不使用也可设置物理演算。
- 50 L2DPhysics 类的 load 函数用来读取 JSON 文件。
- 51 更新时,调用 update 函数,把参数应用在模型上。*/
- 52 physics.updateParam(live2DModel);
- 53
- 54 //配置绘图环境
- 55 live2DModel.setGL( gl ) ;
- 56 //更新顶点
- 57 live2DModel.update() ;
- 58 //绘制
- 59 live2DModel.draw() ;
- 60 }