我目前正在尝试使用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>