簡體   English   中英

使用 assimp 將 3d model 轉換為 2d

[英]Translating a 3d model to 2d using assimp

我正在使用 c++ 將使用命令行 ZDBC11CAA5BDA99F77E6FB4DABD8 輸入的 3d model 轉換為如imp2D7 所示的命令行 ZDBC11CAA5BDA99F77E6FB4DABD8。 但是,我不確定 go 的最佳方法。 我有基本的硬編碼來創建一組 object 但我需要使用向量和循環重做它。 go 最好的方法是什么?

void createSimpleQuad(Mesh &m) {
  // Clear out vertices and elements
  m.vertices.clear();
  m.indices.clear();

  // Create four corners
  Vertex upperLeft, upperRight;
  Vertex lowerLeft, lowerRight;
  Vertex upperMiddle;

  // Set positions of vertices
  // Note: glm::vec3(x, y, z)
  upperLeft.position = glm::vec3(-0.5, 0.5, 0.0);
  upperRight.position = glm::vec3(0.5, 0.5, 0.0);
  lowerLeft.position = glm::vec3(-0.5, -0.5, 0.0);
  lowerRight.position = glm::vec3(0.5, -0.5, 0.0);
  upperMiddle.position = glm::vec3(-0.9, 0.5, 0.0);

  // Set vertex colors (red, green, blue, white)
  // Note: glm::vec4(red, green, blue, alpha)
  upperLeft.color = glm::vec4(1.0, 0.0, 0.0, 1.0);
  upperRight.color = glm::vec4(0.0, 1.0, 0.0, 1.0);
  lowerLeft.color = glm::vec4(0.0, 0.0, 1.0, 1.0);
  lowerRight.color = glm::vec4(1.0, 1.0, 1.0, 1.0);
  upperMiddle.color = glm::vec4(0.5, 0.15, 0.979797979, 1.0);

  // Add to mesh's list of vertices
  m.vertices.push_back(upperLeft);
  m.vertices.push_back(upperRight); 
  m.vertices.push_back(lowerLeft);
  m.vertices.push_back(lowerRight);
  m.vertices.push_back(upperMiddle);

  // Add indices for two triangles
  m.indices.push_back(0);
  m.indices.push_back(3);
  m.indices.push_back(1);

  m.indices.push_back(0);
  m.indices.push_back(2);
  m.indices.push_back(3);

  m.indices.push_back(0);
  m.indices.push_back(2);
  m.indices.push_back(4);
}

如果您想從 3D 模型中生成 2D 圖片,您需要:

  1. 導入 model
  2. 通過通用渲染庫將其渲染到紋理中,或者使用我們的查看器手動渲染並拍攝快照

目前沒有在 Assimp 中自動生成 2D 視圖的后處理。

但是當你想用你自己的渲染代碼來做這件事時,這並不難。 導入 model 后,您必須:

  1. 獲取導入資產的邊界框,只需檢查 assimp-repo 中的 opengl-samples 以獲取一些提示
  2. 計算此邊界框的直徑。
  3. 創建一個攝像頭,對於 OpenGL,您可以使用 glm 來計算 View-Matrix
  4. 將資產放置在 (0|0|0) 世界坐標系
  5. 將您的相機移動直徑,讓它查看到 (0|0|0)
  6. 將視圖渲染為 2D 紋理或僅截取屏幕截圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM