【问题标题】:What do the coordinates of verts from Marching Cubes mean?Marching Cubes 的顶点坐标是什么意思?
【发布时间】:2022-01-07 22:47:42
【问题描述】:

我有一个 3D 生成的车辆体素模型,体素的坐标位于车辆参考系中。原点位于地板的中心。看起来是这样的:

数组([[-2.88783681, -0.79596956, 0.],
[-2.8752784 -0.79596956, 0.],
[-2.86271998, -0.79596956, 0.],
...,
[ 2.83880176, 0.89941685, 1.98423003],
[ 2.85136017, 0.89941685, 1.98423003],
[2.86391859, 0.89941685, 1.98423003]])

然后我创建一个 0 和 1 的网格

ux = np.unique (voxels[:,0])
uy = np.unique (voxels[:,1])
uz = np. unique (voxels[:,2])

X, Y, Z = np.meshgrid(ux, uy, uz)
V = np.zeros(X. shape)
N = voxels.shape [0]
for ii in range(n):
    ix = ux == voxels[ii,]
    iy = uy == voxels[ii, 1]
    iz = uz == voxels[ii,2]
    V[iy, ix, iz] = 1

然后我调用marching cubes算法来生成体素模型的网格。

marching_cubes = measure.marching_cubes_lewiner (v, o, spacing=(voxel_size, voxel_size, voxel_size))
verts = marching_cubes[0]
faces = marching cubes[1]
normals = marching_cubes[2]

当我打印出顶点时,坐标是这样的:

数组([[2.78852894e-18, 4.39544627e-01, 3.39077284e-01),
[1.25584179-02, 4.39544627e-01, 3.26518866e-01],
[1.25584179-02, 4.26986209e-01, 3.39077284e-01],
[1.72050325e+00, 1.26840021e+00, 2.76285194-01],
[1.72050325e+00, 1.26840021e+00, 2.88843612e-01],
[1.72050325e+00, 1.26840021e+00, 3.014020302-01]])

documentation 中,它说 verts 只不过是“V 个唯一网格顶点的空间坐标”。但是坐标是什么意思?它在什么坐标系中?
我计划将网格投影到生成体素模型的车辆图像上。在这种情况下如何进行坐标转换? (我已经成功地将体素投影到图像上)

【问题讨论】:

    标签: python numpy scikit-learn marching-cubes


    【解决方案1】:

    顶点只是空间中的点。本质上,每个顶点都是某个三角形的一个角(通常超过 1 个)。

    要知道实际的三角形是什么,您需要查看如下面:

    [(v1, v2, v3), (v1, v4, v5), ...]
    

    列表中的每个元组都包含 3 个顶点索引。例如:

    verts[v1], verts[v2], verts[v3]
    

    是空间中的三角形。

    【讨论】:

    • 我得到了这么多。但是这些值是什么意思?比如这个坐标,[1.25584179-02, 4.39544627e-01, 3.26518866e-01],是什么意思?什么是坐标系?
    • 根据文档,它与输入空间位于同一空间中。所有面的集合是由算法提取的体积表面,作为给定输入的边界。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 2016-08-17
    • 1970-01-01
    • 2019-12-25
    • 2012-02-02
    相关资源
    最近更新 更多