์์ vtk์์๋ point_data.scalars๊ฐ vtkUnsignedCharArray์ธ ํ๋ฉด์ ๊ฐ์ง ์ ์์ต๋๋ค. ๋ ๋๋ฌ๋ ์ด๊ฒ์ ๊ฐ ์ ์ ์ ๋ํด ๊ณ ์ ํ RGB ๋๋ RGBA ๊ฐ์ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก ํด์ํ๊ณ ์ค์ ์ด ์ค์ ๋ ๊ฒฝ์ฐ ๊ทธ์ ๋ฐ๋ผ ํ๋ฉด์ ์์์ ์ง์ ํฉ๋๋ค. Mayavi ๊ฐ์ฒด๋ vtkUnsignedCharArrays๋ฅผ ์ค์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด ์์ ์ ์ ํ ํ์ฉํ์ง ์์ต๋๋ค.
๊ฒฐ๊ตญ ์ฌ์ฉ์๊ฐ ์ ํจํ RGB ๋๋ RGBA ํํ์ mlab ํจ์์ ๋ํ ์ค์นผ๋ผ๋ก ์ง์ ํ๋ฉด ๊ฐ ์ง์ ์ ์์์ด ์ค์นผ๋ผ์ ์ผ์นํ๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Mayavi์ ํต์ฌ ๊ฐ๋ฐ์๋ ๋ค๋ฅธ ๊ณณ์์ ๋งค์ฐ ๋ฐ์ฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๋๋ ค์
์ด ๊ธฐ๋ฅ ์์ฒญ์ด ๋ฐ์ํ๋ ค๋ฉด ๋ค๋ฅธ ์ฌ๋์ด ๊ฐ์
ํด์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฝ๋.
๊ด์ฐฎ์ต๋๋ค. ๋ฏธ๋์ ๋ํ ๊ธฐ๋ฅ ์์ฒญ์ผ๋ก ์๋ํ๋๋ฐ ์๋นํ ์์ ๋์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ์๊ฐ์ด ํ๋ฝ๋๋ค๋ฉด ํด๋ณด๊ณ ์ถ์ ์ํ์ ๋๋ค.
๋๋ฌด ์ดํดํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๋ถ๋ช
ํ ๋
ธ๋๋ ฅ
Mayavi๋ ๋ชจ๋ ์ ์ฌ๋ ฅ์ ์ถฉ์กฑํ๊ธฐ์ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
@GaelVaroquaux ๊ณง ํ๋ก์ ํธ์ ๋ํ ์๊ธ ์ง์์ด ์์ ์์ ์ ๋๋ค(๋ด๋ 2๋ถ๊ธฐ ์์)!
๋๋ ์ค๋ ๋๋ถ๋ถ์ ์๊ฐ ๋์ ์ด ํน์ ํ ๋ฒฝ์ ๋จธ๋ฆฌ๋ฅผ ๋ถ๋ชํ ์์ต๋๋ค. [x, y, z, ํฌ๊ธฐ, ์์]์ ๋ฐฐ์ด๋ก ์ ๋ชฉ๋ก์ ์ง์ ํ๋ ๊ฒ์ ์์ฃผ ๋ช ๋ฐฑํ ๊ธฐ๋ฅ์ฒ๋ผ ๋ณด์ ๋๋ค! ํฌ์ธํธ ํฌ๊ธฐ๊ฐ ํฌ์ธํธ ์์์ ๊ณ ์ ๋๊ธฐ๋ฅผ ์ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?!
๊ทํ์ ์๊ตฌ ์ฌํญ ์งํฉ์ ๋ค๋ฅธ ์ฌ๋์ ์๊ตฌ ์ฌํญ์ผ ์ ์์ต๋๋ค. Mayavi๋ ๋ค์์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
ํ์ํ๊ธฐ ์ํ ์ผ๋ฐ ์๊ฐํ ํดํท์ผ๋ก ์์ฑ๋ VTK
์ง์์ ์ผ๋ก ๋ณํํ๋ ํ๋ถํ ๋ฐ์ดํฐ. ์ฌ๋ฌผ์ ์ถ์์ ์ผ๋ก ์๊ฐํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
๊ฐ์ฒด์ ์๊ฐ์ ์์ฑ์ ๋งคํ๋์ด์ผ ํ๋ ์. ์ข์์
์ฌ๋ถ์ ๊ด๊ณ์์ด ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๊ฑฐ์ ๋ฌถ์ฌ ์์ต๋๋ค.
์ฆ, ์ฝ๊ฐ์ ์์
์ผ๋ก ํฌ๊ธฐ์ ์์์ ์ฝ๊ฒ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
hack: ๋ค์ ๋จ๋ฝ์ ๋ง์ง๋ง ํญ๋ชฉ
http://docs.enthought.com/mayavi/mayavi/mlab.html#adding -color-or-size-variations
๋น ๋ฅธ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ๋ถํํ๋, ๊ณผํ์ ๋ฐ์ดํฐ๋ฅผ ํ๋กฏํ๋ Mayavi์ ๋ฅ๋ ฅ ์ธก๋ฉด์์ ์ฃผ์ ์ ํ ์ฌํญ์ ๋๋ค(์: ์ด ์ค๋ ๋ ์ฐธ์กฐ, "๋๋ ๋ํ ํ์์ ์ ์ฅ์ ์ทจํ๊ณ API์ ๋ช ํํ/๊ธฐ๋ณธ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ๊นจ๋ซ๊ณ ๋์ ์ธ๊ธฐ ์์ํ์ต๋๋ค. ์ฌ์ฉ์ ์ ์ ์์", ๋ด ๋๋์ ์ ํํ ์์ฝํ ๊ฒ์ ๋๋ค!). ์ด ๊ธฐ๋ฅ์ VTK(์: this )์์ ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ง๋ง Mayavi๋ก ๋ฒ์ญํ๋ ๊ฒ์ ์ฝ์ง ์์ ์ ์์ต๋๋ค.
(๋ง๋ถ์ด์๋ฉด, ์ ๊ฐ ์ฌ๊ธฐ์ ํ๋ ค๊ณ ํ๋ ์์ ์ ๋ํด ์ ์๊ณ ๊ณ์ค ๊ฒ ๊ฐ์ต๋๋ค. ์ ๋ ํผ์ง์ 3D ๋ชจ๋ธ์์ ์๋ก ๋ค๋ฅธ ๋ด๋ฐ ์ง๋จ์ ๋ํด ์๋ก ๋ค๋ฅธ ์์์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.)
์๋ ํ์ธ์ ํด๋ฆฌํ์ ๋๋ค.
์ด์ ๋ํ ์ข์ API๋ ์์ง๋ง ๋ช ๊ฐ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ฒ์์ ์ฌ๊ธฐ์์ ์ ์ํ ๋๋ก tvtk unsigned char ๋ฐฐ์ด์ ์ฌ์ฉํ๊ฑฐ๋
(๋ณด๋ค
http://stackoverflow.com/questions/19431099/how-to-directly-set-rgb-rgba-colors-in-mayavi,
ํน์ ๋ง์ผ๋น ์์ค์ ๊ฒฝ์ฐ ๋ณต์กํจ)
๋๋ ๊ฐ๋ฅํ ๋ชจ๋ RGB ๊ฐ์ ๋ณด์ ํ๋ ํฐ ์์ํ๋ฅผ ์ค์ ํ์ฌ.
(์ฌ์ฉ์ eqzx์ ๋ต๋ณ ์ฐธ์กฐ,
http://stackoverflow.com/questions/18537172/specify-absolute-colour-for-3d-points-in-mayavi?rq=3
)
2015๋
5์ 15์ผ ๊ธ์์ผ ์คํ 1์ 26๋ถ, Cliff Kerr [email protected]
์ผ๋ค:
๋น ๋ฅธ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ๋ถํํ๋, ๊ทธ๊ฒ์ ์ฃผ์ ์ ํ ์ฌํญ์ ๋๋ค.
๊ณผํ์ ๋ฐ์ดํฐ๋ฅผ ํ๋กฏํ๋ Mayavi์ ๋ฅ๋ ฅ์ ๋ํ ์ฉ์ด(์: ์ด ์ค๋ ๋ ์ฐธ์กฐ
http://stackoverflow.com/questions/18537172/specify-absolute-colour-for-3d-points-in-mayavi,
"๋๋ ํ์ ์๋ฆฌ๋ฅผ ์ก๊ณ ์ธ๊ธฐ ์์ํ๋ค.
API์ ๋ช ํํ/๊ธฐ๋ณธ ์ฌ์ฉ์ ์ ์ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ์๊ฒ ๋ ํ
์์", ๋ด ๋๋์ ์ ํํ๊ฒ ์์ฝํฉ๋๋ค!). ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
VTK์์ ๊ฐ๋ฅ(์: ์ด
http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/ColoredPoints),
Mayavi๋ก ๋ฒ์ญํ๋ ๊ฒ์ ์ฝ์ง ์์ ์ ์์ต๋๋ค.โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/enthought/mayavi/issues/92#issuecomment -102463748.
๊ทธ ๋ต๋ณ ์ค ์ด๋ ๊ฒ๋ ์ค์ ๋ก ๋ด๊ฐ ์ํ๋ ๊ฒ์ํ์ง ๋ชปํ์ง๋ง ๋ง์นจ๋ด ๊ทธ๊ฒ๋ค์ ๊ฒฐํฉํ์ฌ ์์ ๋์ต๋๋ค. :)
# Imports
import numpy as np
from mayavi.mlab import quiver3d, draw
# Primitives
N = 200 # Number of points
ones = np.ones(N)
scalars = np.arange(N) # Key point: set an integer for each point
# Define color table (including alpha), which must be uint8 and [0,255]
colors = (np.random.random((N, 4))*255).astype(np.uint8)
colors[:,-1] = 255 # No transparency
# Define coordinates and points
x, y, z = colors[:,0], colors[:,1], colors[:,2] # Assign x, y, z values to match color
pts = quiver3d(x, y, z, ones, ones, ones, scalars=scalars, mode='sphere') # Create points
pts.glyph.color_mode = 'color_by_scalar' # Color by scalar
# Set look-up table and redraw
pts.module_manager.scalar_lut_manager.lut.table = colors
draw()
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ทธ ๋ต๋ณ ์ค ์ด๋ ๊ฒ๋ ์ค์ ๋ก ๋ด๊ฐ ์ํ๋ ๊ฒ์ํ์ง ๋ชปํ์ง๋ง ๋ง์นจ๋ด ๊ทธ๊ฒ๋ค์ ๊ฒฐํฉํ์ฌ ์์ ๋์ต๋๋ค. :)