我使用MayaVi Python庫來繪製3d點,使用points3d
類。 The documentation指定每個點的顏色通過第四參數指定,s
:指定MayaVi中3D點的絕對顏色
此外,可以通過相同形狀的x,y, 和z給相關聯的標量值的第四數組S對於每個點,或函數f(x,y,z)返回標量值。此標量值可用於調整點的顏色和大小。
這指定的每個點,該點映射到colourmap標量值,如copper
,jet
或hsv
。例如。從他們的文檔:
import numpy
from mayavi.mlab import *
def test_points3d():
t = numpy.linspace(0, 4*numpy.pi, 20)
cos = numpy.cos
sin = numpy.sin
x = sin(2*t)
y = cos(t)
z = cos(2*t)
s = 2+sin(t)
return points3d(x, y, z, s, colormap="copper", scale_factor=.25)
給出:
相反,我想爲每一個點作爲(R,G,B)的元組指定實際值。這在MayaVi中可能嗎?我試過用元組數組替換s
,但是拋出了一個錯誤。
有沒有辦法做到這一點,產生一個任意0-255 RGB值,而不指定用255x255x255種值的獨特色彩表? 換句話說,在解決方案中,有一個方法來表徵逆譜()函數,其中頻譜()是與域[0,1]和範圍的函數0-255,0-255,0- 255? 這種行爲一直激怒了我,我已經看到了一些應用程序在其周圍獲得(例如VTK程序trackvis,其所有者下降到源釋放給我,讓我可以看到他是如何做)。 – aestrivex
您可以探索mayavi.core.lut_manager,尤其是mayavi.core.lut_manager中的pylab_luts,以瞭解它們是如何構建的(並且大概構建您自己的並將其與您期望的任何行爲一起分配) – Chrismit
我玩過這些遊戲。使用自定義的luts來指定所需的顏色方案,與爲指定標量的每個頂點指定唯一的RGB值相比,其解決方案要少得多。 從計算的角度來看,這是不正確的,因爲可以指定一個具有唯一定義RGB色譜的256x256x256值的LUT。但實際上做到這一點非常痛苦。 我認爲這個問題的正確答案是「對不起,沒有正確的方法來做到這一點。」 – aestrivex