[問題] OGRE 程式匯入的mesh沒有立體感(陰影)?
板友好
小弟第一次在這個板PO文 有疏漏之處麻煩指教!
剛開始摸OGRE,大概知道從建root到startRendering的流程但對背後觀念不熟。
最近用OGRE1.9做房間模型動態展示,房間模型為預先拍攝好的ply檔,沒有表面圖檔。
使用這個部落格(http://ppt.cc/E4zL )的教學把ply弄進程式。
但進去以後開啟視窗,模型卻沒有立體的效果,只有一片灰,只看得出邊緣。
不知道新的mesh要可以顯示凹凸的形狀還需要加甚麼步驟嗎?
另外因為已經摸索了一陣子,(還是解決不了只好尋求幫忙),有想是不是material的問題
,因此有把官方Depth Shadow Mapping的教學加進去。(教學:http://ppt.cc/1Z1x )
請問他為什麼會有那些片狀碎掉的陰影?(或是這不是正確的解決方式?)
(更正: 圖: https://www.dropbox.com/s/grqxfs7nye4otpu/OgreProblem.png

)
謝謝板友幫忙!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.4.176
→
12/29 18:43, , 1F
12/29 18:43, 1F
噢噢有! 附圖是只有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)
推
12/29 22:41, , 2F
12/29 22:41, 2F
→
12/29 22:42, , 3F
12/29 22:42, 3F
→
12/29 22:42, , 4F
12/29 22:42, 4F
謝謝你的回應!
不好意思,圖修正了!!(dropbox發現沒分享到)
(https://www.dropbox.com/s/grqxfs7nye4otpu/OgreProblem.png

)
Error和Exception大多是跟內建的DepthShadowmap.material有關的
雖然不太懂,不過應該跟我的沒影響(我猜)
不過還有點問題的是,不太懂自身的凹凸立體效果和material的哪部分有關係??
之前也猜是material看了好久的material script還是一頭霧水,
而且SDK的Sinbad.zip裡的material只有簡單的反色光、貼圖、
receive_shadow on (調整這個對我的沒有用) ,也沒有繼承任何material
因此還是非常疑惑。
有一個(蠢)問題: 所以空白的material(例如指定不存在的material而自動產生的那個),
是不會有立體效果的嗎?!!
感謝各位!!!!
※ 編輯: andy13579372 來自: 118.168.238.32 (12/30 01:19)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章