OSDN Git Service

f0d51f78ec57c65bf1c7027723a9a31930eeeb2b
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / parser / pmd / PmdMaterialHandler.java
1 /*\r
2  * PMD material information handler\r
3  *\r
4  * License : The MIT License\r
5  * Copyright(c) 2010 MikuToga Partners\r
6  */\r
7 \r
8 package jp.sourceforge.mikutoga.parser.pmd;\r
9 \r
10 import jp.sourceforge.mikutoga.parser.LoopHandler;\r
11 import jp.sourceforge.mikutoga.parser.MmdFormatException;\r
12 import jp.sourceforge.mikutoga.parser.ParseStage;\r
13 \r
14 /**\r
15  * PMDモデルの各種材質情報の通知用ハンドラ。\r
16  * 色空間はsRGB?\r
17  */\r
18 public interface PmdMaterialHandler extends LoopHandler {\r
19 \r
20     /**\r
21      * モデル材質パースステージ。\r
22      */\r
23     class PmdMaterialStage extends ParseStage{\r
24         /** コンストラクタ。 */\r
25         PmdMaterialStage(){ super(); return; }\r
26     }\r
27 \r
28     /** 材質抽出ループ。 */\r
29     PmdMaterialStage MATERIAL_LIST = new PmdMaterialStage();\r
30 \r
31     /**\r
32      * 材質の拡散光成分の通知を受け取る。\r
33      * {@link #MATERIAL_LIST}ループの構成要素。\r
34      * @param red 0.0~1.0の範囲の赤成分\r
35      * @param green 0.0~1.0の範囲の緑成分\r
36      * @param blue 0.0~1.0の範囲の青成分\r
37      * @param alpha 0.0(透明)~1.0(不透明)のアルファ値。\r
38      * @throws MmdFormatException 不正フォーマットによる\r
39      * パース処理の中断をパーサに指示\r
40      */\r
41     void pmdMaterialDiffuse(float red, float green, float blue,\r
42                                float alpha )\r
43             throws MmdFormatException;\r
44 \r
45     /**\r
46      * 材質の反射光成分の通知を受け取る。\r
47      * {@link #MATERIAL_LIST}ループの構成要素。\r
48      * @param red 0.0~1.0の範囲の赤成分\r
49      * @param green 0.0~1.0の範囲の緑成分\r
50      * @param blue 0.0~1.0の範囲の青成分\r
51      * @param shininess 光沢強度(1~15ぐらい)\r
52      * @throws MmdFormatException 不正フォーマットによる\r
53      * パース処理の中断をパーサに指示\r
54      */\r
55     void pmdMaterialSpecular(float red, float green, float blue,\r
56                                 float shininess)\r
57             throws MmdFormatException;\r
58 \r
59     /**\r
60      * 材質の環境色成分の通知を受け取る。\r
61      * {@link #MATERIAL_LIST}ループの構成要素。\r
62      * @param red 0.0~1.0の範囲の赤成分\r
63      * @param green 0.0~1.0の範囲の緑成分\r
64      * @param blue 0.0~1.0の範囲の青成分\r
65      * @throws MmdFormatException 不正フォーマットによる\r
66      * パース処理の中断をパーサに指示\r
67      */\r
68     void pmdMaterialAmbient(float red, float green, float blue)\r
69             throws MmdFormatException;\r
70 \r
71     /**\r
72      * シェーディング情報の通知を受け取る。\r
73      * {@link #MATERIAL_LIST}ループの構成要素。\r
74      * @param toonIdx トゥーンファイル番号。\r
75      * 0ならtoon01.bmp。9ならtoon10.bmp。0xffならtoon0.bmp。\r
76      * @param textureFile テクスチャファイル名。\r
77      * 無ければ空文字。\r
78      * @param sphereFile スフィアマップファイル名。\r
79      * 無ければ空文字。\r
80      * @throws MmdFormatException 不正フォーマットによる\r
81      * パース処理の中断をパーサに指示\r
82      */\r
83     void pmdMaterialShading(int toonIdx,\r
84                                String textureFile, String sphereFile )\r
85             throws MmdFormatException;\r
86 \r
87     /**\r
88      * 材質情報の通知を受け取る。\r
89      * {@link #MATERIAL_LIST}ループの構成要素。\r
90      * @param hasEdge エッジを表示するならtrue\r
91      * @param vertexNum 面頂点数。\r
92      * 3の倍数のはず。\r
93      * 3で割ると積算で表される面IDの範囲を表す。\r
94      * @throws MmdFormatException 不正フォーマットによる\r
95      * パース処理の中断をパーサに指示\r
96      */\r
97     void pmdMaterialInfo(boolean hasEdge, int vertexNum)\r
98             throws MmdFormatException;\r
99 \r
100 }\r