日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

OpenMesh 读写网格控制(读取写入纹理坐标,法向等)

發布時間:2023/12/13 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 OpenMesh 读写网格控制(读取写入纹理坐标,法向等) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OpenMesh讀取網格默認是不自動讀取obj網格中的法向,紋理坐標等信息的,寫入網格同樣也是。所以要讀?。ɑ驅懭耄┻@些信息需要修改默認的選項。

先看一下其讀寫網格的函數

1   template<class Mesh>
2   bool OpenMesh::IO::read_mesh(
3       Mesh &_mesh,
4       const std::string &_filename,
5       Options &_opt,
6       bool _clear = true
7   )
1   template<class Mesh >
2   bool OpenMesh::IO::write_mesh(
3       const Mesh &_mesh,
4       const std::string &_filename,
5       Options _opt = Options::Default,
6       std::streamsize _precision = 6
7   )

函數中的參數 Options 就可以控制讀寫其他信息。

OpenMesh的IO::Options::Flag

在OpenMesh的官方文檔中,有很多關于IO的options,更詳細的內容請看這里 http://www.openmesh.org/media/Documentations/OpenMesh-Doc-Latest/a00231.html#details

    enum Flag
    { 
        Default = 0x0000, Binary = 0x0001, MSB = 0x0002, LSB = 0x0004, 
        Swap = 0x0006, VertexNormal = 0x0010, VertexColor = 0x0020, VertexTexCoord = 0x0040, 
        EdgeColor = 0x0080, FaceNormal = 0x0100, FaceColor = 0x0200, FaceTexCoord = 0x0400, 
        ColorAlpha = 0x0800, ColorFloat = 0x1000, Custom = 0x2000 
    }

這些options可以讓你自定義讀取/寫入網格。

OpenMesh 讀網格

如果想要在讀取obj網格的時候自動讀取紋理坐標,只需要添加讀取紋理坐標的option,注意在讀取網格之前要先給紋理坐標分配內存,即request_vertex_texcoords2D()。讀取法向或其他信息也是一樣。

。

1     OpenMesh::IO::Options opt_read = 0x0040;   //選項控制讀取紋理坐標
2    ptr_mesh_->request_vertex_texcoords2D();
3     if ( !OpenMesh::IO::read_mesh(*ptr_mesh_, byfilename.data(), opt_read) )
4     {
5         std::cerr<< "Cannot Open mesh to file '1.obj'" << std::endl;
6         return;
7     }

OpenMesh 寫網格

如果要想在寫入網格時寫入頂點的法向信息,也是同樣的。

1      OpenMesh::IO::Options opt_write = OpenMesh::IO::Options::VertexNormal;
2      if (!OpenMesh::IO::write_mesh(*ptr_mesh_, "mesh.obj", opt_write))
3      {
4          std::cerr << "Cannot Write mesh to file" << std::endl;
5          return;
6      }

如果要控制寫入網格的數據精度,也很簡單:

1 OpenMesh::IO::write_mesh(*ptr_mesh_, "mesh.obj", opt_write, 12)

總結

以上是生活随笔為你收集整理的OpenMesh 读写网格控制(读取写入纹理坐标,法向等)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。