2 * PMD bone information handler
4 * License : The MIT License
5 * Copyright(c) 2010 MikuToga Partners
8 package jp.sfjp.mikutoga.pmd.parser;
10 import jp.sfjp.mikutoga.bin.parser.LoopHandler;
11 import jp.sfjp.mikutoga.bin.parser.MmdFormatException;
12 import jp.sfjp.mikutoga.bin.parser.ParseStage;
15 * PMDモデルの各種ボーン情報の通知用ハンドラ。
16 * ボーン定義の出現順と、0から始まるボーンIDは対応する。
18 public interface PmdBoneHandler extends LoopHandler {
21 ParseStage BONE_LIST = new ParseStage();
24 ParseStage IK_LIST = new ParseStage();
26 /** IKチェーンリスト抽出ループ。 */
27 ParseStage IKCHAIN_LIST = new ParseStage();
30 ParseStage BONEGROUP_LIST = new ParseStage();
32 /** ボーングループ内訳抽出ループ。 */
33 ParseStage GROUPEDBONE_LIST = new ParseStage();
38 * <p>{@link #BONE_LIST}ループの構成要素。
40 * @param boneName ボーン名
41 * @param boneKind ボーン種別。
55 * @throws MmdFormatException 不正フォーマットによる
58 void pmdBoneInfo(String boneName, byte boneKind)
59 throws MmdFormatException;
64 * <p>{@link #BONE_LIST}ループの構成要素。
66 * @param parentId 親(前)ボーンID。無い場合は0xffff。
67 * @param tailId 子(次)ボーンID。末端の場合は0。
70 * @param ikId 影響IKボーンID。未指定の場合は0。
71 * ※回転連動では影響度(0-100)、負や100以上もOK!
72 * @throws MmdFormatException 不正フォーマットによる
75 void pmdBoneLink(int parentId, int tailId, int ikId)
76 throws MmdFormatException;
81 * <p>{@link #BONE_LIST}ループの構成要素。
86 * @throws MmdFormatException 不正フォーマットによる
89 void pmdBonePosition(float xPos, float yPos, float zPos)
90 throws MmdFormatException;
95 * <p>{@link #IK_LIST}ループの構成要素。
97 * @param boneId IKボーンID
98 * @param targetId IKボーンが最初に接続するIK接続先ボーンID
99 * @param depth 再帰演算の深さ
100 * @param weight 制限角度強度
101 * @throws MmdFormatException 不正フォーマットによる
104 void pmdIKInfo(int boneId, int targetId, int depth, float weight)
105 throws MmdFormatException;
110 * <p>{@link #IK_LIST}ループの下位{@link #IKCHAIN_LIST}ループの構成要素。
112 * @param childId IK影響下ボーンID
113 * @throws MmdFormatException 不正フォーマットによる
116 void pmdIKChainInfo(int childId)
117 throws MmdFormatException;
120 * ボーングループ名定義の通知を受け取る。
122 * <p>{@link #BONEGROUP_LIST}ループの構成要素。
124 * @param groupName ボーングループ名。末尾のLF(0x0a)は削除される。
125 * @throws MmdFormatException 不正フォーマットによる
128 void pmdBoneGroupInfo(String groupName) throws MmdFormatException;
133 * <p>{@link #GROUPEDBONE_LIST}ループの構成要素。
135 * @param boneId グループに所属するボーンのID
136 * @param groupId ボーンが所属するボーングループIDに1を足した数
137 * @throws MmdFormatException 不正フォーマットによる
140 void pmdGroupedBoneInfo(int boneId, int groupId)
141 throws MmdFormatException;