X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fmodel3d-view%2Fmodel3d-view-impl.cpp;h=eac2d8934bfe48e0b60a5263a9f31a3ff0089314;hp=f3e7fb2abad1d81cf8a9fd4482502bb0b506403d;hb=b00bd1f5f0925dcdf424567116cc208efc48d769;hpb=41278d3fb755de3cb89edf6d80603b18562b4e01 diff --git a/dali-toolkit/internal/controls/model3d-view/model3d-view-impl.cpp b/dali-toolkit/internal/controls/model3d-view/model3d-view-impl.cpp index f3e7fb2..eac2d89 100644 --- a/dali-toolkit/internal/controls/model3d-view/model3d-view-impl.cpp +++ b/dali-toolkit/internal/controls/model3d-view/model3d-view-impl.cpp @@ -423,7 +423,7 @@ void Model3dView::OnStageConnection( int depth ) if( mObjLoader.IsSceneLoaded() ) { - mMesh = mObjLoader.CreateGeometry(mIlluminationType); + mMesh = mObjLoader.CreateGeometry( GetShaderProperties( mIlluminationType ) ); CreateMaterial(); LoadTextures(); @@ -462,9 +462,7 @@ void Model3dView::LoadGeometry() if (FileLoader::ReadFile(mObjUrl,fileSize,fileContent,FileLoader::TEXT)) { mObjLoader.ClearArrays(); - - std::string materialUrl; - mObjLoader.Load(fileContent.Begin(), fileSize, materialUrl); + mObjLoader.LoadObject(fileContent.Begin(), fileSize); //Get size information from the obj loaded mSceneCenter = mObjLoader.GetCenter(); @@ -520,7 +518,7 @@ void Model3dView::CreateGeometry() { if( mObjLoader.IsSceneLoaded() ) { - mMesh = mObjLoader.CreateGeometry(mIlluminationType); + mMesh = mObjLoader.CreateGeometry( GetShaderProperties( mIlluminationType ) ); if( mRenderer ) { @@ -556,11 +554,12 @@ void Model3dView::CreateMaterial() { if( mObjLoader.IsMaterialLoaded() && (mTexture0Url != "") && mObjLoader.IsTexturePresent() ) { - if( (mTexture2Url != "") && (mTexture1Url != "") && (mIlluminationType == Toolkit::Model3dView::DIFFUSE_WITH_NORMAL_MAP) && mObjLoader.IsNormalMapPresent() ) + if( (mTexture2Url != "") && (mTexture1Url != "") && (mIlluminationType == Toolkit::Model3dView::DIFFUSE_WITH_NORMAL_MAP) ) { mShader = Shader::New( NRMMAP_VERTEX_SHADER, NRMMAP_FRAGMENT_SHADER ); } - else if( mIlluminationType == Toolkit::Model3dView::DIFFUSE_WITH_TEXTURE ) + else if( mIlluminationType == Toolkit::Model3dView::DIFFUSE_WITH_TEXTURE || + mIlluminationType == Toolkit::Model3dView::DIFFUSE_WITH_NORMAL_MAP ) { mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER ); } @@ -591,7 +590,7 @@ void Model3dView::LoadTextures() if( !mTextureSet ) return ; - if( mTexture0Url != "" ) + if( (mTexture0Url != "") && (mIlluminationType != Toolkit::Model3dView::DIFFUSE) ) { std::string imgUrl = mImagesUrl + mTexture0Url; @@ -628,6 +627,24 @@ void Model3dView::LoadTextures() } } +int Model3dView::GetShaderProperties( Toolkit::Model3dView::IlluminationType illuminationType ) +{ + int objectProperties = 0; + + if( illuminationType == Toolkit::Model3dView::DIFFUSE_WITH_TEXTURE || + illuminationType == Toolkit::Model3dView::DIFFUSE_WITH_NORMAL_MAP ) + { + objectProperties |= ObjLoader::TEXTURE_COORDINATES; + } + + if( illuminationType == Toolkit::Model3dView::DIFFUSE_WITH_NORMAL_MAP ) + { + objectProperties |= ObjLoader::TANGENTS | ObjLoader::BINOMIALS; + } + + return objectProperties; +} + } // namespace Internal } // namespace Toolkit } // namespace Dali