OSDN Git Service

5cbdf38cc86300ae6a27c5f7af25c44b1425d950
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / parser / pmd / PmdBoneHandler.java
1 /*\r
2  * PMD bone 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  */\r
18 public interface PmdBoneHandler extends LoopHandler {\r
19 \r
20     /**\r
21      * ボーン情報パースステージ。\r
22      */\r
23     class PmdBoneStage extends ParseStage{\r
24         /** コンストラクタ。 */\r
25         PmdBoneStage(){ super(); return; }\r
26     }\r
27 \r
28     /** ボーン定義抽出ループ。 */\r
29     PmdBoneStage BONE_LIST = new PmdBoneStage();\r
30 \r
31     /** IKリスト抽出ループ。 */\r
32     PmdBoneStage IK_LIST = new PmdBoneStage();\r
33 \r
34     /** IKチェーンリスト抽出ループ。 */\r
35     PmdBoneStage IKCHAIN_LIST = new PmdBoneStage();\r
36 \r
37     /** ボーングループ名抽出ループ。 */\r
38     PmdBoneStage BONEGROUP_LIST = new PmdBoneStage();\r
39 \r
40     /** ボーングループ内訳抽出ループ。 */\r
41     PmdBoneStage GROUPEDBONE_LIST = new PmdBoneStage();\r
42 \r
43     /**\r
44      * ボーン定義情報の通知を受け取る。\r
45      * {@link #BONE_LIST}ループの構成要素。\r
46      * @param boneName ボーン名\r
47      * @param boneKind ボーン種別。\r
48      * <ul>\r
49      * <li>0:回転\r
50      * <li>1:回転/移動\r
51      * <li>2:IK\r
52      * <li>3:不明\r
53      * <li>4:IK影響下(回転)\r
54      * <li>5:回転影響下\r
55      * <li>6:IK接続先\r
56      * <li>7:非表示\r
57      * <li>8:捩り\r
58      * <li>9:回転連動\r
59      * </ul>\r
60      * ※8,9はMMD4.0から?\r
61      * @throws MmdFormatException 不正フォーマットによる\r
62      * パース処理の中断をパーサに指示\r
63      */\r
64     void pmdBoneInfo(String boneName, byte boneKind)\r
65             throws MmdFormatException;\r
66 \r
67     /**\r
68      * ボーン間接続情報の通知を受け取る。\r
69      * {@link #BONE_LIST}ループの構成要素。\r
70      * @param parentId 親(前)ボーンID。無い場合は0xffff。\r
71      * @param tailId 子(次)ボーンID。末端の場合は0。\r
72      * 捩りボーンの場合は軸方向のボーンID、\r
73      * 回転連動ボーンの場合は影響元ボーンID\r
74      * @param ikId 影響IKボーンID。未指定の場合は0。\r
75      * ※回転連動では影響度(0-100)、負や100以上もOK!\r
76      * @throws MmdFormatException 不正フォーマットによる\r
77      * パース処理の中断をパーサに指示\r
78      */\r
79     void pmdBoneLink(int parentId, int tailId, int ikId)\r
80             throws MmdFormatException;\r
81 \r
82     /**\r
83      * ボーン位置情報の通知を受け取る。\r
84      * {@link #BONE_LIST}ループの構成要素。\r
85      * @param xPos X座標\r
86      * @param yPos Y座標\r
87      * @param zPos Z座標\r
88      * @throws MmdFormatException 不正フォーマットによる\r
89      * パース処理の中断をパーサに指示\r
90      */\r
91     void pmdBonePosition(float xPos, float yPos, float zPos)\r
92             throws MmdFormatException;\r
93 \r
94     /**\r
95      * IKボーン情報の通知を受け取る。\r
96      * {@link #IK_LIST}ループの構成要素。\r
97      * @param boneId IKボーンID\r
98      * @param targetId IKボーンが最初に接続するIK接続先ボーンID\r
99      * @param depth 再帰演算の深さ\r
100      * @param weight 制限角度強度\r
101      * @throws MmdFormatException 不正フォーマットによる\r
102      * パース処理の中断をパーサに指示\r
103      */\r
104     void pmdIKInfo(int boneId, int targetId, int depth, float weight)\r
105             throws MmdFormatException;\r
106 \r
107     /**\r
108      * IKチェイン要素の通知を受け取る。\r
109      * {@link #IK_LIST}ループの下位{@link #IKCHAIN_LIST}ループの構成要素。\r
110      * @param childId IK影響下ボーンID\r
111      * @throws MmdFormatException 不正フォーマットによる\r
112      * パース処理の中断をパーサに指示\r
113      */\r
114     void pmdIKChainInfo(int childId)\r
115             throws MmdFormatException;\r
116 \r
117     /**\r
118      * ボーングループ名定義の通知を受け取る。\r
119      * {@link #BONEGROUP_LIST}ループの構成要素。\r
120      * @param groupName ボーングループ名。末尾のLF(0x0a)は削除される。\r
121      * @throws MmdFormatException 不正フォーマットによる\r
122      * パース処理の中断をパーサに指示\r
123      */\r
124     void pmdBoneGroupInfo(String groupName) throws MmdFormatException;\r
125 \r
126     /**\r
127      * ボーングループ内訳の通知を受け取る。\r
128      * {@link #GROUPEDBONE_LIST}ループの構成要素。\r
129      * @param boneId グループに所属するボーンのID\r
130      * @param groupId ボーンが所属するボーングループIDに1を足した数\r
131      * @throws MmdFormatException 不正フォーマットによる\r
132      * パース処理の中断をパーサに指示\r
133      */\r
134     void pmdGroupedBoneInfo(int boneId, int groupId)\r
135             throws MmdFormatException;\r
136 \r
137 }\r