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 public static final ParseStage BONE_LIST = new ParseStage();
24 public static final ParseStage IK_LIST = new ParseStage();
26 /** IKチェーンリスト抽出ループ。 */
27 public static final ParseStage IKCHAIN_LIST = new ParseStage();
30 public static final ParseStage BONEGROUP_LIST = new ParseStage();
32 /** ボーングループ内訳抽出ループ。 */
33 public static final ParseStage GROUPEDBONE_LIST = new ParseStage();
38 * <p>{@link #BONE_LIST}ループの構成要素。
40 * @param boneName ボーン名
41 * @param boneKind ボーン種別。
55 * @throws MmdFormatException 不正フォーマットによる
58 public abstract 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 public abstract void pmdBoneLink(int parentId, int tailId, int ikId)
76 throws MmdFormatException;
81 * <p>{@link #BONE_LIST}ループの構成要素。
86 * @throws MmdFormatException 不正フォーマットによる
89 public abstract 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 public abstract void pmdIKInfo(
105 int boneId, int targetId,
106 int depth, float weight)
107 throws MmdFormatException;
112 * <p>{@link #IK_LIST}ループの下位{@link #IKCHAIN_LIST}ループの構成要素。
114 * @param childId IK影響下ボーンID
115 * @throws MmdFormatException 不正フォーマットによる
118 public abstract void pmdIKChainInfo(int childId)
119 throws MmdFormatException;
122 * ボーングループ名定義の通知を受け取る。
124 * <p>{@link #BONEGROUP_LIST}ループの構成要素。
126 * @param groupName ボーングループ名。末尾のLF(0x0a)は削除される。
127 * @throws MmdFormatException 不正フォーマットによる
130 public abstract void pmdBoneGroupInfo(String groupName)
131 throws MmdFormatException;
136 * <p>{@link #GROUPEDBONE_LIST}ループの構成要素。
138 * @param boneId グループに所属するボーンのID
139 * @param groupId ボーンが所属するボーングループIDに1を足した数
140 * @throws MmdFormatException 不正フォーマットによる
143 public abstract void pmdGroupedBoneInfo(int boneId, int groupId)
144 throws MmdFormatException;