OSDN Git Service

Pmd2XMLとの共通化
[mikutoga/Vmd2XML.git] / src / main / java / jp / sfjp / mikutoga / vmd / model / LuminousMotion.java
1 /*
2  * luminous motion
3  *
4  * License : The MIT License
5  * Copyright(c) 2011 MikuToga Partners
6  */
7
8 package jp.sfjp.mikutoga.vmd.model;
9
10 import java.text.MessageFormat;
11 import jp.sfjp.mikutoga.math.MkVec3D;
12 import jp.sfjp.mikutoga.vmd.AbstractNumbered;
13
14 /**
15  * 光源演出情報。
16  * <p>照明方向は、
17  * ワールド座標原点から伸びる方向ベクトルとして記述される。
18  * この方向ベクトルに向けて、無限遠の光源から照明が当たる。
19  * <p>MMDのスライダUI上では
20  * 方向ベクトル各軸成分の定義域は-1.0以上+1.0以下だが、
21  * さらに絶対値の大きな値を指定することも可能。
22  * <p>方向ベクトルの長さは演出上の意味を持たないが、
23  * キーフレーム間の照明方向の補間に影響を及ぼすかもしれない。
24  * <p>方向ベクトルが零ベクトル(0,0,0)の場合、MMDでは全ポリゴンに影が落ちる。
25  */
26 public class LuminousMotion extends AbstractNumbered {
27
28     /** デフォルトのX成分。 */
29     public static final double DEF_VECX = -0.5;
30     /** デフォルトのY成分。 */
31     public static final double DEF_VECY = -1.0;
32     /** デフォルトのZ成分。 */
33     public static final double DEF_VECZ = +0.5;
34
35     private static final String MSG_TXT =
36             "#{0} luminous color : {1} direction : {2}";
37
38
39     private final LuminousColor color = new LuminousColor();
40     private final MkVec3D direction = new MkVec3D();
41
42
43     /**
44      * コンストラクタ。
45      */
46     public LuminousMotion(){
47         super();
48         this.direction.setVector(DEF_VECX, DEF_VECY, DEF_VECZ);
49         return;
50     }
51
52
53     /**
54      * 光源の色情報を返す。
55      * @return 光源の色情報
56      */
57     public LuminousColor getColor(){
58         return this.color;
59     }
60
61     /**
62      * 光源からの照射方向情報を返す。
63      * @return 光源からの照射方向情報
64      */
65     public MkVec3D getDirection(){
66         return this.direction;
67     }
68
69     /**
70      * {@inheritDoc}
71      * @return {@inheritDoc}
72      */
73     @Override
74     public String toString(){
75         String msg;
76         msg = MessageFormat.format(MSG_TXT,
77                 getFrameNumber(), this.color, this.direction );
78         return msg;
79     }
80
81 }