Mayavi: μ „κ²½ 개체의 잘λͺ»λœ μˆœμ„œ(잘λͺ»λœ 개체 κ°€μ‹œμ„±)

에 λ§Œλ“  2018λ…„ 06μ›” 21일  Β·  27μ½”λ©˜νŠΈ  Β·  좜처: enthought/mayavi

μ €λŠ” 3D λΉ„μ£Όμ–Όλ¦¬μ œμ΄μ…˜μ— λŠ₯μˆ™ν•˜μ§€ μ•Šκ³  이것이 λ§ˆμ•ΌλΉ„ λ¬Έμ œμΈμ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ(잘λͺ»λœ λ‚˜λ¬΄λ₯Ό μ§–λŠ” 경우 μ‚¬κ³Όν•©λ‹ˆλ‹€) λ‹€μŒκ³Ό 같은 예기치 μ•Šμ€ λ™μž‘μ„ κ΄€μ°°ν–ˆμŠ΅λ‹ˆλ‹€.

ν™˜κ²½:

conda, anaconda 3, conda λŒ€μ‹  pip install mayavi vtk pyqt5 μ‚¬μš©ν•˜μ—¬ mayaviλ₯Ό μ„€μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€(#652와 μœ μ‚¬ν•œ λ¬Έμ œκ°€ λ°œμƒν•œ ν›„).

Debian 4.9.88-1+deb9u1 (2018-05-07) x86_64 GNU/Linux
Name: mayavi
Version: 4.6.0
Name: vtk
Version: 8.1.0
Location: /home/xxxyyy/anaconda3/envs/ELA/lib/python3.6/site-packages

λ ˆν”„λ‘œ

# example from https://stackoverflow.com/a/10740780
from mayavi import mlab
import numpy as np

# Generate some random hypocenters
x, y, z, mag = np.random.random((4, 500))

# Make a curved well bore...
wellx, welly, wellz = 3 * [np.linspace(0, 1.5, 10)]
wellz =  wellz**2

# Plot the hypocenters, colored and scaled by magnitude
mlab.points3d(x, y, z, mag)

# Plot the wellbore
mlab.plot3d(wellx, welly, wellz, tube_radius=0.1)

mlab.show()

μœ μƒ‰ 곡은 νšŒμƒ‰ νŒŒμ΄ν”„λ₯Ό λ‘˜λŸ¬μ‹Έκ³  κ·Έ 일뢀λ₯Ό μ•„λž˜μ— μˆ¨κ²¨μ•Ό ν•©λ‹ˆλ‹€.
λ‹€λ₯Έ OS-Windows(mayavi 버전 TBC, μ•„λ§ˆλ„ 4.5)μ—μ„œ 이전 λ²„μ „μ˜ mayaviμ—μ„œ μ˜ˆμƒλ˜λŠ” λ™μž‘μ„ μ–»μŠ΅λ‹ˆλ‹€.

incorrect_foreground

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ§€λ‚œ λͺ‡ μ£Ό λ™μ•ˆ Python3을 μ‚¬μš©ν•˜μ—¬ λ™μΌν•œ 문제(잘λͺ»λœ 깊이 μˆœμ„œ λ Œλ”λ§)둜 어렀움을 κ²ͺκ³  있으며 μ—¬κΈ°μ—μ„œλ„ λ‚΄ κ²½ν—˜μ„ κ³΅μœ ν•  것이라고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€(2019-04-15 ν˜„μž¬).

μš°λ¦¬κ°€ 같은 νŽ˜μ΄μ§€μ— 있기 λ•Œλ¬Έμ— λ‚΄κ°€ 보고 μžˆλŠ” 버전은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • λ§ˆμ•ΌλΉ„: 4.6.2
  • νŠΉμ„±: 5.0.0
  • νŠΉμ„±μˆ˜μ΄: 6.0.0
  • vtk: 8.1.2
  • μƒμƒν•˜λ‹€: 4.7.1
  • 파이페이슀: 6.0.0
  • 파이Qt5: 5.12.1
  • PyQt4: 4.11.4(_dpkg_μ—μ„œ)
  • PySide: 1.2.2(_dpkg_μ—μ„œ)
  • νŒŒμ΄μ‚¬μ΄λ“œ2: 5.12.2

Mayavi/VTK/traitsλŠ” 'wx' νˆ΄ν‚· λ˜λŠ” 'qt4' νˆ΄ν‚·μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 'qt4' νˆ΄ν‚·μ„ μ‚¬μš©ν•˜λ©΄ QT APIλ₯Ό μ§€μ •ν•˜λŠ” μΆ”κ°€ μ˜΅μ…˜μ΄ μžˆμŠ΅λ‹ˆλ‹€. 선택 사항은 'pyqt', 'pyqt5', 'pyside' 및 'pyside2'μž…λ‹ˆλ‹€. μ΄λŠ” ν™˜κ²½ λ³€μˆ˜ ETS_TOOLKIT(wx λ˜λŠ” qt4둜 μ„€μ •) 및 QT_API(pyqt, pyqt5, pyside λ˜λŠ” pyside2둜 μ„€μ •, ETS_TOOLKITκ°€ qt4둜 μ„€μ •λœ κ²½μš°μ—λ§Œ 적용 κ°€λŠ₯)둜 μ§€μ •λ©λ‹ˆλ‹€.

Mint 18.3(그리고 μ•„λ§ˆλ„ λͺ¨λ“  Ubuntu 16.04 λ³€ν˜•μ˜ 경우)μ—μ„œ 곡식 Python3은 3.5.2μž…λ‹ˆλ‹€. 일뢀 λͺ¨λ“ˆμ€ apt/dpkgμ—μ„œ μ‚¬μš©ν•  수 μžˆμ§€λ§Œ μΌλΆ€λŠ” pipλ₯Ό μ‚¬μš©ν•˜μ—¬ μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. Python3용으둜 wxPython을 μ„€μΉ˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€. Qtλ₯Ό μ‚¬μš©ν•˜λ©΄ κ²°κ³Όκ°€ λ‹¬λΌμ§‘λ‹ˆλ‹€.

  • ETS_TOOLKIT=qt4 및 QT_API=pyqt : μ˜¬λ°”λ₯΄κ²Œ λ Œλ”λ§λ©λ‹ˆλ‹€.
  • ETS_TOOLKIT=qt4 및 QT_API=pyqt5 : 잘λͺ»λœ μˆœμ„œλ‘œ λ Œλ”λ§
  • ETS_TOOLKIT=qt4 및 QT_API=pyside : μ˜¬λ°”λ₯΄κ²Œ λ Œλ”λ§λ©λ‹ˆλ‹€.
  • ETS_TOOLKIT=qt4 및 QT_API=pyside2 : 잘λͺ»λœ μˆœμ„œλ‘œ λ Œλ”λ§

Mint 19.1(및 μ•„λ§ˆλ„ λͺ¨λ“  Ubuntu 18.04 λ³€ν˜•)의 경우 κ²°κ³Όκ°€ λΉ„μŠ·ν•©λ‹ˆλ‹€. Python3 버전은 3.6.7μž…λ‹ˆλ‹€. μ—¬κΈ°μ—μ„œ pip3으둜 wxPython(4.0.1)을 μ„€μΉ˜ν•  수 μžˆλ‹€λŠ” 점을 μ œμ™Έν•˜κ³  λͺ¨λ“  λͺ¨λ“ˆμ€ 이전과 λ™μΌν•©λ‹ˆλ‹€. 이 경우 ETS_TOOLKIT=wxλ₯Ό μ„€μ •ν•˜λ©΄ μ˜¬λ°”λ₯Έ 깊이 μˆœμ„œκ°€ μ œκ³΅λ©λ‹ˆλ‹€. qt4 νˆ΄ν‚·μ˜ 경우 κ²°κ³ΌλŠ” Mint 18.3 결과와 λ™μΌν–ˆμŠ΅λ‹ˆλ‹€(즉, pyqt 및 pysideλŠ” μ˜¬λ°”λ₯΄κ²Œ λ Œλ”λ§λ˜μ—ˆμ§€λ§Œ pyqt5 및 pyside2λŠ” 그렇지 μ•ŠμŒ).

μ†ŒμŠ€μ—μ„œ PySide2λ₯Ό μ»΄νŒŒμΌν•˜λ €κ³  μ‹œλ„ν–ˆκ³  μ»΄νŒŒμΌν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ Œλ”λ§μ€ μ—¬μ „νžˆ β€‹β€‹μž˜λͺ»λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ pyenvλ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹€μ–‘ν•œ λ²„μ „μ˜ Python3(특히 3.5.2 및 3.7.3)을 ν…ŒμŠ€νŠΈν•΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€. 두 경우 λͺ¨λ‘, 곡식 PySide μ½”λ“œκ°€ 3.4 μ΄μƒμ˜ Python 버전을 μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점을 μ œμ™Έν•˜κ³ λŠ” pip3을 톡해 ν•„μš”ν•œ λͺ¨λ“ˆμ„ μ„€μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. PyQt5와 λ§ˆμ°¬κ°€μ§€λ‘œ PySide2λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‘˜ λ‹€ μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. wxPython을 μ»΄νŒŒμΌν•  수 μ—†μŠ΅λ‹ˆλ‹€.

이쯀 되면 VTK λ¬Έμ œκ°€ μ•„λ‹ˆλΌ QT λ¬Έμ œκ°€ μ•„λ‹κΉŒ(μ§€κΈˆμ€ wxPython을 ν¬κΈ°ν–ˆλ‹€). ν•˜μ§€λ§Œ μ΄μƒν•˜κ²Œλ„ λ‚΄ μ—…λ¬΄μš© λ…ΈνŠΈλΆ(Mint 18.3 포함)μ—μ„œ pyenvλ₯Ό μ‚¬μš©ν•˜μ—¬ Python 3.7.3을 μ‹€ν–‰ν–ˆκ³  이 경우 깊이 μˆœμ„œ κ°€ PyQt5 λ˜λŠ” PySide2λ₯Ό μ‚¬μš©ν•˜μ—¬ μ˜¬λ°”λ₯΄κ²Œ λ Œλ”λ§

λ§ˆμ§€λ§‰μœΌλ‘œ VirtualBox(xfceκ°€ ν¬ν•¨λœ Mint 19.1)둜 λͺ‡ 가지 ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” μ—¬μ „νžˆ λ‹€λ₯Έ 쑰합을 μ‹œλ„ν•˜κ³  μžˆμ§€λ§Œ μ§€κΈˆκΉŒμ§€ κ²°κ³ΌλŠ” λ™μΌν•©λ‹ˆλ‹€. (glxinfoλŠ” OpenGL/GLX λ“œλΌμ΄λ²„λ₯Ό SGI둜 λ³΄κ³ ν•©λ‹ˆλ‹€).

λͺ¨λ“  27 λŒ“κΈ€

'지ꡬ본' μ£Όμœ„μ— 배치된 plot3d ν¬μΈνŠΈμ™€ λ™μΌν•œ λ¬Έμ œκ°€ μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

    sphere = mlab.points3d(0, 0, 0, scale_mode='none',
                           scale_factor=2,
                           # color=(0.67, 0.77, 0.93),
                           color=ocean_blue,
                           resolution=50,
                           opacity=.85,
                           name='Earth')
    #
    # These parameters, as well as the color, where tweaked through the GUI,
    # with the record mode to produce lines of code usable in a script.
    sphere.actor.property.specular = 0.45
    sphere.actor.property.specular_power = 5
    # Backface culling is necessary for more a beautiful transparent
    # rendering.
    sphere.actor.property.backface_culling = True

pyqt/pyside λ°±μ—”λ“œμ˜ 경우 +1, [email protected] 및 [email protected]을 μ‚¬μš©ν•˜μ—¬ λ°λΉ„μ•ˆ μŠ€νŠΈλ ˆμΉ˜μ—μ„œ ν…ŒμŠ€νŠΈ

이것은 VTK의 일반적인 문제이며 #574 및 #491μ—μ„œ 이전에 λ‚˜νƒ€λ‚¬μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 이것을 νƒμƒ‰ν•˜κ±°λ‚˜ 해결책을 찾을 μ‹œκ°„μ΄ μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

@jmp75 저도 같은 λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μ–΄λ–€ λ²„μ „μ˜ mayaviκ°€ μž‘λ™ν•˜λŠ”μ§€ 확인해 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

@lhvalentini λ‚˜λŠ” 이것을 Mayavi 4.5.0 및 vtk 6.3.0 νŒ¨ν‚€μ§€μ™€ ν•¨κ»˜ Windows 10μ—μ„œ Anaconda 2(python 2.7.15)λ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘λ™ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ—¬λŸ¬λΆ„, 이것이 뢈투λͺ…λ„μ˜ 문제라면 그것은 λ‹€λ₯Έ λ¬Έμ œμž…λ‹ˆλ‹€.

OPs μ½”λ“œλ₯Ό μ‹œλ„ν–ˆλŠ”λ° μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€. 이것이 OS κ΄€λ ¨ 문제인 경우 VTK 8.1.1 및 λ§ˆμŠ€ν„°μ˜ Mayaviκ°€ μžˆλŠ” Mac OS μ»΄ν“¨ν„°μ—μ„œ ν™•μ‹€νžˆ 보기에 λ“œλΌμ΄λ²„μ— λ¬Έμ œκ°€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ Mayaviμ—μ„œ λ³€κ²½λœ 사항이 μžˆλŠ”μ§€ μ˜μ‹¬λ©λ‹ˆλ‹€.

@prabhuramachandran (a) κ·Όλ³Έ 원인을 λΆ„λ¦¬ν•˜κΈ° μœ„ν•΄ μΆ”κ°€ 진단이 κ°€λŠ₯ν•œμ§€ ν™•μΈν•˜κ² μŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ mayaviλŠ” λ¬Έμ œκ°€ ν•΄κ²°λ˜μ–΄μ•Ό ν•˜λŠ” μœ„μΉ˜κ°€ 아닐 κ°€λŠ₯성이 λ†’μ§€λ§Œ 도움이 λ˜λŠ” ν•­λͺ©μ„ 가리킬 수 μžˆλŠ” 경우 이 μŠ€λ ˆλ“œμ—μ„œ 보고할 κ²ƒμž…λ‹ˆλ‹€.

RHEL 7, PyQt5 및 Mayavi 4.6.2μ—μ„œ 문제λ₯Ό μž¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€(μœ„μ˜ 컬러 λ³Ό 예제 μ‚¬μš©). PyQt5λ₯Ό μ œκ±°ν•˜κ³  wxPython을 μ„€μΉ˜ν•˜μ—¬ μ˜¬λ°”λ₯΄κ²Œ μž‘λ™ν•˜λ„λ‘ λ§Œλ“€ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λΆˆν–‰νžˆλ„ PyQt5κ°€ ν•„μš”ν•©λ‹ˆλ‹€. μž‘μ—… 쀑인 두 컴퓨터 쀑 ν•˜λ‚˜μ—μ„œ VirtualGL(μ—¬μ „νžˆ RHEL 7, PyQt5 및 Mayavi 4.6.2 μ‚¬μš©)μ—μ„œ μ‹€ν–‰ν•  수 있으며 λ¬Έμ œκ°€ μ‚¬λΌμ§‘λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ‹€λ₯Έ μ‹œμŠ€ν…œ(ν”„λ‘œλ•μ…˜ μ‹œμŠ€ν…œ)μ—μ„œ VirtualGL둜 인해 Mayaviκ°€ μΆ©λŒν•©λ‹ˆλ‹€.

PyQt5λ₯Ό μ‚¬μš©ν•  λ•Œ 이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 방법에 λŒ€ν•œ μ œμ•ˆ 사항이 μžˆμŠ΅λ‹ˆκΉŒ?

PyQt5μ—μ„œλŠ” 문제λ₯Ό μž¬ν˜„ν–ˆμ§€λ§Œ wxPythonμ—μ„œλŠ” μž¬ν˜„ν•˜μ§€ μ•Šμ•˜λ‹€λŠ” 사싀이 λ‹¨μ„œλ₯Ό μ œκ³΅ν•©λ‹ˆκΉŒ?

Linux Mint 18, 64λΉ„νŠΈ(Anaconda, Python 3.6, Qt 5.6.2, pyqt 5.6.0, VTK 8.1.1, Mayavi 4.6.2, conda-forgeμ—μ„œ μ„€μΉ˜)에 λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

바닐라 mlab.test_points3d() ν•˜λ©΄ 개체 μˆœμ„œκ°€ μ˜¬λ°”λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

test
test2
μ•žμ„œ μ–ΈκΈ‰ν•œ scene.renderer.use_depth_peeling 및 f.scene.renderer.maximum_number_of_peels μ„€μ •μœΌλ‘œ μ‹€ν—˜μ„ μ‹œλ„ν–ˆμ§€λ§Œ μ„±κ³΅ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.
μ–΄λ–€ 아이디어가 μ΄μœ κ°€ 될 수 μžˆμŠ΅λ‹ˆκΉŒ?

μ—…λ°μ΄νŠΈ. 이 λ¬Έμ œλŠ” Linux의 Qt5 문제처럼 λ³΄μž…λ‹ˆλ‹€. λ‚΄ μš°λΆ„νˆ¬ μ‹œμŠ€ν…œμ—μ„œλŠ” 이것을 λ³Ό 수 μžˆμ§€λ§Œ OS Xμ—μ„œλŠ” λ³Ό 수 μ—†μŠ΅λ‹ˆλ‹€. WindowsλŠ” ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. Qt4 λ°±μ—”λ“œμ—μ„œλŠ” 보이지 μ•ŠμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μš°λ¦¬κ°€ Qt5와 QVTKRenderWindowInteractorλ₯Ό μ‚¬μš©ν•  λ•Œ μ–΄λ–»κ²Œλ“  λ Œλ”λ§μ΄ 엉망인 κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. λ‚˜λŠ” 이 문제λ₯Ό VTK μ‚¬λžŒλ“€μ—κ²Œλ„ μ—…μŠ€νŠΈλ¦ΌμœΌλ‘œ λ³΄κ³ ν–ˆμŠ΅λ‹ˆλ‹€. λ¬Έμ œκ°€ 무엇인지 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

λ™μΌν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. Qt4둜 λ‹€μ‹œ μ΄λ™ν–ˆκ³  λͺ¨λ“  것이 잘 μž‘λ™ν•©λ‹ˆλ‹€.

Qt4κ°€ μžˆλŠ” Linuxμ—μ„œ 이 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€(ipython의 %gui qt4둜 ν™œμ„±ν™”λ¨). Intel Graphics(μ•Œλ €μ§„ λ¬Έμ œμ—μ„œ 이미 μ–ΈκΈ‰ν•œ 것과 κ΄€λ ¨λœ 것)κ°€ 있기 λ•Œλ¬ΈμΌ 수 μžˆμŠ΅λ‹ˆλ‹€.

Qt4도 μ„€μΉ˜ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€. μ–΄λ–»κ²Œ λ“  κ·Έ 전에 μ˜΅μ…˜μ— "qt4"λ₯Ό λ„£μœΌλ©΄ 였λ₯˜ λ©”μ‹œμ§€κ°€ μƒμ„±λ˜μ§€ μ•Šκ³  λŒ€μ‹  Qt5κ°€ μ‚¬μš©λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ’‹μ•„, λ‚˜λŠ” qt4κ°€ λ‚΄ 끝에 μ„€μΉ˜λ˜μ§€ μ•Šμ•˜λ‹€λŠ” 것을 깨닫지 λͺ»ν–ˆμŠ΅λ‹ˆλ‹€ (μ‹€μ œλ‘œ, @ronceray , 그것은 였λ₯˜λ₯Ό μΌμœΌν‚€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€) ...

PyQt 4.12.3이 μ‹€ν–‰λ˜μ§€ μ•Šμ•˜μ§€λ§Œ 버전 4.12.1μ—μ„œ μž‘λ™ν•˜λ„λ‘ ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

PyQt5보닀 훨씬 λŠλ¦¬μ§€λ§Œ 이 μ „κ²½ λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€... λ‹€λ₯Έ κ·Έλž˜ν”½ μΉ΄λ“œλ₯Ό μ„€μ •ν•˜μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€!

Fedora 27 -> Fedora 29μ—μ„œ μ—…κ·Έλ ˆμ΄λ“œ ν•˜κ³  μ΅œμ‹  NVIDIA κ·Έλž˜ν”½ λ“œλΌμ΄λ²„λ₯Ό μ„€μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€ . κ·Έ ν›„, MayaviλŠ” pyqt5λ₯Ό μ‚¬μš©ν•˜μ—¬ μ˜ˆμƒλŒ€λ‘œ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

μ§€λ‚œ λͺ‡ μ£Ό λ™μ•ˆ Python3을 μ‚¬μš©ν•˜μ—¬ λ™μΌν•œ 문제(잘λͺ»λœ 깊이 μˆœμ„œ λ Œλ”λ§)둜 어렀움을 κ²ͺκ³  있으며 μ—¬κΈ°μ—μ„œλ„ λ‚΄ κ²½ν—˜μ„ κ³΅μœ ν•  것이라고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€(2019-04-15 ν˜„μž¬).

μš°λ¦¬κ°€ 같은 νŽ˜μ΄μ§€μ— 있기 λ•Œλ¬Έμ— λ‚΄κ°€ 보고 μžˆλŠ” 버전은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • λ§ˆμ•ΌλΉ„: 4.6.2
  • νŠΉμ„±: 5.0.0
  • νŠΉμ„±μˆ˜μ΄: 6.0.0
  • vtk: 8.1.2
  • μƒμƒν•˜λ‹€: 4.7.1
  • 파이페이슀: 6.0.0
  • 파이Qt5: 5.12.1
  • PyQt4: 4.11.4(_dpkg_μ—μ„œ)
  • PySide: 1.2.2(_dpkg_μ—μ„œ)
  • νŒŒμ΄μ‚¬μ΄λ“œ2: 5.12.2

Mayavi/VTK/traitsλŠ” 'wx' νˆ΄ν‚· λ˜λŠ” 'qt4' νˆ΄ν‚·μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 'qt4' νˆ΄ν‚·μ„ μ‚¬μš©ν•˜λ©΄ QT APIλ₯Ό μ§€μ •ν•˜λŠ” μΆ”κ°€ μ˜΅μ…˜μ΄ μžˆμŠ΅λ‹ˆλ‹€. 선택 사항은 'pyqt', 'pyqt5', 'pyside' 및 'pyside2'μž…λ‹ˆλ‹€. μ΄λŠ” ν™˜κ²½ λ³€μˆ˜ ETS_TOOLKIT(wx λ˜λŠ” qt4둜 μ„€μ •) 및 QT_API(pyqt, pyqt5, pyside λ˜λŠ” pyside2둜 μ„€μ •, ETS_TOOLKITκ°€ qt4둜 μ„€μ •λœ κ²½μš°μ—λ§Œ 적용 κ°€λŠ₯)둜 μ§€μ •λ©λ‹ˆλ‹€.

Mint 18.3(그리고 μ•„λ§ˆλ„ λͺ¨λ“  Ubuntu 16.04 λ³€ν˜•μ˜ 경우)μ—μ„œ 곡식 Python3은 3.5.2μž…λ‹ˆλ‹€. 일뢀 λͺ¨λ“ˆμ€ apt/dpkgμ—μ„œ μ‚¬μš©ν•  수 μžˆμ§€λ§Œ μΌλΆ€λŠ” pipλ₯Ό μ‚¬μš©ν•˜μ—¬ μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. Python3용으둜 wxPython을 μ„€μΉ˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€. Qtλ₯Ό μ‚¬μš©ν•˜λ©΄ κ²°κ³Όκ°€ λ‹¬λΌμ§‘λ‹ˆλ‹€.

  • ETS_TOOLKIT=qt4 및 QT_API=pyqt : μ˜¬λ°”λ₯΄κ²Œ λ Œλ”λ§λ©λ‹ˆλ‹€.
  • ETS_TOOLKIT=qt4 및 QT_API=pyqt5 : 잘λͺ»λœ μˆœμ„œλ‘œ λ Œλ”λ§
  • ETS_TOOLKIT=qt4 및 QT_API=pyside : μ˜¬λ°”λ₯΄κ²Œ λ Œλ”λ§λ©λ‹ˆλ‹€.
  • ETS_TOOLKIT=qt4 및 QT_API=pyside2 : 잘λͺ»λœ μˆœμ„œλ‘œ λ Œλ”λ§

Mint 19.1(및 μ•„λ§ˆλ„ λͺ¨λ“  Ubuntu 18.04 λ³€ν˜•)의 경우 κ²°κ³Όκ°€ λΉ„μŠ·ν•©λ‹ˆλ‹€. Python3 버전은 3.6.7μž…λ‹ˆλ‹€. μ—¬κΈ°μ—μ„œ pip3으둜 wxPython(4.0.1)을 μ„€μΉ˜ν•  수 μžˆλ‹€λŠ” 점을 μ œμ™Έν•˜κ³  λͺ¨λ“  λͺ¨λ“ˆμ€ 이전과 λ™μΌν•©λ‹ˆλ‹€. 이 경우 ETS_TOOLKIT=wxλ₯Ό μ„€μ •ν•˜λ©΄ μ˜¬λ°”λ₯Έ 깊이 μˆœμ„œκ°€ μ œκ³΅λ©λ‹ˆλ‹€. qt4 νˆ΄ν‚·μ˜ 경우 κ²°κ³ΌλŠ” Mint 18.3 결과와 λ™μΌν–ˆμŠ΅λ‹ˆλ‹€(즉, pyqt 및 pysideλŠ” μ˜¬λ°”λ₯΄κ²Œ λ Œλ”λ§λ˜μ—ˆμ§€λ§Œ pyqt5 및 pyside2λŠ” 그렇지 μ•ŠμŒ).

μ†ŒμŠ€μ—μ„œ PySide2λ₯Ό μ»΄νŒŒμΌν•˜λ €κ³  μ‹œλ„ν–ˆκ³  μ»΄νŒŒμΌν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ Œλ”λ§μ€ μ—¬μ „νžˆ β€‹β€‹μž˜λͺ»λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ pyenvλ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹€μ–‘ν•œ λ²„μ „μ˜ Python3(특히 3.5.2 및 3.7.3)을 ν…ŒμŠ€νŠΈν•΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€. 두 경우 λͺ¨λ‘, 곡식 PySide μ½”λ“œκ°€ 3.4 μ΄μƒμ˜ Python 버전을 μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점을 μ œμ™Έν•˜κ³ λŠ” pip3을 톡해 ν•„μš”ν•œ λͺ¨λ“ˆμ„ μ„€μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. PyQt5와 λ§ˆμ°¬κ°€μ§€λ‘œ PySide2λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‘˜ λ‹€ μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. wxPython을 μ»΄νŒŒμΌν•  수 μ—†μŠ΅λ‹ˆλ‹€.

이쯀 되면 VTK λ¬Έμ œκ°€ μ•„λ‹ˆλΌ QT λ¬Έμ œκ°€ μ•„λ‹κΉŒ(μ§€κΈˆμ€ wxPython을 ν¬κΈ°ν–ˆλ‹€). ν•˜μ§€λ§Œ μ΄μƒν•˜κ²Œλ„ λ‚΄ μ—…λ¬΄μš© λ…ΈνŠΈλΆ(Mint 18.3 포함)μ—μ„œ pyenvλ₯Ό μ‚¬μš©ν•˜μ—¬ Python 3.7.3을 μ‹€ν–‰ν–ˆκ³  이 경우 깊이 μˆœμ„œ κ°€ PyQt5 λ˜λŠ” PySide2λ₯Ό μ‚¬μš©ν•˜μ—¬ μ˜¬λ°”λ₯΄κ²Œ λ Œλ”λ§

λ§ˆμ§€λ§‰μœΌλ‘œ VirtualBox(xfceκ°€ ν¬ν•¨λœ Mint 19.1)둜 λͺ‡ 가지 ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” μ—¬μ „νžˆ λ‹€λ₯Έ 쑰합을 μ‹œλ„ν•˜κ³  μžˆμ§€λ§Œ μ§€κΈˆκΉŒμ§€ κ²°κ³ΌλŠ” λ™μΌν•©λ‹ˆλ‹€. (glxinfoλŠ” OpenGL/GLX λ“œλΌμ΄λ²„λ₯Ό SGI둜 λ³΄κ³ ν•©λ‹ˆλ‹€).

VTK ML의 이 μŠ€λ ˆλ“œ λŠ” λ™μΌν•œ 문제λ₯Ό μ–ΈκΈ‰ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. λΆˆν–‰νžˆλ„, 그것은 λ‹΅λ³€λ˜μ§€ μ•Šμ€ μ±„λ‘œ λ‚¨κ²¨μ‘ŒμŠ΅λ‹ˆλ‹€ ...

직감으둜 보고할 κ°€μΉ˜κ°€ μžˆλŠ” λ°λΉ„μ•ˆ λž©ν†±μ—μ„œ 무언가λ₯Ό μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€. 이것은 Debian wiki 에 μ„€λͺ…λœ λŒ€λ‘œ NVIDIA Optimus λ…ΈνŠΈλΆ

짧은 이야기: λ‹€λ₯Έ λͺ¨λ“  것은 λ‚΄κ°€ κ²Œμ‹œν•œ μ›λž˜ ν…ŒμŠ€νŠΈ μŠ€ν¬λ¦½νŠΈμ™€ λ™μΌν•˜μ§€λ§Œ Intel μΉ΄λ“œμ—μ„œλŠ” 잘λͺ» λ Œλ”λ§λ˜μ§€λ§Œ NVIDIA ν•˜λ“œμ›¨μ–΄μ—μ„œλŠ” μ˜¬λ°”λ₯΄κ²Œ λ Œλ”λ§λ©λ‹ˆλ‹€.

ν™˜κ²½(κ΄€λ ¨ νŒ¨ν‚€μ§€):

envisage                  4.7.2                    pypi_0    pypi
mayavi                    4.6.2                    pypi_0    pypi
pyface                    6.0.0                    pypi_0    pypi
pygments                  2.3.1                    pypi_0    pypi
pyqt5                     5.12.2                   pypi_0    pypi
pyqt5-sip                 4.19.17                  pypi_0    pypi
python                    3.6.8                h0371630_0  
traits                    5.1.1                    pypi_0    pypi
traitsui                  6.0.0                    pypi_0    pypi
vtk                       8.1.2                    pypi_0    pypi

optirun λ₯Ό μ‚¬μš©ν•˜λŠ” 방법 은 λ°λΉ„μ•ˆ μœ„ν‚€ λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”. optirun python ~/src/tmp/qtbug.py μ˜¬λ°”λ₯΄κ²Œ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€. μƒ˜ν”Œ 앱을 μ‚¬μš©ν•˜μ—¬ optirun μ—†λŠ” 차이λ₯Ό μ„€λͺ…ν•˜λ €λ©΄ λ‹€μŒμ„ μˆ˜ν–‰ν•˜μ‹­μ‹œμ˜€.

glxgears -info λ°˜ν™˜

GL_RENDERER   = Mesa DRI Intel(R) HD Graphics 630 (Kaby Lake GT2) 
GL_VERSION    = 3.0 Mesa 18.3.4
GL_VENDOR     = Intel Open Source Technology Center

반면 optirun glxgears -info

GL_RENDERER   = Quadro M1200/PCIe/SSE2
GL_VERSION    = 4.6.0 NVIDIA 418.56
GL_VENDOR     = NVIDIA Corporation

μ—¬κΈ° Dell Precision 5520의 Arch Linuxμ—μ„œ 또 λ‹€λ₯Έ 확인 사항을 μΆ”κ°€ν•˜κΈ° μœ„ν•΄ Intel μΉ©μ—μ„œλŠ” λ¬Έμ œκ°€ μ‹€ν–‰λ˜κ³  μžˆμ§€λ§Œ optirun λ₯Ό ν†΅ν•œ nvidia μΉ΄λ“œμ—μ„œλŠ” λ¬Έμ œκ°€ λ°œμƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이것은 λͺ¨λ‘ Arch의 곡식 μ €μž₯μ†Œλ₯Ό 톡해 μ„€μΉ˜λœ Python 3.7, Qt5 및 mayavi와 ν•¨κ»˜μž…λ‹ˆλ‹€.

λ™μΌν•œ 문제둜, PyQt5 λ°±μ—”λ“œλ‘œ Mayaviλ₯Ό μ‹€ν–‰ν•˜λ©΄ Debian Stretchμ—μ„œ Mesa/SGI λ“œλΌμ΄λ²„λ₯Ό μ‚¬μš©ν•˜μ—¬ 잘λͺ»λœ λ Œλ”λ§ μˆœμ„œκ°€ λ°œμƒν•˜μ§€λ§Œ ETS_TOOLKIT=wx ν™˜κ²½ λ³€μˆ˜ μ„ΈνŠΈμ™€ ν•¨κ»˜ μž‘λ™ν•©λ‹ˆλ‹€.

PyQt λŒ€μ‹  wxPython을 μ‚¬μš©ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

이 μŠ€λ ˆλ“œλŠ” 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 맀우 μœ μš©ν–ˆμŠ΅λ‹ˆλ‹€. 의견 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

같은 문제둜 wxμ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ python-pyqt4λ₯Ό μ„€μΉ˜ν•˜κ³  ETS_TOOLKIT=qt4 및 QT_API=pyqt λ₯Ό μ„€μ •ν•˜λ©΄ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μœ„μ—μ„œ μ–ΈκΈ‰ν•œ ꡬ성 쀑 ν•˜λ‚˜μ— λŒ€ν•œ 또 λ‹€λ₯Έ 확인을 μΆ”κ°€ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. μ €λŠ” Ubuntu 18.04λ₯Ό OS둜 μ‚¬μš©ν•˜λŠ” Linux μ»΄ν“¨ν„°μ—μ„œ μž‘μ—…ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ‚΄ μ‹œμŠ€ν…œμ—λŠ” Intel κ·Έλž˜ν”½ μΉ΄λ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” ν•˜μ „ μž…μžμ˜ μ›€μ§μž„μ„ μ• λ‹ˆλ©”μ΄μ…˜ν•˜κΈ° μœ„ν•΄ anaconda3λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ΅œμ’… κ²°κ³ΌλŠ” 쀑심을 ν†΅κ³Όν•˜λŠ” 선이 μžˆλŠ” λ‚˜μ„ μ΄μ–΄μ•Ό ν•©λ‹ˆλ‹€. Mayavi 4.6.2, vtk 8.1.2 및 pyqt 5.9.2κ°€ μžˆλŠ” Python 3.6.8 ν™˜κ²½μ˜ 경우 λ‹€μŒκ³Ό 같이 ν‘œμ‹œλ©λ‹ˆλ‹€.
snapshot
빨간색 선은 잘λͺ»λœ λ‚˜μ„ μ˜ 외뢀에 μžˆλŠ” κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ anaconda3μ—μ„œ μƒˆλ‘œμš΄ Python 3.5 ν™˜κ²½μ„ λ§Œλ“€κ³  λ‹€μŒ μˆœμ„œλ‘œ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€.

conda-forge의 pyqt 4.11.4
pypi의 vtk 8.1.2
conda-forge의 λ§ˆμ•ΌλΉ„ 4.6.2

λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ λ‚΄ μ…Έμ—μ„œ κ΄€λ ¨ λ³€μˆ˜λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.
ETS_TOOLKIT=qt4 내보내기
내보내기 QT_API=pyqt

λ‚΄ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜μ—¬ μ•„λž˜μ™€ 같이 μ˜¬λ°”λ₯Έ λ‹€μ΄μ–΄κ·Έλž¨μ„ μ–»μ—ˆμŠ΅λ‹ˆλ‹€.
snapshot_right .
그것을 μ•Œμ•„ λ‚Έ μœ„μ˜ λͺ¨λ“  λ˜‘λ˜‘ν•œ μ‚¬λžŒλ“€μ—κ²Œ κ°μ‚¬ν•©λ‹ˆλ‹€. 건배!

였늘 일찍 문제λ₯Ό μž¬ν˜„ν•œ ν›„(μœ„μ˜ 컬러 λ³Ό 예제 μ‚¬μš©) λ‹€μŒμ„ ν¬ν•¨ν•˜λŠ” conda ν™˜κ²½μ—μ„œ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

1) 파이썬 3.8.5
2) VTK 9.0.1(whl νŒŒμΌμ„ μ‚¬μš©ν•˜μ—¬ μ„€μΉ˜)
3) pyqt5
4) Mayavi의 μ΅œμ‹  'Bleeding edge' 버전(4.7.3.dev0).

κ·Έλ ‡λ‹€λ©΄ VTK 9κ°€ 이 문제λ₯Ό ν•΄κ²°ν• κΉŒμš”?

pyqt5 및 Mayavi 4.7.2(conda-forgeμ—μ„œ)κ°€ ν¬ν•¨λœ VTK 9.0.1이 이 문제λ₯Ό 해결함을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

예, VTK-9.0.1 및 μ΅œμ‹  Mayaviμ—μ„œ 이 λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŒμ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. VTKκ°€ μˆ˜μ • 사항이 μ‹œμž‘λœ 곳인 것 κ°™μŠ΅λ‹ˆλ‹€. 이전에 μ‹€νŒ¨ν–ˆλ˜ Linux μ‹œμŠ€ν…œμ—μ„œ ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€. 이것은 ν›Œλ₯­ν•©λ‹ˆλ‹€. μ‹ κ³ ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰

κ΄€λ ¨ 문제

dnacombo picture dnacombo  Β·  7μ½”λ©˜νŠΈ

anntzer picture anntzer  Β·  7μ½”λ©˜νŠΈ

ktavabi picture ktavabi  Β·  15μ½”λ©˜νŠΈ

stefanoborini picture stefanoborini  Β·  11μ½”λ©˜νŠΈ

rahulporuri picture rahulporuri  Β·  3μ½”λ©˜νŠΈ