Cubism SDK‎ > ‎多平台开发‎ > ‎Unity‎ > ‎Cs版‎ > ‎

关于绘图模式的设定

关于绘图模式:

Live2D Cubism SDK for Unity 绘图模式有两种。
・Live2D.L2D_RENDER_DRAW_MESH_NOW (默认值)
・Live2D.L2D_RENDER_DRAW_MESH



各绘图模式的特征:

L2D_RENDER_DRAW_MESH_NOW 
优点
  • 对 Camera (摄像机视图)的设定没有限制。
缺点
  • 如果在 Camera 侧放置了半透明物体,则模型将被绘制在半透明物体上层
  • 对绘制的模型无法设置图层。
    (但是,如果从 Camera 的 OnPostRender() 调用draw(),则只能显示调用的 Camera。)
  • 不受照明影响。

L2D_RENDER_DRAW_MESH
优点
  • 半透明物体和 Camera 之间的故障不会发生。
  • 可以对模型设置图层。
  • 可体现出光照的影响。
缺点
  • Camera 的 Perspective 值必须为 Orthographic,而且必须对 Camera 进行垂直设定。
    (为使各物体的 Z 值保持稍微的差别。)
    但是,根据矩阵计算时的 Z 值,这里能够设定为最小值。
  • 同样,在 3D画面操作 Scene 视图时,会导致绘图崩溃 。


设置绘图模式:

设置绘图模式,必须设置以下三个值:
1.由 setRenderMode() 的参数传递的绘图模式设定值
2.Unity Camera 的 Projection 值
3.调用 Live2D 绘图命令的时间点

1.
在 模型加载之后,贴图加载之前,调用Live2DModelUnity.setRenderMode() 。
从以下选择想要设定的模式的对应值,赋给参数。
  • Live2D.L2D_RENDER_DRAW_MESH_NOW (默认值)
  • Live2D.L2D_RENDER_DRAW_MESH
代码如下
  1. // 加载模型
  2. live2DModel = Live2DModelUnity.loadModel(mocFile.bytes);
  3.  
  4. // 设置绘图模式
  5. live2DModel.setRenderMode(Live2D.L2D_RENDER_DRAW_MESH);
  6.  
  7. // 加载贴图
  8. for(int i = 0; i<textures.Length; i++){
  9.     live2DModel.setTexture(i,textures[i]);
  10. }


2.
在 Unity Editor 中选择 Camera,修改 Inspector面板 Camera>Projection 的值。
如果要设置 L2D_RENDER_DRAW_MESH 模式,则这里必须修改成 Orthographic。 
如果要设置 L2D_RENDER_DRAW_MESH_NOW 模式,则两者均可。


3.
两种绘图模式分别使用 DrawMeshNow() 和 DrawMesh()。
在两种绘图模式下,Live2D 绘图函数必须能够改变调用的时间点。
绘图模式为 L2D_RENDER_DRAW_MESH_NOW (使用 DrawMeshNow() 函数)时,应从 OnRenderObject() 或OnPostRenderer() 中调用绘制语句。
绘图模式为 L2D_RENDER_DRAW_MESH使用 DrawMesh() 函数)时,应从 Update() 调用

  1. void Update()
  2. {
  3.         // 绘图模式为L2D_RENDER_DRAW_MESH时
  4.         if(live2DModel.getRenderMode()==Live2D.L2D_RENDER_DRAW_MESH) Render();
  5. }
  6.  
  7. void OnRenderObject()
  8. {
  9.         // 绘图模式为L2D_RENDER_DRAW_MESH_NOW时
  10.         if(live2DModel.getRenderMode()==Live2D.L2D_RENDER_DRAW_MESH_NOW) Render();
  11. }
  12.  
  13. void Render()
  14. {
  15.         // 绘制Live2D模型
  16.         live2DModel.draw();
  17. }




图层的设置方法:

如上文所说,只有 L2D_RENDER_DRAW_MESH 模式才能设置图层

把想要设置的 Layer 值(默认为 0 )传给 Live2DModelUnity.setLayer() 的参数。
在 Inspector 面板的 Layer>Add Layer... 可修改 Layer值。







コメント