在任意方向切片 3D 数组以生成纹理

slice 3D array in arbitrary direction to generate texture

我正在尝试根据给定法线和原点的 3D 数组生成 2D 纹理。

我的问题是我无法找出正确的分辨率来确保我不会忘记纹理中的任何像素。

步骤:

  1. 获取3维数组与平面的交集
  2. 将交点坐标移动到 2D space
  3. 遍历 2D 中的交叉点 space 以获得像素值

我的方法的问题是我无法找出在 2D space 中迭代的正确 spacing/step。如果步长太大,我可能会错过一些像素,如果步长太小,它会影响性能。

我的方法有意义吗?

如有任何帮助,我们将不胜感激。 最佳

== 编辑

通常,3D 数组为 256x256x256,数组的每个元素都是维度为 spacingX、spacingY、spacingZ 的 3D 体素。

有时我想使用 3D 纹理直接在 WebGL 中重新分割我的体积,但首先我想弄清楚 javascript 中的逻辑。

如果您查看那里的演示:http://lessons.goxtk.com/17/,您应该会看到问题所在。理想情况下,2D 切片应始终清晰,但有时图像上会出现一些伪影,因为由于不正确的重新切片,纹理丢失了一些体素。

我想在任何方向重新分割这个体积的问题(不仅与 X/Y/Z 轴对齐)。这意味着我们不仅要从相交平面中提取正方形,还要提取三角形。我想生成一个包含所有信息的漂亮纹理。

我希望能够正确提取如下纹理。

使用我当前的(不正确的)方法,我尝试猜测最小的重新切片平面间距是多少,然后遍历它以生成纹理。但是我找不到正确的间距。因此以我猜测的间距遍历平面,我错过了很多信息。

我目前的方法似乎不正确,欢迎任何关于如何实现它的建议!

最佳

整个方法不对。正确的做法是针对屏幕上的每个像素,将其映射到平面的世界坐标,然后将其映射到IJK坐标,找到合适的颜色。

像素->平面坐标->IJK坐标->像素颜色!