|
问题还是共享顶点,之前的帖子见:http://bbs.osgchina.org/forum.ph ... &extra=page%3D2
根据Array的提升,两个geode共享geometry,这样在显示的时候确定可以做到共享顶点,但是问题是将共享geometry的两个geode导出的时候,顶点还是两份。。这显然不符合要求。
然后我尝试看lib3ds,然后直接用lib3ds去写3ds文件,查看了osg的源代码,顺利的写出来了,导入3dsmax也是正确的。
但是再从3dsmax中导出的时候,模型就错了,查了下,发现模型的顶点有几个都变了(其它的没边,顶点数量也没变,就是有几个顶点坐标变成了0)。
还有一个问题是,在3dsmax里面显示的模型面闪得很厉害,这个也不知道是什么原因。。
请问有哪位前辈遇到过这样的问题吗。
附上写3ds代码 ,附件是转出来的3ds文件:
- Lib3dsFile * file = lib3ds_file_new();
- ..
- Lib3dsMesh *mesh = lib3ds_mesh_new(nameMesh);
- lib3ds_mesh_new_point_list(mesh ,pointnum);
- lib3ds_mesh_new_texel_list(mesh ,pointnum) ;
- for (int i =0 ;i<pointnum ;i++)
- ...
- mesh->pointL[i].pos[0] = x ;
- mesh->pointL[i].pos[1] = y ;
- mesh->pointL[i].pos[2] = z ;
- float tx = *(float*)strfileText ;
- strfileText +=sizeof(float) ;
- float ty = *(float*)strfileText ;
- strfileText +=sizeof(float) ;
- mesh->texelL[i][0] = tx ;
- mesh->texelL[i][1] =1.0 - ty ;
- ...
- lib3ds_mesh_new_face_list(mesh, faceNum);
- ...
- lib3ds_file_insert_material(file ,material) ;
- ..
- mesh->faceL[faceNum0 + j].points[0] = temp[j*3] ;
- mesh->faceL[faceNum0 + j].points[1] = temp[j*3+1];
- mesh->faceL[faceNum0 + j].points[2] = temp[j*3+2];
- memcpy(mesh->faceL[faceNum0 + j].material ,name ,64) ;
- lib3ds_file_insert_mesh(file, mesh);
- ...
- lib3ds_file_save(file, pathOf3ds.c_str());
复制代码
|
-
-
0.3ds
6.95 KB, 下载次数: 0, 下载积分: 威望 1
|