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

标签 python c++ graphics 3d imaging

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

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

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

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

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

最佳答案

例如,如果您要使用 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

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

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

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

关于python - 3D *.STL 表面模型转换为 2D 图像堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37863327/

相关文章:

python - 提及解析正则表达式

c++ - OpenGL:从数据数组生成二维纹理以显示在四边形上

graphics - 像素与多边形重叠 : efficient (scanline-type) algorithm

c++ - 为什么你想要一个浅拷贝(而不是引用)?

c++ - 我应该使用类方法还是通过引用传递对象?

c++ - 如何检查当前在 OpenGL 中绑定(bind)了哪个帧缓冲区对象?

python - 我可以在 headless 服务器上运行 GLU (OpenGL) 吗?

python - Django 装置 : importing HTML data via JSON into a TextField

python - Azure网站对Bottle Python的支持

python - 如何使用 Python 在 Redis 中存储复杂的嵌套 JSON