2014-12-26 2 views
0

Ogre 프로그램에 엔티티를로드했습니다. 그런 다음 아래처럼 vertexDeclaration에 요소를 나열하십시오.VertexDeclaration이 포함되어 있지 않습니다. OGRE :: VES_DEFFUSE

Ogre::VertexDeclaration::VertexElementList lst = vertex_data->vertexDeclaration->getElements(); 

목록에서 VES_POSITION 및 VES_NORMAL 만 보았습니다. 따라서 아래 코드를 실행할 때

const Ogre::VertexElement* posElem = vertex_data->vertexDeclaration->findElementBySemantic(Ogre::VES_DIFFUSE); 

posElem은 아무 것도 없거나 null입니다. 존재하지 않는 요소에 액세스하는 방법은 무엇입니까? 그것은 가능합니까? 그렇다면 아래에 나와있는 자료를 제 실체에 추가했습니다. 이 시간 모델은 재료 및 확산 속성으로 성공적으로로드되었습니다. 그러나 문제는 계속됩니다. 즉, VertexDeclaration에는 VES_DEFFUSE 의미 론적 요소 (VES_POSITION 및 VES_NORMAL 만)가 포함되지 않습니다. 또한 다른 모델을로드했지만 VES_DEFFUSE 의미 론적 요소가있는 모델은 없습니다.

material base_mesh 
{ 

technique 
{ 
pass 
{ 
lighting on 
ambient 0.3 0.3 0.3 1 
diffuse 0.1 0.7 0.2 1 
emissive 0 0 0 1 


} 
} 
} 
+0

메쉬에 특정 속성이없는 경우 - 런타임에 메쉬가 표시되는 이유는 무엇입니까? 귀하의 메쉬 데이터 및 특정 문제는 무엇입니까? – keltar

답변

0

OgreXmlConverter를 사용하여 메쉬 파일을 xml 파일로 변환합니다. 그런 다음 XML 파일을 편집하고 아래 (예)처럼 각 정점 태그에 colour_diffuse 태그를 추가 :

<vertex> 
<position y="2.779611" x="0.272802" z="0.245147"/> 
<normal y="-0.291635" x="0.955870" z="0.034669"/> 
<colour_diffuse value="1 1 1 1" /></vertex> 
<vertex> 

을 그리고 우리가 VES_DEFFUSE 의미 론적 요소가 VertexDeclaration에 file.Now 메쉬 다시 변환합니다.

관련 문제