3D *.stl 表面模型转换为 2D 图像堆栈?

3D *.stl surface model convert to 2D image stack?

好的,首先让我说清楚,我对将图像堆栈转换为 3D 模型不感兴趣。

我有一个 *.stl 文件(一个三角曲面网格),我想将它切回到图像堆栈中。我看过 Slic3r 和 Meshmixer,但它们都只提供 Gcode。

所以假设我有表面上所有点的顶点(顺便说一句,它不是凸的)及其连通性。有哪些图书馆可以帮助解决这个问题?

我的感觉是我需要在没有通过已知顶点的切片上插入边界。

我对 Python 和 C++ 很满意,但我愿意拓宽我的视野。

例如,如果您要使用 OpenGL 渲染网格(通过任何方式在您的应用程序中),那么要获取您的切片,您只需:

  1. 设置相机,使屏幕投影平面与切片平行...
  2. 像往常一样清除屏幕缓冲区,glClearColor 设置为背景颜色
  3. 清除你的深度缓冲区 glClearDepth 设置为相机切片的 Z 坐标 space
  4. 设置glDepthFunc(GL_EQUAL)
  5. 渲染网格

类似于:

// here set view
glClearColor( 0.0,0.0,0.0,0.0 ); // <0.0,1.0> r,g,b,a
glClearDepth( 0.5 );             // <0.0,1.0> ... 0.0 = z_near, 1.0 = z_far 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glDepthFunc(GL_EQUAL);
// here render mesh

这将只呈现片段具有 Z==Slice coordinate 的切片。这也可以通过 GLSL 通过丢弃所有具有不同 Z 的片段来完成。 DirectX应该有类似的东西(我没用过所以不确定)。

由于大多数网格都是 BR 模型(空心),因此您将获得切片的周长,因此您很可能需要在之后填充它以满足您的需要...

您还可以尝试渲染厚切片...其中 Z 值在预定义值附近...

如果 HTTP API 解决方案适合您的目的,那么我会建议以下 resource

您可以 POST 将 3D 网格(STL、OBJ、3DS)连接到 API 端点并获得 JSON 响应。它将包含 URL 到 3D 模型的 2D 图像渲染以及其他 3D 测量结果,例如体积、面积、边界框、构建时间。

与在 python、PHP、JavaScript 甚至 cURL 命令行中编写的 Manifold API 端点交互的客户端库脚本也是 available.

希望对您的搜索有所帮助。如果您不是在寻找黑盒解决方案而是想自己实现 3D 渲染器,请原谅。