2 * PMD shape 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モデルの各種形状(頂点、面)の通知用ハンドラ。
17 * <p>0から始まる頂点ID順に頂点は出現する。
19 * <p>0から始まる面ID順に面は出現する。
21 public interface PmdShapeHandler extends LoopHandler {
24 ParseStage VERTEX_LIST = new ParseStage();
26 ParseStage SURFACE_LIST = new ParseStage();
31 * <p>{@link #VERTEX_LIST}ループの構成要素
36 * @throws MmdFormatException 不正フォーマットによる
39 void pmdVertexPosition(float xPos, float yPos, float zPos)
40 throws MmdFormatException;
45 * <p>{@link #VERTEX_LIST}ループの構成要素
49 * @param xVec 法線ベクトルX成分
50 * @param yVec 法線ベクトルY成分
51 * @param zVec 法線ベクトルZ成分
52 * @throws MmdFormatException 不正フォーマットによる
55 void pmdVertexNormal(float xVec, float yVec, float zVec)
56 throws MmdFormatException;
59 * 頂点のUVマッピング情報の通知を受け取る。
62 * <p>{@link #VERTEX_LIST}ループの構成要素
64 * @param uVal テクスチャのU座標
65 * @param vVal テクスチャのV座標
66 * @throws MmdFormatException 不正フォーマットによる
69 void pmdVertexUV(float uVal, float vVal )
70 throws MmdFormatException;
73 * 頂点のボーン間ウェイトバランス情報の通知を受け取る。
75 * <p>{@link #VERTEX_LIST}ループの構成要素
77 * @param boneId1 ボーンその1識別ID
78 * @param boneId2 ボーンその2識別ID
79 * @param weightForB1 ボーンその1への影響度。0(min)~100(max)
80 * ボーンその2への影響度は100からの引き算で求める。
81 * @throws MmdFormatException 不正フォーマットによる
84 void pmdVertexWeight(int boneId1, int boneId2, int weightForB1)
85 throws MmdFormatException;
89 * 材質単位でのエッジ表現指定に優先される。
91 * <p>{@link #VERTEX_LIST}ループの構成要素
93 * @param hideEdge エッジ無効ならtrue
94 * @throws MmdFormatException 不正フォーマットによる
97 void pmdVertexEdge(boolean hideEdge)
98 throws MmdFormatException;
101 * 3つの頂点から構成される面情報の通知を受け取る。
103 * <p>{@link #SURFACE_LIST}ループの構成要素。
105 * <p>3頂点の指定順は、面カリングにおいて意味を持つ。
107 * @param vertexId1 頂点IDその1
108 * @param vertexId2 頂点IDその1
109 * @param vertexId3 頂点IDその1
110 * @throws MmdFormatException 不正フォーマットによる
113 void pmdSurfaceTriangle(int vertexId1, int vertexId2, int vertexId3)
114 throws MmdFormatException;