LoginSignup
4
3

More than 3 years have passed since last update.

Mayaviでvtkファイルを可視化してみた@GoogleColaboratory

Posted at

はじめに:walking_tone1:

先日オープンCAEシンポジウムでGetFEM++のトレーニングの講師をやらせていただきました:beginner:

このトレーニングでは、環境構築によるトラブルを避けるためGoogleColaboratoryを使用してオンラインで作業をしました:globe_with_meridians:

この資料を作る際、vtkの解析結果をmayavi2と呼ばれる可視化ツールを使用してGoogleColaboratory上に画像として出力しています:bar_chart:
image.png
この画像を作る際、トラブルシューティングが必要であったため、ここで紹介します:raised_hand:

インストール:hatching_chick:

GoogleColaboratoryを開き以下のコマンドでインストールをします。簡単ですね:relaxed:

!pip install mayavi

コマンド実行

:warning:mayavi2の実行にはディスプレイ:desktop:環境が必要です。Google Colaboratoryではディスプレイ環境が提供されていないので仮想ディスプレイを設定します。

!apt-get -qq -y install xvfb
!pip install pyvirtualdisplay

インストール後、以下のように仮想ディスプレイを作成します。

import os
from pyvirtualdisplay import Display
display = Display(visible=0, size=(1024, 480))
display.start()
os.environ["DISPLAY"] = ":" + str(display.display) + "." + str(display.screen)

メッシュ画像を表示するため、先にファイルmesh.vtkをColaboratory上にアップロードしておきます。

!mayavi2 --offscreen -d mesh.vtk -m Axes -f ExtractEdges -m Surface \
-s "scene.save('mesh.png', size=(700, 500))"

mayaviはコマンドラインに便利なオプションがついています。そのため、簡単なプロットであれば、コマンドラインのみで実行可能です。オプションの詳細についてはこちらを参照してください:writing_hand:

:warning:ただし、今の状態でmayaviを実行するとエラーが発生します。

IOError: [Errno 2] No such file or directory: '/tmp/.enthought/mayavi_e3/mayavi.log'

ログファイルのファイルかディレクトリが存在しないというエラーですので、先に作成をしてから実行します。

!mkdir /tmp/.enthought
!mkdir /tmp/.enthought/mayavi_e3

ユーザーがログファイルのフォルダを作成するのはスマートではないので、mayavi2のリポジトリにプルリクエストを作成しました。


実行後、再度mayaviを実行すると画像ファイル mesh.png が作成されます。この画像をGoogle Colaboratory上に表示すれば、メッシュを可視化することができます。
from IPython.display import Image, display_png
display_png(Image("mesh.png"))

image.png

Python:snake:を使った可視化

mayaviのmlab pipelineを使えばpythonでvtkを可視化することもできます。ただし、Python3でのプロットではエラーが発生しているため現在調査中です:dizzy_face:Python2では問題なく動作していたため、Python3特有の問題と予想しています。

まとめ

GoogleColaboratoryでmayavi2を使うのはトラブルが多そうです:dizzy_face:一方でmayavi2は3次元の可視化の機能が充実したvisualizerですので問題を解決すれば可能性が広がると思います:relieved:

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3