OSDN Git Service

VMD用サンプル追加
authorOlyutorskii <olyutorskii@users.osdn.me>
Wed, 24 Aug 2011 16:05:18 +0000 (01:05 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Wed, 24 Aug 2011 16:05:18 +0000 (01:05 +0900)
src/test/java/sample/vmd/DummyHandler.java [new file with mode: 0644]
src/test/java/sample/vmd/DummyMain.java [new file with mode: 0644]

diff --git a/src/test/java/sample/vmd/DummyHandler.java b/src/test/java/sample/vmd/DummyHandler.java
new file mode 100644 (file)
index 0000000..f896152
--- /dev/null
@@ -0,0 +1,230 @@
+/*
+ * sample handler
+ *
+ * License : The MIT License
+ * Copyright(c) 2011 MikuToga Partners
+ */
+
+package sample.vmd;
+
+import jp.sourceforge.mikutoga.parser.MmdFormatException;
+import jp.sourceforge.mikutoga.parser.ParseStage;
+import jp.sourceforge.mikutoga.vmd.VmdConst;
+import jp.sourceforge.mikutoga.vmd.parser.VmdLightingHandler;
+import jp.sourceforge.mikutoga.vmd.parser.VmdCameraHandler;
+import jp.sourceforge.mikutoga.vmd.parser.VmdBasicHandler;
+
+/**
+ * サンプルのハンドラ。
+ * これはユニットテストではない。
+ * 必要に応じて要所でデバッガのブレークポイントを設定しておくと便利。
+ */
+public class DummyHandler implements VmdBasicHandler,
+                                       VmdLightingHandler,
+                                       VmdCameraHandler {
+
+    public DummyHandler(){
+        super();
+        return;
+    }
+
+    @Override
+    public void vmdParseStart(){
+        println("VMD parse start");
+        return;
+    }
+
+    @Override
+    public void vmdParseEnd(boolean hasMoreData){
+        System.out.println("VMD parse end");
+        if(hasMoreData){
+            println("there is unknown data below");
+        }
+        return;
+    }
+
+    @Override
+    public void loopStart(ParseStage stage, int loops){
+        println("===== Loop start ===== * "+ loops);
+        return;
+    }
+
+    @Override
+    public void loopNext(ParseStage stage){
+        return;
+    }
+
+    @Override
+    public void loopEnd(ParseStage stage){
+        println("===== Loop end =====");
+        return;
+    }
+
+    @Override
+    public void vmdHeaderInfo(byte[] header) throws MmdFormatException{
+        println("header length = " + header.length);
+    }
+
+    @Override
+    public void vmdModelName(String modelName) throws MmdFormatException{
+        println("modelname = " + modelName);
+        println("isStageAct="+VmdConst.isStageActName(modelName));
+    }
+
+    @Override
+    public void vmdBoneMotion(String boneName, int keyFrameNo){
+        println(boneName+":"+keyFrameNo);
+        return;
+    }
+
+    @Override
+    public void vmdBonePosition(float xPos, float yPos, float zPos){
+        println("motion : x="+xPos+" y="+yPos+" z="+zPos);
+        return;
+    }
+
+    @Override
+    public void vmdBoneRotationQt(float qx, float qy, float qz, float qw){
+        println("rotation : qx="+qx+" qy="+qy+" qz="+qz+" qw="+qw);
+        return;
+    }
+
+    @Override
+    public void vmdBoneIntpltXpos(byte xP1x, byte xP1y, byte xP2x, byte xP2y){
+        println("interpolate(X) : P1=("+xP1x+","+xP1y+") P2=("+xP2x+","+xP2y+")");
+        return;
+    }
+
+    @Override
+    public void vmdBoneIntpltYpos(byte yP1x, byte yP1y, byte yP2x, byte yP2y){
+        println("interpolate(Y) : P1=("+yP1x+","+yP1y+") P2=("+yP2x+","+yP2y+")");
+        return;
+    }
+
+    @Override
+    public void vmdBoneIntpltZpos(byte zP1x, byte zP1y, byte zP2x, byte zP2y){
+        println("interpolate(Z) : P1=("+zP1x+","+zP1y+") P2=("+zP2x+","+zP2y+")");
+        return;
+    }
+
+    @Override
+    public void vmdBoneIntpltRot(byte rP1x, byte rP1y, byte rP2x, byte rP2y){
+        println("interpolate(R) : P1=("+rP1x+","+rP1y+") P2=("+rP2x+","+rP2y+")");
+        return;
+    }
+
+    @Override
+    public void vmdMorphMotion(String morphName, int keyFrameNo, float flex){
+        if(VmdConst.isBaseMorphName(morphName)) return;
+        println(morphName+":"+keyFrameNo+" flex="+flex);
+        return;
+    }
+
+    @Override
+    public void vmdCameraMotion(int keyFrameNo){
+        println("camera : frame#="+keyFrameNo);
+        return;
+    }
+
+    @Override
+    public void vmdCameraRange(float distance){
+        println("camera : range="+distance);
+        return;
+    }
+
+    @Override
+    public void vmdCameraPosition(float xPos, float yPos, float zPos){
+        println("camera : x="+xPos+" y="+yPos+" z="+zPos);
+        return;
+    }
+
+    @Override
+    public void vmdCameraRotation(float latitude, float longitude, float roll){
+        println("camera : latitude="+latitude+" longtitude="+longitude+" roll="+roll);
+        return;
+    }
+
+    @Override
+    public void vmdCameraProjection(int angle, boolean hasPerspective){
+        println("camera : anglet="+angle+" perspective="+hasPerspective);
+        return;
+    }
+
+    @Override
+    public void vmdCameraIntpltXpos(byte p1x, byte p1y, byte p2x, byte p2y){
+        println("cameraX : P1=("+p1x+","+p1y+") P2=("+p2x+","+p2y+")");
+        return;
+    }
+
+    @Override
+    public void vmdCameraIntpltYpos(byte p1x, byte p1y, byte p2x, byte p2y){
+        println("cameraY : P1=("+p1x+","+p1y+") P2=("+p2x+","+p2y+")");
+        return;
+    }
+
+    @Override
+    public void vmdCameraIntpltZpos(byte p1x, byte p1y, byte p2x, byte p2y){
+        println("cameraZ : P1=("+p1x+","+p1y+") P2=("+p2x+","+p2y+")");
+        return;
+    }
+
+    @Override
+    public void vmdCameraIntpltRotation(byte p1x, byte p1y, byte p2x, byte p2y){
+        println("cameraRot : P1=("+p1x+","+p1y+") P2=("+p2x+","+p2y+")");
+        return;
+    }
+
+    @Override
+    public void vmdCameraIntpltRange(byte p1x, byte p1y, byte p2x, byte p2y){
+        println("cameraRange : P1=("+p1x+","+p1y+") P2=("+p2x+","+p2y+")");
+        return;
+    }
+
+    @Override
+    public void vmdCameraIntpltProjection(byte p1x, byte p1y, byte p2x, byte p2y){
+        println("cameraProjection : P1=("+p1x+","+p1y+") P2=("+p2x+","+p2y+")");
+        return;
+    }
+
+    @Override
+    public void vmdLuminousMotion(int keyFrameNo){
+        println("light : frame#="+keyFrameNo);
+        return;
+    }
+
+    @Override
+    public void vmdLuminousColor(float rVal, float gVal, float bVal){
+        println("light : color="+rVal+","+gVal+","+bVal);
+        return;
+    }
+
+    @Override
+    public void vmdLuminousDirection(float xVec, float yVec, float zVec){
+        println("light : direction="+xVec+","+yVec+","+zVec);
+        return;
+    }
+
+    @Override
+    public void vmdShadowMotion(int keyFrameNo){
+        println("shadow : frame#="+keyFrameNo);
+        return;
+    }
+
+    @Override
+    public void vmdShadowMode(byte shadowMode){
+        println("shadow : mode="+shadowMode);
+        return;
+    }
+
+    @Override
+    public void vmdShadowScopeRaw(float shadowScope){
+        println("shadow : scope="+shadowScope);
+        return;
+    }
+
+    private void println(String msg){
+        System.out.println(msg);
+        return;
+    }
+
+}
diff --git a/src/test/java/sample/vmd/DummyMain.java b/src/test/java/sample/vmd/DummyMain.java
new file mode 100644 (file)
index 0000000..5d25cf4
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * sample parser
+ *
+ * License : The MIT License
+ * Copyright(c) 2011 MikuToga Partners
+ */
+
+package sample.vmd;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import jp.sourceforge.mikutoga.parser.MmdFormatException;
+import jp.sourceforge.mikutoga.parser.MmdSource;
+import jp.sourceforge.mikutoga.vmd.parser.VmdParser;
+
+/**
+ * パーサ利用のサンプルプログラム。
+ * これはユニットテストではない。
+ */
+public class DummyMain {
+
+    private static final String VMDFILE;
+    private static final int BUF_SZ = 4086;
+    private static final DummyHandler handler = new DummyHandler();
+
+    static{
+//        VMDFILE = "D:\\Test\\test.vmd";
+        VMDFILE = "D:\\Test\\camera.vmd";
+    }
+
+    private static MmdSource buildSource(String fname){
+        File file = new File(fname);
+
+        InputStream is;
+        try{
+            is = new FileInputStream(file);
+        }catch(FileNotFoundException e){
+            System.err.println(e);
+            System.exit(1);
+            return null;
+        }
+        is = new BufferedInputStream(is, BUF_SZ);
+
+        MmdSource source = new MmdSource(is);
+
+        return source;
+    }
+
+    private static void setupHandler(VmdParser parser){
+        parser.setBasicHandler(handler);
+        parser.setLightingHandler(handler);
+        parser.setCameraHandler(handler);
+
+        return;
+    }
+
+    public static void main(String[] args){
+        String fname;
+        if(args.length == 1) fname = args[0];
+        else                 fname = VMDFILE;
+
+        MmdSource source = buildSource(fname);
+
+        VmdParser parser = new VmdParser(source);
+
+        setupHandler(parser);
+        parser.setStrictMode(true);
+
+        try{
+            parser.parseVmd();
+        }catch(IOException e){
+            System.err.println(e);
+            System.exit(1);
+        }catch(MmdFormatException e){
+            System.err.println(e);
+            System.exit(1);
+        }
+
+        System.exit(0);
+
+        return;
+    }
+
+}