4 * License : The MIT License
5 * Copyright(c) 2011 MikuToga Partners
8 package jp.sourceforge.mikutoga.vmd.model;
10 import jp.sourceforge.mikutoga.vmd.AbstractNumbered;
14 * <p>カメラからの距離情報(幾何距離の100倍?)による影演出対象の範囲指定は、
15 * MMDのスライダUI上では0から9999までが指定可能。
16 * <p>MMDのスライダUI値SからVMDファイル上の生パラメターへの変換式は、
17 * 「 0.1 - (S / 1.0E+5) 」
20 public class ShadowMotion extends AbstractNumbered {
25 public static final ShadowMode DEF_MODE = ShadowMode.MODE_1;
29 * <p>MMDのスライダUI値「8875」にほぼ相当。
31 public static final float DEF_SCOPE = 0.01125f;
33 private static final double OFFSET = 0.1;
34 private static final double SCALE = 1.0E+5;
37 private ShadowMode shadowMode = DEF_MODE;
38 private float rawScopeParam = DEF_SCOPE;
44 public ShadowMotion(){
51 * VMDファイル上の生パラメータ数値による演出対象範囲指定を、
52 * MMDのUI上の距離情報(カメラからの幾何距離×100倍?)に変換する。
54 * @return MMDのスライダUI上の距離情報
56 public static double rawParamToScope(float param){
58 result = OFFSET - param;
64 * MMDのUI上の距離情報(カメラからの幾何距離×100倍?)を、
65 * VMDファイル上の生パラメータ数値に変換する。
66 * @param scope MMDのスライダUI上の距離情報
69 public static float scopeToRawParam(double scope){
71 result = scope / SCALE;
72 result = OFFSET - result;
73 return (float) result;
78 * 影演出の範囲指定の生パラメータを設定する。
79 * @param rawScopeParam 生パラメータ
81 public void setRawScopeParam(float rawScopeParam) {
82 this.rawScopeParam = rawScopeParam;
90 public float getRawScopeParam() {
91 return this.rawScopeParam;
95 * 影演出の範囲指定のスライダUI値を設定する。
96 * @param scope スライダUI値
98 public void setScope(double scope){
99 float rawVal = scopeToRawParam(scope);
100 setRawScopeParam(rawVal);
105 * 影演出の範囲指定のスライダUI値を返す。
108 public double getScope(){
109 float rawVal = getRawScopeParam();
110 double scope = rawParamToScope(rawVal);
116 * @param shadowMode 影描画モード
117 * @throws NullPointerException 引数がnull
119 public void setShadowMode(ShadowMode shadowMode)
120 throws NullPointerException{
121 if(shadowMode == null) throw new NullPointerException();
122 this.shadowMode = shadowMode;
130 public ShadowMode getShadowMode(){
131 return this.shadowMode;
136 * @return {@inheritDoc}
139 public String toString(){
140 StringBuilder result = new StringBuilder();
142 result.append("#").append(getFrameNumber());
143 result.append(" shadow mode : ").append(this.shadowMode);
144 result.append(" rawparam=").append(this.rawScopeParam);
146 return result.toString();