2013-05-07 7 views
1

저는 Assimp를 사용하여 3D 모델을 프로그램에로드합니다. 지금까지는 모든 것이 감각적으로 보이지 않는 라이트 웨이브 오브젝트를 보았습니다. 물론 Lightwave에서 멋지게 표현하지만, Assimp에는 텍스처 좌표가없고 UV 좌표도없고 텍스처가로드되기 시작합니다. 그러나 이것은 도움이되지 않습니다. 그들은 단지 메모리에 앉아서 사용하지 않습니다. 왜냐하면 당신이 짐작했기 때문에 텍스처 좌표가 없기 때문입니다.Assimp 모델에는 텍스처가 있지만 텍스처 좌표는 없습니다

지금까지 도움이되는 Assimp 페이지를 찾지 못했습니다. 다른 모델은 잘로드되고 제대로 텍스처 매핑됩니다. 이것은 Assimp에 문제가 있습니까?

답변

4

모든 Lightwave 모델에서 발생합니까 아니면이 모델에서만 발생합니까? 프로그램이 다른 모델을 올바르게 렌더링합니까?

또한 assimp를 사용하여 Lightwave 데이터 파일이 아닌 OBJ 파일을 읽고 OpenGL에서 렌더링하는 것과 동일한 문제가있었습니다. 내 렌더러는 assimp 사이트의 예제에서 완전히 복사되었습니다. 렌더러에 대한 조사를 한 결과 UV를 사용할 코드가 없다는 것을 알았습니다! 그래서, 오른쪽 난

int index = face->mIndices[i]; 

정점을 그리는 여기서 전에

if(mesh->mTextureCoords[0] != NULL) { 
    glTexCoord2fv(&mesh->mTextureCoords[0][index].x); 
} 

을 첨가하고 난 for 루프의 루프 제어 변수이다.

문제 : assimp 웹 사이트에서 발견 된 렌더링 코드는 UV 좌표와 관련된 유용한 기능을 수행하지 않습니다. 너 자신에 그걸 추가해야 해.

희망이 있습니다.

+0

모델 톤이 없지만 적어도 하나는 일어나고 있습니다. – GraphicsMuncher

0

은 단지 첫 번째

mesh-> mTextureCoords를 확인해야 ... 좌표 ... 하나 하나가 서로 다른 질감으로 채워지거나 할 수는 없습니다 슬롯 8 질감이 있습니다 [0]

인덱스의 mTextureCoords 통해 "* CONST 구조체 aiVector3D"이런 배열로 루프를 캐스팅 [0] [t]

통지 우리 루프 t 및 2D 배열

for (t = 0; t < mesh->mNumVertices; ++t) { 
     const struct aiVector3D* textureVec = &mesh->mTextureCoords[0][t]; 
     printf("tex (%f,%f,%f)", textureVec->x, textureVec->y, textureVec->z); 
    } 

희망이 도움이됩니다! 나는 여기에 너무 붙어 있었다! 지금

...이로드되지 않았습니다 생각 : 텍스 (0.159871,0.410298,0.000000) TEX (0.034839,0.369741,0.000000) TEX (0.147435,0.506447,0.000000) TEX (0.018893,0.493014,0.000000) TEX (0.159871,0.602596,0.000000) tex (0.034839,0.616288,0.000000) tex (0.196806,0.695823,0.000000) tex (0.082196,0.735817,0.000000) tex (0.257118,0.783297,0.000000) tex (0.159520,0.847968,0.000000) tex (0.314932, 0.833907,0.000000) tex (0.318555,0.981848,0.000000) tex (0.557998,0.677465,0.000000) tex (0.442610,0.703479,0.000000)

+0

실제로 그것은 meth-> mNumUVComponents 일 수 있습니다 ... 죄송합니다! – Orbitus007