问题标签 [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.
python-2.7 - VTK:3D 矩阵的体积尺寸错误
我想将 3-D 矩阵(X*Y 分辨率的 Z 切片)可视化为经典的 3-d 体素。我在 MATLAB 中生成矩阵并在 Python 中导入它。然后,按照这里和这里的代码,我想出了这个解决方案。在这个演示中,我使用了一个矩阵,该矩阵应该生成一个包含 4 个 2*3 体素切片的 3D 图像。
在 MATLAB 中
在蟒蛇中:
随后的代码将生成此图像(为方便起见,我对其进行了旋转):
生成的形状不是 2*3*4 并且切片的大小不同,我做错了什么?我试图调整
并以多种方式重塑矩阵,如果我更改 dataImporter.SetDataExtent(0,1,0,1,0,1) dataImporter.SetWholeExtent(0,1,0,1,0,1)
我按预期获得了一个 2x2x2 立方体,但如果我打电话
我得到一个 2x4x2 的实体(而不是 2x3x2)
如果我打电话
这似乎与 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 矩阵可以看出,第一个和最后一个切片比其他切片更薄。
voxel - 如何以有效的方式渲染体素
现在,我使用 3D 数组来表示不同块中的体素。我想渲染玩家可以看到的体素,但我这样做的方式完全没有效率:
我遍历整个 10*10*10 块并检查每个体素是否存在等于Air
. 然后我分别渲染每个可见的面。所以我主要检查每个体素 6 次。我对所有块都这样做。
有没有更好的方法或算法来减少迭代?
我基本上不知道使用 3D Array 还是 Octree 是否更好......
感谢。
python - 附加一个布尔数组
好的,我是编程新手,这可能是每个人都知道的......
我正在创建一个游戏,我打算添加的功能之一是我计划用代码生成的 3D 房间地图。我面临的问题是我需要附加一个布尔数组或它所调用的任何东西,而不知道它将包含多少个元素。这是测试代码和突出显示的问题。
任何帮助,将不胜感激。
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 中最简单的方法是什么?
下图显示了我在左边有什么,在右边我想要什么。
编辑:我研究了几种可以产生预期效果的方法,其中主要是:
- 使用体素,但以某种方式缩放它们,使得单个体素代表单个项目。
- 使用曲面图,然后动态调整绘图顺序以避免非物理重叠。
前者似乎更容易执行,但我仍然很难过。
python - “Axes3DSubplot”对象没有属性“体素”
我正在尝试使用 matplotlib 来显示一些 3d perlin 噪声。我已经读过voxels
from 的方法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。
python - VisPy 中体素的透明度
我正在尝试使用 python 和 VisPy 显示来自 numpy 数组的 3D 数据。我在这里查看了这个例子,它非常有用。我已经得到了要显示的数据——但它看起来不像我想要的那样。
我的数据现在显示的方式我真的看不到每个体素。我可以看到形状的侧面,但老实说,它看起来只是一个挖空的立方体。看起来像这样。我认为这可能是因为许多值是负数,或者大多数值相对较小,有一些较大的异常值。
无论哪种方式,我都希望能够单独设置值的透明度——例如,正值是 70% 透明,而小于 -2 但大于 -5 的值只有 30% 透明和阴影的绿色。我希望这能让我看到一个实际的“音量”,而不是我现在所拥有的。
这是我现在所拥有的一瞥,以防有人想看到(注意,从我链接的示例 vispy 代码中大量复制和粘贴):