问题标签 [voxels]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
420 浏览

python-2.7 - VTK:3D 矩阵的体积尺寸错误

我想将 3-D 矩阵(X*Y 分辨率的 Z 切片)可视化为经典的 3-d 体素。我在 MATLAB 中生成矩阵并在 Python 中导入它。然后,按照这里这里的代码,我想出了这个解决方案。在这个演示中,我使用了一个矩阵,该矩阵应该生成一个包含 4 个 2*3 体素切片的 3D 图像。

在 MATLAB 中

在蟒蛇中:

随后的代码将生成此图像(为方便起见,我对其进行了旋转):

图像,中心切片比其他 2 个大

生成的形状不是 2*3*4 并且切片的大小不同,我做错了什么?我试图调整

并以多种方式重塑矩阵,如果我更改 dataImporter.SetDataExtent(0,1,0,1,0,1) dataImporter.SetWholeExtent(0,1,0,1,0,1)

我按预期获得了一个 2x2x2 立方体,但如果我打电话

我得到一个 2x4x2 的实体(而不是 2x3x2)

如果我打电话

我得到一个 2x20x4 的实体别在意颜色

这似乎与 setDataExtent 和 SetWholeExtent 的文档相矛盾:

*数据的维度必须等于 (extent 1 -extent[0]+1) * (extent 4 -extent 3 +1) * (extent 5 -DataExtent 4 +1)。例如,对于 2D 图像,使用 (0,width-1, 0,height-1, 0,0)。*

任何想法?

MATLAB下面的完整代码:

Python:

我唯一的假设是这些体素不是立方体,但它们的一个尺寸是其他尺寸的两倍。但仍然无法解释为什么 4 个切片中只有 2 个受此影响。

[更新]:似乎只有第一个和最后一个切片的大小是其他切片的一半。使用 20x30x40 矩阵可以看出,第一个和最后一个切片比其他切片更薄。 在此处输入图像描述

0 投票
1 回答
1170 浏览

c# - 为什么 Transvoxel 会形成块状地形?

从那时起,我一直致力于实现 Transvoxel。现在它起作用了,它多边形化了,但它有点像块状。如下图所示:

在此处输入图像描述

这是多边形化的代码:

这是另一个用于生成高度图和密度值的方法:

如果您以前使用过 Transvoxel,或者您对此有任何想法,请发表评论或回答。我真的坚持这一点。

编辑:密度生成代码的变化,不生成太多的零等等,但它仍然是块状的。

0 投票
1 回答
604 浏览

voxel - 如何以有效的方式渲染体素

现在,我使用 3D 数组来表示不同块中的体素。我想渲染玩家可以看到的体素,但我这样做的方式完全没有效率:

我遍历整个 10*10*10 块并检查每个体素是否存在等于Air. 然后我分别渲染每个可见的面。所以我主要检查每个体素 6 次。我对所有块都这样做。

有没有更好的方法或算法来减少迭代?

我基本上不知道使用 3D Array 还是 Octree 是否更好......

感谢。

0 投票
2 回答
190 浏览

python - 附加一个布尔数组

好的,我是编程新手,这可能是每个人都知道的......

我正在创建一个游戏,我打算添加的功能之一是我计划用代码生成的 3D 房间地图。我面临的问题是我需要附加一个布尔数组或它所调用的任何东西,而不知道它将包含多少个元素。这是测试代码和突出显示的问题。

任何帮助,将不胜感激。

0 投票
2 回答
7291 浏览

python - Python Matplotlib - 绘制长方体

我正在尝试使用 matplotlib 绘制不同大小的长方体,这样:旋转后长方体不会以非物理方式在视觉上重叠,立方体具有不同的颜色,并且在它们周围绘制了一个框。

我已经阅读了几篇引用类似问题的博客文章和 stackoverflow 页面,但总是略有不同;没有一个对我有用。克服重叠问题的最简单方法是使用体素(如https://matplotlib.org/api/_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html?highlight=voxel#mpl_toolkits.mplot3d.axes3d.Axes3D.voxels ),但是这些不允许我在它们周围画框。在 matplotlib 中最简单的方法是什么?

下图显示了我在左边有什么,在右边我想要什么。

编辑:我研究了几种可以产生预期效果的方法,其中主要是:

  • 使用体素,但以某种方式缩放它们,使得单个体素代表单个项目。
  • 使用曲面图,然后动态调整绘图顺序以避免非物理重叠。

前者似乎更容易执行,但我仍然很难过。

左:我得到什么。 右:我想要的

0 投票
2 回答
3545 浏览

python - “Axes3DSubplot”对象没有属性“体素”

我正在尝试使用 matplotlib 来显示一些 3d perlin 噪声。我已经读过voxelsfrom 的方法Axes3DSubplot可以用来简单地显示值。但是,当我尝试调用时ax.voxels(voxels, facecolors=colors, edgecolor='k'),它会抛出异常AttributeError: 'Axes3DSubplot' object has no attribute 'voxels'。这是我的代码:

我的 python 版本是 3.6.2(Anaconda 64 位)。我的 matplotlib 版本是 2.0.2。我使用了 ipynb ( module://backend_interagg) 和Qt5Agg后端,它们都给出了同样的问题。我正在运行 Windows 10。

0 投票
1 回答
712 浏览

python - VisPy 中体素的透明度

我正在尝试使用 python 和 VisPy 显示来自 numpy 数组的 3D 数据。我在这里查看了这个例子,它非常有用。我已经得到了要显示的数据——但它看起来不像我想要的那样。

我的数据现在显示的方式我真的看不到每个体素。我可以看到形状的侧面,但老实说,它看起来只是一个挖空的立方体。看起来像这样。我认为这可能是因为许多值是负数,或者大多数值相对较小,有一些较大的异常值。

无论哪种方式,我都希望能够单独设置值的透明度——例如,正值是 70% 透明,而小于 -2 但大于 -5 的值只有 30% 透明和阴影的绿色。我希望这能让我看到一个实际的“音量”,而不是我现在所拥有的。

这是我现在所拥有的一瞥,以防有人想看到(注意,从我链接的示例 vispy 代码中大量复制和粘贴):