praegune kellaaeg 17.06.2025 18:26:14
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
asjameez
Kreisi kasutaja

liitunud: 10.12.2006

|
17.06.2010 12:58:42
.3ds ja lib3ds |
|
|
Tegin ühe väikse klassi, mis OpenGL ja lib3ds kasutades renderdab .3ds mudeleid. 95% netis leiduvatest .3ds failidest renderdab kenasti ära, aga mõned mudelid renderdab nii, et meshid on "laiali puistatud".
Eriti problemaatiline on näiteks see mudel:
http://www.3dm3.com/modelsbank/model428.htm
Täpselt selline pilt siis avaneb:
http://www.upload.ee/image/640387/mess.png
Samas näiteks GLC Player ja Meshlab suudavad seda sama Land Cruiserit ilusti komplektsena näidata. Olen uurinud nende source koodi, aga pole avastanud midagi sellist, mis selle vea ära parandaks.
Minu joonistustamise funktsiooni kood:
Spoiler 
void Model3DS::Draw() {
assert(Model != NULL);
// Calculate the number of faces we have in total
GetTotalFaces();
Lib3dsMesh * Mesh;
Lib3dsVector * Normals = new Lib3dsVector[TotalFaces * 3];
// Loop through all the meshes
for(Mesh = Model->meshes; Mesh != NULL; Mesh = Mesh->next) {
glBegin(GL_TRIANGLES);
lib3ds_mesh_calculate_normals(Mesh, Normals);
// Loop through every face
for(GLuint CurrentFace = 0; CurrentFace < Mesh->faces; CurrentFace++) {
Lib3dsFace * Face = &Mesh->faceL[CurrentFace];
for(GLuint i = 0;i < 3; i++) {
Lib3dsMaterial *Material = 0;
Material = lib3ds_file_material_by_name(Model, Mesh->faceL[CurrentFace].material);
GLfloat Black[4] = { 0.0, 0.0, 0.0, 1.0 };
GLfloat White[4] = { 1.0, 1.0, 1.0, 1.0 };
if(Material) {
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, Black);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Material->diffuse);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, Material->diffuse);
glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, Black);
GLuint s = pow(2, 10.0 * Material->shininess);
if(s > 128.0) {
s = 128.0;
}
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, s);
} else {
GLfloat Diffuse[4] = { 0.7, 0.7, 0.7, 1.0 };
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, Black);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Black);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, Black);
glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, Black);
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0);
}
glNormal3fv(Normals[CurrentFace*3+i]);
glVertex3fv(Mesh->pointL[Face->points[i]].pos);
}
}
glEnd();
}
// We no longer need lib3ds
lib3ds_file_free(Model);
Model = NULL;
} |
Mingi parameeter puudu, mis tükid kokku paneb või milles võib viga olla? Ise rohkem progeja kui modelleerija
|
|
Kommentaarid: 63 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
61 |
|
tagasi üles |
|
 |
Braien
HV Guru

liitunud: 02.02.2009
|
17.06.2010 13:02:39
|
|
|
Proovi sellise programmiga nagu Zmodeler importida, kas siis ka eraldi asjad?
_________________ Has anyone really been far even as decided to use even go want to do look more like? |
|
Kommentaarid: 102 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
90 |
|
tagasi üles |
|
 |
asjameez
Kreisi kasutaja

liitunud: 10.12.2006

|
17.06.2010 13:28:20
|
|
|
braien334 kirjutas: |
Proovi sellise programmiga nagu Zmodeler importida, kas siis ka eraldi asjad? |
See programm ei avane kahjuks üheski arvutis.
|
|
Kommentaarid: 63 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
61 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|