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