00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "System/stdafx.h"
00026 #include "Translator/Fog/TranslationFog.h"
00027 #include "Graphics/Scene/Scene.h"
00028 #include "Graphics/Fog/Fog.h"
00029
00030 namespace LampForMaya{
00031
00032
00033
00034 TranslationFog::TranslationFog(){
00035 }
00036
00037
00038 TranslationFog::~TranslationFog(){
00039 }
00040
00041
00042 bool TranslationFog::analyze(){
00043 MStatus result;
00044 int intResult;
00045 double doubleResult;
00046 MDoubleArray doubleArray;
00047
00048 result = MGlobal::executeCommand(MString(
00049 "modelEditor -q -fogging modelPanel4;"), intResult, false, false);
00050 MayaStatusCheck(result);
00051 fogEnabled_ = (intResult != 0);
00052
00053 result = MGlobal::executeCommand(MString(
00054 "modelEditor -q -fogColor modelPanel4;"), doubleArray, false, false);
00055 MayaStatusCheck(result);
00056 fogColor_.set((float)doubleArray[0], (float)doubleArray[1],
00057 (float)doubleArray[2], (float)doubleArray[3]);
00058 fogColor_.a = 0.f;
00059
00060 result = MGlobal::executeCommand(MString(
00061 "modelEditor -q -fogMode modelPanel4;"), fogMode_, false, false);
00062 MayaStatusCheck(result);
00063
00064 result = MGlobal::executeCommand(MString(
00065 "modelEditor -q -fogDensity modelPanel4;"), doubleResult, false, false);
00066 MayaStatusCheck(result);
00067 fogDensity_ = (float)doubleResult;
00068
00069 result = MGlobal::executeCommand(MString(
00070 "modelEditor -q -fogStart modelPanel4;"), doubleResult, false, false);
00071 MayaStatusCheck(result);
00072 fogNear_ = (float)doubleResult;
00073
00074 result = MGlobal::executeCommand(MString(
00075 "modelEditor -q -fogEnd modelPanel4;"), doubleResult, false, false);
00076 MayaStatusCheck(result);
00077 fogFar_ = (float)doubleResult;
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087 return true;
00088 }
00089
00090
00091 bool TranslationFog::convertToLamp(Scene* scene){
00092 Fog* fog = scene->getFog();
00093 fog->setEnabled(fogEnabled_);
00094 Color4c color;
00095 color.set(fogColor_);
00096 fog->setColor(color);
00097 if(fogMode_ == "linear"){
00098 fog->setMode(Fog::modeLinear);
00099 }else if(fogMode_ == "exponent"){
00100 fog->setMode(Fog::modeExponent);
00101 }else if(fogMode_ == "exponent2"){
00102 fog->setMode(Fog::modeExponent2);
00103 }else{
00104 MayaErrorOut(String("TranslationFog::convertToLamp() "
00105 "未知のフォグモードが設定されています ") + fogMode_.asChar());
00106 return false;
00107 }
00108 fog->setDensity(fogDensity_);
00109 fog->setNear(fogNear_);
00110 fog->setFar(fogFar_);
00111 return true;
00112 }
00113
00114 }
00115