lib3ds + opengl Перевод 3д модели в 2д изображение
Всем привет, есть такая проблема, нужно загруженную часть 3Д модели отрисовать в JPG файле. В принципи частично у меня это получилось, однако отрисовывается только часть модели (скорее всего она не под нужным углом повёрнута, как развернуть её я хз). Или я гдето как обычно натупил. Подскажите где ошибка, или как это можно иначе реализовать?
Вот как я отрисовываю модель в в OPENGL окне
Gl::glEnable(Gl::GL_DEPTH_TEST);
Gl::glEnable(Gl::GL_TEXTURE_2D);
Gl::glBindTexture(Gl::GL_TEXTURE_2D,mGlTextureObject);
Gl::glDepthFunc(Gl::GL_LEQUAL);
Gl::glClear(Gl::GL_COLOR_BUFFER_BIT|Gl::GL_DEPTH_BITS);
Gl::glClearColor(0, 0, 0, -1);
Gl::glLoadIdentity();
lightup();
Gl::glScalef(0.5,0.5,0.5);
Gl::glTranslatef(0.0,-1200.0,-1500.0);
Gl::glRotatef(280, 1, 0, 0);
Gl::glRotatef(rotat, 0, 0, 1);
Gl::glColor3f(50.0,100.0,0.0);
long meshcount;
for(meshcount=0;meshcount<model->meshes->Count;meshcount++)
{
for(int fd=0;fd<mesh[meshcount]->faces->Count;fd++)
face.Add(mesh[meshcount]->faces[fd]);
if(material.Count>0)
{
for(long i=0;i<mesh[meshcount]->nfaces;i++)
{
Gl::glMaterialfv(Gl::GL_FRONT,Gl::GL_DIFFUSE,material[face[i]->material]->diffuse);
Gl::glMaterialfv(Gl::GL_FRONT,Gl::GL_AMBIENT,material[face[i]->material]->ambient);
Gl::glMaterialfv(Gl::GL_FRONT,Gl::GL_SPECULAR,material[face[i]->material]->specular);
}
}
}
face.Clear();
for(meshcount=0;meshcount<model->meshes->Count;meshcount++)
{
for(int fd=0;fd<mesh[meshcount]->faces->Count;fd++)
face.Add(mesh[meshcount]->faces[fd]);
for(long i=0;i<mesh[meshcount]->nfaces;i++)
{
Gl::glBegin(Gl::GL_TRIANGLES);
Gl::glTexCoord2f(mesh[meshcount]->texcos[face[i]->index[0]]->s, mesh[meshcount]->texcos[face[i]->index[0]]->t);
Gl::glVertex3fv(mesh[meshcount]->vertices[face[i]->index[0]]->ToArray());
Gl::glTexCoord2f(mesh[meshcount]->texcos[face[i]->index[1]]->s, mesh[meshcount]->texcos[face[i]->index[1]]->t);
Gl::glVertex3fv(mesh[meshcount]->vertices[face[i]->index[1]]->ToArray());
Gl::glTexCoord2f(mesh[meshcount]->texcos[face[i]->index[2]]->s, mesh[meshcount]->texcos[face[i]->index[2]]->t);
Gl::glVertex3fv(mesh[meshcount]->vertices[face[i]->index[2]]->ToArray());
Gl::glEnd();
}
face.Clear();
}
Вот так перевожу в JPG файл
Bitmap ^bmp;
bmp=gcnew Bitmap(600,600);
for(int k=0;k<model->meshes[3]->vertices->Count;k++)
{
if((int)model->meshes[3]->vertices[k]->x<0&&(int)model->meshes[3]->vertices[k]->y>=0)
{
bmp->SetPixel(abs((int)model->meshes[3]->vertices[k]->x+50),(int)model->meshes[3]->vertices[k]->y+50,Color::Green);
continue;
}
if((int)model->meshes[3]->vertices[k]->y<0&&(int)model->meshes[3]->vertices[k]->x>=0)
{
bmp->SetPixel((int)model->meshes[3]->vertices[k]->x+50,abs((int)model->meshes[3]->vertices[k]->y+50),Color::Green);
continue;
}
if((int)model->meshes[3]->vertices[k]->x<0&&(int)model->meshes[3]->vertices[k]->y<0)
{
bmp->SetPixel(abs((int)model->meshes[3]->vertices[k]->x+50),abs((int)model->meshes[3]->vertices[k]->y+50),Color::Green);
continue;
}
bmp->SetPixel((int)model->meshes[3]->vertices[k]->x+50,(int)model->meshes[3]->vertices[k]->y+50,Color::Green);
}
bmp->Save(System::IO::Path::GetDirectoryName(System::Reflection::Assembly::GetEntryAssembly()->Location)+"\\colors\\"
+"tsht.jpg",ImageFormat::Jpeg);