【发布时间】:2019-11-11 15:24:20
【问题描述】:
我正在使用 mayavi,并使用 mlab.triangular_mesh 中的 scalar 属性绘制我的三角形网格
model_plot = mlab.triangular_mesh(self.model.vx, self.model.vy, self.model.vz, self.model.triv,
scalars=self.P_colors[:, np.newaxis],
name='model')
有了结果
但我想更改网格中的特定值(例如将头部涂成绿色)。
为此,我尝试使用图中的LOT,但我不明白如何使用它(即从标量X -> 到颜色(R,G,B,A))
model_plot.module_manager.scalar_lut_manager.lut.table = model_colors
目标是以某种方式将(7000) 标量数组转移到对应于LOT 的(7000,4) RGBA 数组。
【问题讨论】:
-
这个例子有帮助吗? docs.enthought.com/mayavi/mayavi/auto/…
-
感谢您的回答,但不,
# The lut is a 255x4 array, with the columns representing RGBA的 LUT 是 255*4(RGB 映射),我想要7k*4映射,即网格中每个顶点的颜色。跨度> -
我的理解是,每个节点都根据其在数组中的值进行着色,该数组为
scalars和所使用的颜色图。这意味着如果您保留当前颜色图,使头部的self.P_colors值与下腹部的值相同会使头部变为绿色。或者,如果self.P_colors保持不变,那么制作自己的颜色图 (matplotlib.org/3.1.1/tutorials/colors/…) 并将其提供给colormap可能是解决方案。 -
你绝对正确,但如果我想在不同的软件(例如 MeshLab)中使用精确的颜色图,我想使用相同的颜色。没有办法从 LUT 创建
7000*4颜色图吗?必须有,因为他们在内部这样做没有? (并且名称实际上是 Look Up table:p ) -
看看这里 (matplotlib.org/3.1.0/tutorials/colors/…)、这里 (stackoverflow.com/questions/28144142/…) 和这里 (stackoverflow.com/questions/16834861/…)。对于 Mayavi 内部的内容,请尝试将
mlab.options.backend = 'envisage'添加到您的代码中。然后,双击您感兴趣的对象的颜色和图例并尝试Launch LUT editor。它对我不起作用,但谁知道呢,也许只是我。