如何在MayaVi中为单个3D球体指定独立颜色(已实现大小配置)
为Mayavi中每个3D球体指定独立颜色的解决方案
嘿,这事儿好办!Mayavi的mlab.points3d函数完全支持给每个球体单独设置颜色,结合你已有的代码,我给你整理出完整的实现方案:
完整代码示例
import mayavi.mlab as mlab import numpy as np # 设置白色背景、黑色前景 mlab.figure(fgcolor=(0., 0., 0.), bgcolor=(1, 1, 1)) # 球体的三维坐标 x1 = np.array([27.340, 26.266, 26.913, 27.886, 25.112]) y1 = np.array([24.430, 25.413, 26.639, 26.463, 24.880]) z1 = np.array([2.614, 2.842, 3.531, 4.263, 3.649]) # 球体初始大小 & 缩小后的大小(补全你未写完的代码,这里示例缩小一半) size1 = np.array([7, 6, 6, 8, 6]) size = size1 * 0.5 # 为每个球体指定独立RGB颜色:Nx3的数组,每个元素是0-1的浮点数 # 示例颜色:红、绿、蓝、黄、品红 colors = np.array([ [1.0, 0.0, 0.0], # 第一个球红色 [0.0, 1.0, 0.0], # 第二个球绿色 [0.0, 0.0, 1.0], # 第三个球蓝色 [1.0, 1.0, 0.0], # 第四个球黄色 [1.0, 0.0, 1.0] # 第五个球品红 ]) # 绘制带独立大小和颜色的球体 mlab.points3d( x1, y1, z1, mode='sphere', # 必须设置为sphere才会渲染成球体(默认是点) scale=size, # 传入每个球体的独立大小数组 scale_mode='vector', # 启用每个点的独立缩放(对应size数组) color=colors # 传入每个球体的独立颜色数组 ) # 显示3D场景 mlab.show()
关键细节说明
- 颜色数组格式:必须是
Nx3的numpy数组,每个元素取值范围是0.0到1.0(对应RGB颜色0-255的归一化值)。如果你的颜色是0-255的整数,只需除以255.0转换即可,比如:colors = np.array([[255,0,0], [0,255,0]]) / 255.0。 - 大小控制:通过
scale参数传入每个球体的大小数组,配合scale_mode='vector'实现每个球体的独立缩放,这和你已有的大小设置逻辑完美兼容。 - 球体渲染:一定要设置
mode='sphere',否则默认会渲染成小方块点,而不是你需要的球体。
内容的提问来源于stack exchange,提问作者XuMuK
相关产品推荐
相关产品推荐

