Mayavi: ํŒŒ์ดํ”„๋ผ์ธ ์ˆ˜์ • ์‹œ VTK ๊ฒฝ๊ณ 

์— ๋งŒ๋“  2011๋…„ 04์›” 17์ผ  ยท  13์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: enthought/mayavi

Maik Beckmann์˜ ๋ณด๊ณ :

์ด ์ฝ”๋“œ

 enthought.mayavi ๊ฐ€์ ธ์˜ค๊ธฐ mlab์—์„œ

 pts = mlab.points3d([0,1], [0,1], [0,1])
 pts.mlab_source.set(x=[0,2])

์ž‘๋™ํ•˜์ง€๋งŒ ์ œ๊ณต

 ์˜ค๋ฅ˜: /build/src/VTK/Filtering/vtkExecutive.cxx, 756ํ–‰
 vtkStreamingDemandDrivenPipeline(0x59b4900): ์•Œ๊ณ ๋ฆฌ์ฆ˜
 vtkAssignAttribute(0x59bd8a0)๊ฐ€ ์š”์ฒญ์— ๋Œ€ํ•œ ์‹คํŒจ๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
 vtk์ •๋ณด(0x5ad6c60)
 ๋””๋ฒ„๊ทธ: ๋„๊ธฐ
 ์ˆ˜์ •๋œ ์‹œ๊ฐ„: 818743
 ์ฐธ์กฐ ํšŸ์ˆ˜: 1
 ๋“ฑ๋ก๋œ ์ด๋ฒคํŠธ: (์—†์Œ)
 ์š”์ฒญ: REQUEST_DATA_OBJECT
 ALGORITHM_AFTER_FORWARD:

์—ฌ๊ธฐ์„œ ์ด๊ฒƒ์€ vtkExecutive.cxx์˜ ๋ฐฉ์ถœ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.
vtkExecutive::CallAlgorithm(...)

 ...
 // ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‹คํŒจํ•œ ๊ฒฝ์šฐ ์ง€๊ธˆ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.
 ๋งŒ์•ฝ(!๊ฒฐ๊ณผ)
 {
 vtkErrorMacro("์•Œ๊ณ ๋ฆฌ์ฆ˜ " << this->์•Œ๊ณ ๋ฆฌ์ฆ˜->GetClassName()
 << "(" << this->์•Œ๊ณ ๋ฆฌ์ฆ˜
 << ") ์š”์ฒญ์— ๋Œ€ํ•œ ์‹คํŒจ ๋ฐ˜ํ™˜: "
 << *์š”์ฒญ);
 }
 ...

vtk์— ์˜ํ•ด ์˜ค๋ฅ˜๋กœ ๋ณด๊ณ ๋˜์—ˆ์ง€๋งŒ ์•„๋ฌด ๊ฒƒ๋„ ์†์ƒ๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” ๋ช‡ ๊ฐ€์ง€๋ฅผ ์‹œ๋„ํ•˜๊ณ  ๋‹ค๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ธ์‡„๋ฉ๋‹ˆ๋‹ค.
plt = mlab.points3d(x, y, z)

๊ทธ๋Ÿฌ๋‚˜ ๋„ค ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜("์Šค์นผ๋ผ")๋ฅผ ์„ค์ •ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
plt = mlab.points3d(x, y, z, np.ones_like(x))

๊ธ€๋ฆฌํ”„์˜ ํฌ๊ธฐ๋Š” 'scale_mode' ๋ฐ 'scale_factor' ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  13 ๋Œ“๊ธ€

์ด์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด๋‚˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ณง ์ถœ์‹œ๋  ๋ฐ๋ชจ์—์„œ Mayavi๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋Š” ๋ฐ๋ชจ์˜ ์•„๋ฆ„๋‹ค์›€์„ ํฌ๊ฒŒ ๋–จ์–ด๋œจ๋ฆฌ๋Š” ์š”์†Œ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋‚˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ •ํ™•ํžˆ ๊ฐ™์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ?

์ •ํ™•ํžˆ ๊ฐ™์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ?

์ƒˆ๋กœ์šด VTK๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Mayavi์˜ ํŒŒ์ดํ”„๋ผ์ธ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํŒŒ์ดํ”„๋ผ์ธ ์„ค๊ณ„. ๋‚˜๋Š” ๋ฉฐ์น , ์•„๋งˆ๋„ ์ผ์ฃผ์ผ์— ์ผ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
Prabhu์˜ ์ž‘์—…๋Ÿ‰๊ณผ ๋‚ด ์ž‘์—…๋Ÿ‰์„ ๊ฐ์•ˆํ•  ๋•Œ ๊ทธ ์‹œ๊ฐ„์„ ์ฐพ๊ธฐ๊ฐ€ ์•ฝ๊ฐ„ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์€ +1์ž…๋‹ˆ๋‹ค.

์ž„์‹œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•, ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋กœ๊ทธ ํŒŒ์ผ๋กœ ๋ฆฌ๋””๋ ‰์…˜:

import vtk
output=vtk.vtkFileOutputWindow()
output.SetFileName("log.txt")
vtk.vtkOutputWindow().SetInstance(output)

ํ˜„์žฌ Mayavi๋กœ ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@GaelVaroquaux , @prabhuramachandran : ๋‘˜ ์ค‘

์ˆ˜์ •์„ ์œ„ํ•ด +1

์ˆ˜์ •์„ ์œ„ํ•ด +1

์ˆ˜์ •์„ ์œ„ํ•ด +1

์•„์ง ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์•„์ง ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ •์„ ์œ„ํ•ด +1.

๋‚˜๋Š” ๋ช‡ ๊ฐ€์ง€๋ฅผ ์‹œ๋„ํ•˜๊ณ  ๋‹ค๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ธ์‡„๋ฉ๋‹ˆ๋‹ค.
plt = mlab.points3d(x, y, z)

๊ทธ๋Ÿฌ๋‚˜ ๋„ค ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜("์Šค์นผ๋ผ")๋ฅผ ์„ค์ •ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
plt = mlab.points3d(x, y, z, np.ones_like(x))

๊ธ€๋ฆฌํ”„์˜ ํฌ๊ธฐ๋Š” 'scale_mode' ๋ฐ 'scale_factor' ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” solarjoe์˜ ์†”๋ฃจ์…˜์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ž๋™ ์Šค์นผ๋ผ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

rambalachandran picture rambalachandran  ยท  9์ฝ”๋ฉ˜ํŠธ

rahulporuri picture rahulporuri  ยท  3์ฝ”๋ฉ˜ํŠธ

relyativist picture relyativist  ยท  16์ฝ”๋ฉ˜ํŠธ

igamenovoer picture igamenovoer  ยท  7์ฝ”๋ฉ˜ํŠธ

Kekushke picture Kekushke  ยท  9์ฝ”๋ฉ˜ํŠธ