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/Texture/TranslationTexture.h"
00027 #include "Graphics/Scene/Scene.h"
00028 #include "Graphics/Texture/TextureManager.h"
00029 #include "Graphics/Picture/PictureManager.h"
00030 #include "Core/InputOutput/FilePath.h"
00031
00032 namespace LampForMaya{
00033
00034
00035
00036 TranslationTexture::TranslationTexture(
00037 const MObject& initializeObject, const String& initializeName) :
00038 object_(initializeObject), name_(initializeName){
00039 }
00040
00041
00042 bool TranslationTexture::analyze(){
00043
00044 picturePath_ = MayaAttributeUtility::getString(object_, "fileTextureName");
00045 if(picturePath_.equals("")){
00046 MayaErrorOut(String("TranslationTexture::analyze() "
00047 "ピクチャファイル名が設定されていません。 ") + name_);
00048 return false;
00049 }
00050
00051 FilePath filePath(picturePath_);
00052 pictureName_ = filePath.getName();
00053
00054 if(filePath.getExtension() != "tga"){
00055 MayaErrorOut(String("TranslationTexture::analyze() "
00056 "Targa(.tga)以外のピクチャフォーマットは未対応です ") +
00057 name_ + " " + picturePath_);
00058 return false;
00059 }
00060
00061 mirrorU_ = MayaAttributeUtility::getBool(object_, "mirrorU");
00062 mirrorV_ = MayaAttributeUtility::getBool(object_, "mirrorV");
00063
00064 wrapU_ = MayaAttributeUtility::getBool(object_, "wrapU");
00065 wrapV_ = MayaAttributeUtility::getBool(object_, "wrapV");
00066
00067 repeatUV_.u = MayaAttributeUtility::getFloat(object_, "repeatU");
00068 repeatUV_.v = MayaAttributeUtility::getFloat(object_, "repeatV");
00069
00070 offsetUV_.u = MayaAttributeUtility::getFloat(object_, "offsetU");
00071 offsetUV_.v = MayaAttributeUtility::getFloat(object_, "offsetV");
00072 return true;
00073 }
00074
00075
00076 TranslationTexture::~TranslationTexture(){
00077 }
00078
00079
00080 bool TranslationTexture::convertToLamp(Scene* scene){
00081 TextureManager* textureManager = scene->getTextureManager();
00082 SurfaceTexture* texture = textureManager->createSurfaceTexture(name_);
00083 if(mirrorU_){
00084 texture->setAddressModeU(Texture::addressModeMirror);
00085 }else if(wrapU_){
00086 texture->setAddressModeU(Texture::addressModeWrap);
00087 }else{
00088 texture->setAddressModeU(Texture::addressModeClamp);
00089 }
00090 if(mirrorV_){
00091 texture->setAddressModeV(Texture::addressModeMirror);
00092 }else if(wrapV_){
00093 texture->setAddressModeV(Texture::addressModeWrap);
00094 }else{
00095 texture->setAddressModeV(Texture::addressModeClamp);
00096 }
00097 texture->setRepeatUV(repeatUV_);
00098 texture->setOffsetUV(offsetUV_);
00099
00100 PictureManager* pictureManager = scene->getPictureManager();
00101 Picture* picture = pictureManager->search(pictureName_);
00102 if(picture == NULL){
00103 MayaErrorOut(String("TranslationTexture::convertToLamp() "
00104 "ピクチャが見つかりません ") + pictureName_);
00105 return false;
00106 }
00107 texture->addPicture(picture);
00108 return true;
00109 }
00110
00111 }
00112