OSDN Git Service

TogaGem1.103.2版より移行。
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / parser / pmd / PmdShapeHandler.java
1 /*\r
2  * PMD shape information handler\r
3  *\r
4  * License : The MIT License\r
5  * Copyright(c) 2010 MikuToga Partners\r
6  */\r
7 \r
8 package jp.sourceforge.mikutoga.parser.pmd;\r
9 \r
10 import jp.sourceforge.mikutoga.parser.LoopHandler;\r
11 import jp.sourceforge.mikutoga.parser.MmdFormatException;\r
12 import jp.sourceforge.mikutoga.parser.ParseStage;\r
13 \r
14 /**\r
15  * PMDモデルの各種形状(頂点、面)の通知用ハンドラ。\r
16  * 0から始まる頂点ID順に頂点は出現する。\r
17  * 0から始まる面ID順に面は出現する。\r
18  */\r
19 public interface PmdShapeHandler extends LoopHandler {\r
20 \r
21     /**\r
22      * モデル形状パースステージ。\r
23      */\r
24     class PmdShapeStage extends ParseStage{\r
25         /** コンストラクタ。 */\r
26         PmdShapeStage(){ super(); return; }\r
27     }\r
28 \r
29     /** 頂点抽出ループ。 */\r
30     PmdShapeStage VERTEX_LIST = new PmdShapeStage();\r
31     /** 面抽出ループ。 */\r
32     PmdShapeStage SURFACE_LIST = new PmdShapeStage();\r
33 \r
34     /**\r
35      * 頂点の座標の通知を受け取る。\r
36      * {@link #VERTEX_LIST}ループの構成要素\r
37      * @param xPos X座標\r
38      * @param yPos Y座標\r
39      * @param zPos Z座標\r
40      * @throws MmdFormatException 不正フォーマットによる\r
41      * パース処理の中断をパーサに指示\r
42      */\r
43     void pmdVertexPosition(float xPos, float yPos, float zPos)\r
44             throws MmdFormatException;\r
45 \r
46     /**\r
47      * 頂点の法線情報の通知を受け取る。\r
48      * {@link #VERTEX_LIST}ループの構成要素\r
49      * ※単位ベクトル化必須?\r
50      * @param xVec 法線ベクトルX成分\r
51      * @param yVec 法線ベクトルY成分\r
52      * @param zVec 法線ベクトルZ成分\r
53      * @throws MmdFormatException 不正フォーマットによる\r
54      * パース処理の中断をパーサに指示\r
55      */\r
56     void pmdVertexNormal(float xVec, float yVec, float zVec)\r
57             throws MmdFormatException;\r
58 \r
59     /**\r
60      * 頂点のUVマッピング情報の通知を受け取る。\r
61      * (頂点UV)\r
62      * {@link #VERTEX_LIST}ループの構成要素\r
63      * @param uVal テクスチャのU座標\r
64      * @param vVal テクスチャのV座標\r
65      * @throws MmdFormatException 不正フォーマットによる\r
66      * パース処理の中断をパーサに指示\r
67      */\r
68     void pmdVertexUV(float uVal, float vVal )\r
69             throws MmdFormatException;\r
70 \r
71     /**\r
72      * 頂点のボーン間ウェイトバランス情報の通知を受け取る。\r
73      * {@link #VERTEX_LIST}ループの構成要素\r
74      * @param boneId1 ボーンその1識別ID\r
75      * @param boneId2 ボーンその2識別ID\r
76      * @param weightForB1 ボーンその1への影響度。0(min)~100(max)\r
77      * ボーンその2への影響度は100からの引き算で求める。\r
78      * @throws MmdFormatException 不正フォーマットによる\r
79      * パース処理の中断をパーサに指示\r
80      */\r
81     void pmdVertexWeight(int boneId1, int boneId2, int weightForB1)\r
82             throws MmdFormatException;\r
83 \r
84     /**\r
85      * 頂点のエッジ表現情報の通知を受け取る。\r
86      * 材質単位でのエッジ表現指定に優先される。\r
87      * {@link #VERTEX_LIST}ループの構成要素\r
88      * @param hideEdge エッジ無効ならtrue\r
89      * @throws MmdFormatException 不正フォーマットによる\r
90      * パース処理の中断をパーサに指示\r
91      */\r
92     void pmdVertexEdge(boolean hideEdge)\r
93             throws MmdFormatException;\r
94 \r
95     /**\r
96      * 3つの頂点から構成される面情報の通知を受け取る。\r
97      * {@link #SURFACE_LIST}ループの構成要素\r
98      * @param vertexId1 頂点IDその1\r
99      * @param vertexId2 頂点IDその1\r
100      * @param vertexId3 頂点IDその1\r
101      * @throws MmdFormatException 不正フォーマットによる\r
102      * パース処理の中断をパーサに指示\r
103      */\r
104     void pmdSurfaceTriangle(int vertexId1, int vertexId2, int vertexId3)\r
105             throws MmdFormatException;\r
106 \r
107 }\r