我在三维空间中有一些点。每个点都有一种颜色,使用以下公式计算-
//pack r/g/b into rgb
uint8_t r=255,g=0,b=0;//示例:红色
uint32_t r g b=(uint32_t)r<<16(uint32_t)g<<8(uint32_t)b);
< /代码>
如上图所示,将RGB颜色打包为一个值。我尝试使用mayavi python来可视化这些点。请参见下面的代码段-
从mayavi.mlab导入*
将numpy导入为np
n=10
#生成随机点和颜色(仅用于调试)
(x,y,z)=np.随机.随机((3,n))
颜色=np.随机。随机(n)
节点=点s3d(x,y,z,比例因子=0.1)
nodes.glyph.scale_mode='按矢量缩放'
nodes.mlab_source.dataset.point_data.scalars=颜色
显示()
< /代码>
上面的代码使用随机颜色,它显示以下输出-

但是,我希望指定颜色而不是使用随机值。请注意,每个点都有一个颜色。在这篇文章中,为了更简单,我使用下面的函数生成了相同的彩色点-
def pack_rgb(r,g,b):
r g b=(r<<16)+(g<<8)+b
返回RGB
颜色=[在范围(n)内为u-rgb(0,255,0)打包]
< /代码>
这将生成红色点,而不是绿色点,如下所示-

这是怎么回事?my goal is to visualize colored points in mayavi python where each point has an rgb color.
如上图所示,将RGB颜色打包为一个值。我尝试使用mayavi python来可视化这些点。请参见下面的代码段-
from mayavi.mlab import *
import numpy as np
N = 10
# generate random points and colors (just for debugging)
(x, y, z) = np.random.random((3, N))
colors = np.random.random(N)
nodes = points3d(x, y, z, scale_factor=0.1)
nodes.glyph.scale_mode = 'scale_by_vector'
nodes.mlab_source.dataset.point_data.scalars = colors
show()
上面的代码使用随机颜色,它显示以下输出-

但是,我希望指定颜色而不是使用随机值。请注意,每个点都有一个颜色。在这篇文章中,为了更简单,我使用下面的函数生成了相同的彩色点-
def pack_rgb(r, g, b):
rgb = (r<<16) + (g<<8) + b
return rgb
colors = [pack_rgb(0, 255, 0) for _ in range(N)]
这将生成红色点,而不是绿色点,如下所示-

这是怎么回事?我的目标是在mayavi python中可视化彩色点,其中每个点都有一个RGB颜色。