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

DrB*_*wts 5 c++ python 3d graphics imaging

首先我要明确一点,我对将图像堆栈转换为 3D 模型不感兴趣。

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

因此,鉴于我有表面上所有点的顶点(顺便说一下,这不是凸的)及其连接性。有哪些图书馆可以帮助解决这个问题?

我的感觉是,我需要在未穿过已知顶点的切片上插入边界。

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

Spe*_*tre 2

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

  1. 设置相机,使屏幕投影平面与切片平行......
  2. 像往常一样清除屏幕缓冲区并glClearColor设置背景颜色
  3. 将深度缓冲区glClearDepth设置为相机空间中切片的 Z 坐标
  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
Run Code Online (Sandbox Code Playgroud)

这将仅渲染片段具有 的切片Z==Slice coordinate。这也可以通过GLSL丢弃所有具有不同Z. DirectX应该有类似的东西(我没有使用它所以我不确定)。

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

您还可以尝试渲染厚切片...其中 Z 约为预定义值...