
→ a27417332:要有陰影不是先要打光嗎OAO 12/29 18:43
噢噢有! 附圖是只有SpotLight,加上環境光或點光源都差不多的結果。
有把Sinbad放在旁邊比對,沒有加depth shadow mapping的material的時候,他身上都有
正確的陰影和形狀,我的就只有灰一片~.~
※ 編輯: andy13579372 來自: 140.112.4.176 (12/29 19:42)
附上一些code:
1. SceneManager(參考自depth shadow mapping教學:http://ppt.cc/1Z1x )
mSceneMgr->setShadowTextureCasterMaterial("Ogre/DepthShadowmap/Caster/Float");
mSceneMgr->setShadowTexturePixelFormat ( Ogre::PF_FLOAT32_R );
mSceneMgr->setShadowCasterRenderBackFaces( false );
mSceneMgr->setShadowTextureSelfShadow ( true );
mSceneMgr->setShadowTechnique( Ogre::SHADOWTYPE_TEXTURE_ADDITIVE_INTEGRATED );
mSceneMgr->setShadowFarDistance( 100 );
2. Light
Light *light = mSceneMgr->createLight( "light0" );
light->setType ( Light::LT_DIRECTIONAL );
light->setDirection ( Vector3( 0, -1, 1 ) );
light->setCastShadows( true );
light->setPowerScale ( 2 );
3. Entity
//** Read a .ply file and convert it to mesh
String meshMocap = "meshMocap";
CxMesh *mMocap = new CxMesh( meshMocap );
char* plyFileName = getPlyFileName();
StringStream sstream;
sstream << mProjectDir << "\\" << plyFileName;
mMocap->cxReadPly( sstream.str() );
mMocap->cxComposeMesh();
// myModel: Add a model to the scene
SceneNode* mModelNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
Entity* mModel = mSceneMgr->createEntity("MyModel", meshMocap);
//adjusting material used by mModel
MaterialPtr materialPtr =
MaterialManager::getSingleton().getByName("Template/Red");
Pass* pass0 = materialPtr->getTechnique(0)->getPass(0);
pass0 ->createTextureUnitState();
pass0 ->setCullingMode(CullingMode::CULL_NONE); //both sided
mModel->setMaterialName( "Template/Red" );
mModel->setCastShadows( true );
mModelNode->attachObject( mModel );
mModelNode->setPosition( 2, 2, 3 );
mModelNode->yaw( Degree(180) );
4. Material: "Templata/Red" 繼承depth shadow mapping中的Basic----
material Template/Red : Ogre/DepthShadowmap/BasicTemplateMaterial
{
technique
{
pass
{
ambient 0.7 0.2 0.2 1
diffuse 0.8 0.2 0.2 1
emissive 0.2 0 0 1
}
}
}
麻煩了!!!
※ 編輯: andy13579372 來自: 140.112.4.176 (12/29 20:03)
※ 編輯: andy13579372 來自: 140.112.4.176 (12/29 20:04)
推 valkidy:看不到圖,不過聽你的描述有可能是material的錯誤。 12/29 22:41
→ valkidy:你可以試著在你的工作目錄下搜尋 ogre.log 看看裡面有沒有 12/29 22:42
→ valkidy:Exception 的訊息~ 12/29 22:42
謝謝你的回應!
不好意思,圖修正了!!(dropbox發現沒分享到)
(https://www.dropbox.com/s/grqxfs7nye4otpu/OgreProblem.png )
