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

时间:2015-01-19 11:42:06

标签: javascript textures webgl texture2d slice

我正在尝试从给定法线和原点的3D阵列生成2D纹理。

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

步骤:

  1. 获取3D阵列和平面的交点
  2. 将交叉点坐标移动到2D空间
  3. 遍历2D空间中的交点以获取像素值
  4. 我的方法的问题是我无法找出在2D空间中迭代的正确间距/步骤。如果步长太大,我可能会错过一些像素,如果步长太小,则会导致性能下降。

    我的方法有意义吗?

    非常感谢任何帮助。 最好

    ==编辑

    通常,3D阵列为256x256x256,阵列的每个元素都是尺寸spacingX,spacingY,spacingZ的3D体素。

    enter image description here

    在某些时候我想使用3D纹理直接在WebGL中重新调整我的音量,但首先我想弄清楚javascript中的逻辑。

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

    我想在任何方向上重新调整此音量的问题(不仅与X / Y / Z轴良好对齐)。这意味着我们不仅从交叉平面提取正方形而且还提取三角形。我想生成一个包含所有信息的漂亮纹理。

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

    enter image description here

    使用我当前(不正确)的方法,我尝试猜测最小的重复平面间距是什么,并迭代它以生成纹理。但我找不到正确的间距。因此,我用猜测的间距迭代飞机,我想念很多信息。

    enter image description here

    我目前的做法似乎不正确,欢迎任何有关如何实现这一目标的建议!

    最佳

1 个答案:

答案 0 :(得分:1)

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

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