4 * License : The MIT License
5 * Copyright(c) 2011 MikuToga Partners
8 package jp.sfjp.mikutoga.vmd.model;
10 import java.text.MessageFormat;
11 import jp.sfjp.mikutoga.vmd.AbstractNumbered;
16 * <p>カメラからの距離情報(幾何距離の100倍?)による影演出対象の範囲指定は、
17 * MMDのスライダUI上では0から9999までが指定可能。
19 * <p>MMDのスライダUI値SからVMDファイル上の生パラメターへの変換式は、
20 * 「 0.1 - (S / 1.0E+5) 」
23 public strictfp class ShadowMotion extends AbstractNumbered {
28 public static final ShadowMode DEF_MODE = ShadowMode.MODE_1;
33 * <p>MMDのスライダUI値「8875」にほぼ相当。
35 public static final double DEF_SCOPE = 0.01125;
36 private static final int DEF_UIVAL = 8875;
38 private static final double OFFSET = 0.1;
39 private static final double SCALE = 1.0E+5;
41 private static final String MSG_TXT =
42 "#{0} shadow mode : {1} rawparam={2}";
45 assert (float)(OFFSET - (DEF_UIVAL / SCALE)) == (float)DEF_SCOPE;
49 private ShadowMode shadowMode = DEF_MODE;
50 private double rawScopeParam = DEF_SCOPE;
56 public ShadowMotion(){
63 * VMDファイル上の生パラメータ数値による演出対象範囲指定を、
64 * MMDのUI上の距離情報(カメラからの幾何距離×100倍?)に変換する。
67 * @return MMDのスライダUI上の距離情報
69 public static double rawParamToScope(double param){
71 result = OFFSET - param;
77 * MMDのUI上の距離情報(カメラからの幾何距離×100倍?)を、
78 * VMDファイル上の生パラメータ数値に変換する。
80 * @param scope MMDのスライダUI上の距離情報
83 public static double scopeToRawParam(double scope){
85 result = scope / SCALE;
86 result = OFFSET - result;
92 * 影演出の範囲指定の生パラメータを設定する。
94 * @param rawScopeParam 生パラメータ
96 public void setRawScopeParam(double rawScopeParam) {
97 this.rawScopeParam = rawScopeParam;
102 * 影演出の範囲指定の生パラメータを返す。
106 public double getRawScopeParam() {
107 return this.rawScopeParam;
111 * 影演出の範囲指定のスライダUI値を設定する。
113 * @param scope スライダUI値
115 public void setScope(double scope){
116 float rawVal = (float) scopeToRawParam(scope);
117 setRawScopeParam(rawVal);
122 * 影演出の範囲指定のスライダUI値を返す。
126 public double getScope(){
127 double rawVal = getRawScopeParam();
128 double scope = rawParamToScope(rawVal);
135 * @param shadowMode 影描画モード
136 * @throws NullPointerException 引数がnull
138 public void setShadowMode(ShadowMode shadowMode)
139 throws NullPointerException{
140 if(shadowMode == null) throw new NullPointerException();
141 this.shadowMode = shadowMode;
150 public ShadowMode getShadowMode(){
151 return this.shadowMode;
157 * @return {@inheritDoc}
160 public String toString(){
162 msg = MessageFormat.format(MSG_TXT,
165 Double.toString(this.rawScopeParam) );