好吧,首先让我说清楚,我对将图像堆栈转换为 3D 模型不感兴趣。
我有一个 *.STL 文件(一个三角化表面网格),我想将它切回到图像堆栈中。我看过 Slic3r 和 Meshmixer,但它们都只提供 Gcode。
所以假设我有表面上所有点的顶点(顺便说一下,这不是凸点)及其连通性。有哪些图书馆可以帮助解决这个问题?
我的感觉是我需要在未通过已知顶点的切片上插入边界。
我对 Python 和 C++ 很满意,但愿意拓宽我的视野。
最佳答案
例如,如果您要使用 OpenGL 渲染您的网格(通过您的应用程序内部的任何方式),那么要获取您的切片,您只需:
- 设置您的相机,使屏幕投影平面与切片平行...
- 像往常一样清除屏幕缓冲区,将
glClearColor
设置为背景色 - 通过将
glClearDepth
设置为相机空间中切片的 Z 坐标来清除深度缓冲区 - 设置
glDepthFunc(GL_EQUAL)
- 渲染网格
类似于:
// 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 值在预定义值附近......
关于python - 3D *.STL 表面模型转换为 2D 图像堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37863327/