2 * PMD bone information handler
4 * License : The MIT License
5 * Copyright(c) 2010 MikuToga Partners
8 package jp.sourceforge.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();
37 * {@link #BONE_LIST}ループの構成要素。
38 * @param boneName ボーン名
39 * @param boneKind ボーン種別。
53 * @throws MmdFormatException 不正フォーマットによる
56 void pmdBoneInfo(String boneName, byte boneKind)
57 throws MmdFormatException;
61 * {@link #BONE_LIST}ループの構成要素。
62 * @param parentId 親(前)ボーンID。無い場合は0xffff。
63 * @param tailId 子(次)ボーンID。末端の場合は0。
66 * @param ikId 影響IKボーンID。未指定の場合は0。
67 * ※回転連動では影響度(0-100)、負や100以上もOK!
68 * @throws MmdFormatException 不正フォーマットによる
71 void pmdBoneLink(int parentId, int tailId, int ikId)
72 throws MmdFormatException;
76 * {@link #BONE_LIST}ループの構成要素。
80 * @throws MmdFormatException 不正フォーマットによる
83 void pmdBonePosition(float xPos, float yPos, float zPos)
84 throws MmdFormatException;
88 * {@link #IK_LIST}ループの構成要素。
89 * @param boneId IKボーンID
90 * @param targetId IKボーンが最初に接続するIK接続先ボーンID
91 * @param depth 再帰演算の深さ
92 * @param weight 制限角度強度
93 * @throws MmdFormatException 不正フォーマットによる
96 void pmdIKInfo(int boneId, int targetId, int depth, float weight)
97 throws MmdFormatException;
101 * {@link #IK_LIST}ループの下位{@link #IKCHAIN_LIST}ループの構成要素。
102 * @param childId IK影響下ボーンID
103 * @throws MmdFormatException 不正フォーマットによる
106 void pmdIKChainInfo(int childId)
107 throws MmdFormatException;
110 * ボーングループ名定義の通知を受け取る。
111 * {@link #BONEGROUP_LIST}ループの構成要素。
112 * @param groupName ボーングループ名。末尾のLF(0x0a)は削除される。
113 * @throws MmdFormatException 不正フォーマットによる
116 void pmdBoneGroupInfo(String groupName) throws MmdFormatException;
120 * {@link #GROUPEDBONE_LIST}ループの構成要素。
121 * @param boneId グループに所属するボーンのID
122 * @param groupId ボーンが所属するボーングループIDに1を足した数
123 * @throws MmdFormatException 不正フォーマットによる
126 void pmdGroupedBoneInfo(int boneId, int groupId)
127 throws MmdFormatException;