• Showing Page History #71848

このページではサンプルプログラムの中身を解説します。

Assetsとは

Assetsとはプログラムで使用されるデータが格納されている場所です。

Assetsの構造

まずMikuMikuStudioでサンプルプログラムを開き、左側のProjectのツリー(赤○で囲った部分)を見て下さい。このProject Assetsというところにプログラムで使用するPMDモデルやテクスチャファイルなどが格納されています。

このサンプルでは初音ミクのモデルはModelの下に、モーションデータはmotionの下に格納されています。

toonの下にはトゥーンシェードで使用するビットマップが格納されています。

プログラムの構造

ProjectのツリーのSource Packageというところを展開するとMain.javaというファイルがあります。これがプログラム本体です。

Main.javaをダブルクリックするとファイルが開きます。

ソースコード

  1. package mygame;
  2. import com.jme3.app.SimpleApplication;
  3. import com.jme3.light.AmbientLight;
  4. import com.jme3.light.DirectionalLight;
  5. import com.jme3.light.PointLight;
  6. import com.jme3.math.ColorRGBA;
  7. import com.jme3.math.Vector3f;
  8. import com.jme3.scene.Geometry;
  9. import projectkyoto.jme3.mmd.CartoonEdgeProcessor;
  10. import projectkyoto.jme3.mmd.PMDNode;
  11. import projectkyoto.jme3.mmd.UpdateControl;
  12. import projectkyoto.jme3.mmd.vmd.VMDControl;
  13. import projectkyoto.mmd.file.VMDFile;
  14. /**
  15. * test
  16. * <p/>
  17. * @author kobayasi
  18. */
  19. public class Main extends SimpleApplication {
  20. PointLight pl;
  21. Geometry lightMdl;
  22. VMDControl vmdControl;
  23. public static void main(String[] args) {
  24. // com.jme3.system.JmeSystem.setLowPermissions(true);
  25. Main app = new Main();
  26. app.start();
  27. }
  28. @Override
  29. public void simpleInitApp() {
  30. flyCam.setMoveSpeed(50);
  31. // Load Model
  32. PMDNode pmdNode = (PMDNode) assetManager.loadModel("/Model/初音ミク.pmd");
  33. VMDFile vmd = (VMDFile) assetManager.loadAsset("/motion/ごまえミク.vmd");
  34. vmdControl = new VMDControl(pmdNode, vmd);
  35. pmdNode.addControl(vmdControl);
  36. pmdNode.addControl(new UpdateControl(pmdNode));
  37. vmdControl.setFrameNo(0);
  38. vmdControl.setPause(true);
  39. rootNode.attachChild(pmdNode);
  40. DirectionalLight dl = new DirectionalLight();
  41. dl.setDirection(new Vector3f(1, 0, -5).normalizeLocal());
  42. dl.setColor(ColorRGBA.White.mult(0.5f));
  43. rootNode.addLight(dl);
  44. AmbientLight al = new AmbientLight();
  45. al.setColor(ColorRGBA.White.mult(1.0f));
  46. rootNode.addLight(al);
  47. CartoonEdgeProcessor cartoonEdgeProcess = new CartoonEdgeProcessor();
  48. viewPort.addProcessor(cartoonEdgeProcess);
  49. cam.setLocation(new Vector3f(0, 10, 40));
  50. }
  51. float time = 0;
  52. @Override
  53. public void simpleUpdate(float tpf) {
  54. time += tpf;
  55. if (time > 5) {
  56. // start after 5 seconds.
  57. if (vmdControl != null) {
  58. vmdControl.setPause(false);
  59. }
  60. }
  61. }
  62. }