如何用C ++编写.mlp文件(meshlab项目)?

时间:2017-08-21 09:06:12

标签: c++ meshlab

我目前正在尝试使用meshlab打开一个.mlp项目,该项目由c ++程序创建/编写(所有文件,例如网格,纹理和.mlp都在同一个文件夹中)。

我正在以下列方式编写.mlp项目:

wofstream myfile;
if (myfile.is_open())
    {
            myfile << L"<!DOCTYPE MeshLabDocument>\n<MeshLabProject>\n <MeshGroup>\n";
            //[...]
            myfile.close();

    }

问题是:最终文件无法通过meshlab打开或打开但不正确:显示我的网格已加载但没有网格/网格有0个顶点。

为了检查错误,我在meshlab中创建了一个示例项目,并将生成的.mlp文件与我在c ++中创建的.mlp文件进行了比较:它们看起来相同(只有旋转/平移矩阵的值略有不同)。

文件大小因某个字节(10到18之间)而不同,所以我添加了一些代码(找到here)以将编码转换为UTF8:

myfile.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t, 0x10ffff, std::generate_header>));

不幸的是,这并没有解决问题,而且meshlab仍然无法读取我的项目......

如果有人对这个问题有一些提示甚至解决方案,我将非常感激!

另外: 不工作.mlp看起来像这样:

<!DOCTYPE MeshLabDocument>
<MeshLabProject>
 <MeshGroup>
  <MLMesh filename="MeshedReconstruction1.ply" label="MeshedReconstruction1.ply">
   <MLMatrix44>
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
</MLMatrix44>
  </MLMesh>
 </MeshGroup>
 <RasterGroup>
  <MLRaster label="examplePic1.png">
   <VCGCamera RotationMatrix="0.999985 -0.005109 0.002027 0.000000 0.005126 0.999953 -0.008233 0.000000 -0.001985 0.008243 0.999964 0.000000 0 0 0 1" CenterPx="960 540" ViewportPx="1920 1080" TranslationVector="0.005810 -0.001382 -0.001205 1.000000" FocalMm="36.653561" LensDistortion="0 0" PixelSizeMm="0.0319256 0.0319256" CameraType="0"/>
   <Plane semantic="1" fileName="examplePic1.png"/>
  </MLRaster>
 </RasterGroup>
</MeshLabProject>

工作.mlp如下所示:

<!DOCTYPE MeshLabDocument>
<MeshLabProject>
 <MeshGroup>
  <MLMesh filename="MeshedReconstruction1.ply" label="MeshedReconstruction1.ply">
   <MLMatrix44>
1 0 0 0 
0 1 0 0 
0 0 1 0 
0 0 0 1 
</MLMatrix44>
  </MLMesh>
 </MeshGroup>
 <RasterGroup>
  <MLRaster label="examplePic1.png">
   <VCGCamera RotationMatrix="0.999683 0.0245459 0.00566618 0 -0.0245495 0.999699 0.000560548 0 -0.00565071 -0.000699472 0.999984 0 0 0 0 1 " CenterPx="960 540" ViewportPx="1920 1080" TranslationVector="-0.0273756 0.00583069 -0.398988 1" FocalMm="46.0408" LensDistortion="0 0" PixelSizeMm="0.0317889 0.0317889" CameraType="0"/>
   <Plane semantic="1" fileName="examplePic1.png"/>
  </MLRaster>
 </RasterGroup>
</MeshLabProject>

0 个答案:

没有答案