2 * PMD bone information handler
\r
4 * License : The MIT License
\r
5 * Copyright(c) 2010 MikuToga Partners
\r
8 package jp.sourceforge.mikutoga.parser.pmd;
\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
15 * PMDモデルの各種ボーン情報の通知用ハンドラ。
\r
16 * ボーン定義の出現順と、0から始まるボーンIDは対応する。
\r
18 public interface PmdBoneHandler extends LoopHandler {
\r
23 class PmdBoneStage extends ParseStage{
\r
25 PmdBoneStage(){ super(); return; }
\r
29 PmdBoneStage BONE_LIST = new PmdBoneStage();
\r
32 PmdBoneStage IK_LIST = new PmdBoneStage();
\r
34 /** IKチェーンリスト抽出ループ。 */
\r
35 PmdBoneStage IKCHAIN_LIST = new PmdBoneStage();
\r
37 /** ボーングループ名抽出ループ。 */
\r
38 PmdBoneStage BONEGROUP_LIST = new PmdBoneStage();
\r
40 /** ボーングループ内訳抽出ループ。 */
\r
41 PmdBoneStage GROUPEDBONE_LIST = new PmdBoneStage();
\r
45 * {@link #BONE_LIST}ループの構成要素。
\r
46 * @param boneName ボーン名
\r
47 * @param boneKind ボーン種別。
\r
61 * @throws MmdFormatException 不正フォーマットによる
\r
64 void pmdBoneInfo(String boneName, byte boneKind)
\r
65 throws MmdFormatException;
\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
79 void pmdBoneLink(int parentId, int tailId, int ikId)
\r
80 throws MmdFormatException;
\r
84 * {@link #BONE_LIST}ループの構成要素。
\r
88 * @throws MmdFormatException 不正フォーマットによる
\r
91 void pmdBonePosition(float xPos, float yPos, float zPos)
\r
92 throws MmdFormatException;
\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
104 void pmdIKInfo(int boneId, int targetId, int depth, float weight)
\r
105 throws MmdFormatException;
\r
108 * IKチェイン要素の通知を受け取る。
\r
109 * {@link #IK_LIST}ループの下位{@link #IKCHAIN_LIST}ループの構成要素。
\r
110 * @param childId IK影響下ボーンID
\r
111 * @throws MmdFormatException 不正フォーマットによる
\r
114 void pmdIKChainInfo(int childId)
\r
115 throws MmdFormatException;
\r
118 * ボーングループ名定義の通知を受け取る。
\r
119 * {@link #BONEGROUP_LIST}ループの構成要素。
\r
120 * @param groupName ボーングループ名。末尾のLF(0x0a)は削除される。
\r
121 * @throws MmdFormatException 不正フォーマットによる
\r
124 void pmdBoneGroupInfo(String groupName) throws MmdFormatException;
\r
127 * ボーングループ内訳の通知を受け取る。
\r
128 * {@link #GROUPEDBONE_LIST}ループの構成要素。
\r
129 * @param boneId グループに所属するボーンのID
\r
130 * @param groupId ボーンが所属するボーングループIDに1を足した数
\r
131 * @throws MmdFormatException 不正フォーマットによる
\r
134 void pmdGroupedBoneInfo(int boneId, int groupId)
\r
135 throws MmdFormatException;
\r