OctoPrintを導入して3Dプリンターの稼働率が上がってきました。
このOctoPrintにはプラグインを追加することができるのですがこのプラグインの開発を色々な方がやっており、プラグインを追加することでOctoPrintを機能アップすることができます。
その中で特に興味を引いたタイムラプス撮影を行えるプラグイン「Octolapse」を導入して使ってみたので紹介します。(当たり前ですがタイムラプス撮影を行うためにはカメラが必要です)
タイムラプスとは
タイムラプスについて検索すると「低速度撮影」のウィキペディアが出てきます。
低速度撮影(ていそくどさつえい)とは高速度撮影とは逆にカメラの回転速度を低くして、撮影するコマ数を24枚/秒(ビデオの場合には30枚/秒)より少なくして撮影する技法。
ウィキペディア「低速度撮影」
この「低速度撮影」のページに「タイムラプス」についての項目があります。
静止画をつないで、動画に見せるものを特に「タイムラプス」写真(Time-lapse photography)という。
ウィキペディア「低速度撮影」の「タイムラプス」項目
つまり時間のかかる様子の静止画をつなぎ合わせて動画にしたものが「タイムラプス」となります。
USBカメラを接続
タイムラプス撮影にはカメラが必須なのでカメラを接続します。
僕の環境はRaspberry Pi 2にOctoPiを導入しています。
Raspberry Piには専用のカメラデバイスが有りますが、僕は持っておらず、代わりにUSBカメラを持っているのでこのUSBカメラを使う事にします。
Raspberry PiにUSBカメラを接続するとすぐに認識してくれ、OctoPrintへアクセスして「Control」タブを開くとUSBカメラの映像を確認することができます。

プラグイン「Octolapse」について
OctoPrintのアドインの中でタイムラプス撮影ができる物に「Octolapse」があります。
このプラグインの特徴は時間毎の撮影ではなく、1層出来上がるたびに撮影を行ってくれるので、出来上がる動画がなめらかになります。
更に撮影のタイミングでヘッドが撮影の邪魔にならないように移動してくれるため、動画の中でヘッドが邪魔して印刷の様子が見えなくなることがありません。
その反面、ヘッドの移動にはGコードがその様に書いてある必要があるため、スライサーの出力時にOctolapse用にGコードを改変して出力する設定が必要になります。
また、1層毎にヘッドの移動が追加されるため、印刷時間がその分だけ延びます。
「Octolapse」の導入
「Octolapse」を「OctoPrint」へ導入する方法について紹介します。
プラグインを追加するにはSettingsにて操作が必要です。
OctoPrint画面右上のレンチマークからSettingsをクリックしてSettings画面に移動できます。

レンチマークをクリックすると「OctoPrint Settings」画面が表示されます。

「Plugin Manager」を選択すると「Installed Plugins」画面が表示されます。

プラグインが多すぎてすべてのプラグインが表示されないので「Get More…」をクリックして表示されていないプラグインをすべて表示させます。
「Get More…」をクリックすると「Install new Plugins…」画面が表示されます。

「Search…」でプラグインの文字列検索ができます。
「Octolapse」と入力するとプラグイン「Octolapse」が表示されます。

「Install」ボタンをクリックするとOctolapseのインストールが始まります。

しばらくするとOctolapseのインストールが完了します。

完了と同時に再起動を促すメッセージが表示されます。

「Restart now」をクリックすると再起動の確認メッセージが表示されます。

「Proceed」をクリックするとOctoPrintが再起動します。
再起動後にOctoPrintへアクセスするとヘッダーに「OCTOLAPSE」、タブに「Octolapse」が追加されました。

「OctoPrint」の設定
プラグイン「Octolapse」のインストールが出来たので次は設定について紹介します。
OctoPrintに追加されたヘッダーの「OCTOLAPSE」またはタブの「Octolapse」をクリックすると「Octolapse」画面が表示されます。

「Timelapse Preview」にはまだ何も撮影していないのでその説明が表示されます。
プレビューの下はカメラの設定ですが既に繋いでいたUSBカメラが自動で認識してくれたので設定不要でした。
「Videos and Images…」ボタンの先は映像と画像の設定になります。
「Videos and Images…」をクリックすると「Videos and Images」画面が表示されます。

目的はタイムラプスなので「Timelapse」が選択されていることを確認して画面を閉じます。
「Octolapse」の画面に戻ってきます。

Printerの項目で3Dプリンターの設定を追加します。
Printerの「+」をクリックすると「Add New Printer Profile」画面が表示されます。

まずは「Name」に名前を入力します。
3Dプリンターの機種名が分かりやすくて良いと思います。(僕は「EasyThreed X1」なのでそのまま名前にしました)
EasyThreed X1であればこれ以外の設定は不要です。(機種によってはここでの設定が必要になる場合があります)
この後にスライサー(Cura)の設定で必要になるため、「Current Slicer Settings」の項目のスライサーに合った「THIS GUIDE」をクリックしておきます。(僕はCuraを使っているためCura側(上側)の「THIS GUIDE」をクリックしました)
「Add New Printer Profile」画面での設定はこれで完了です。
「Save」をクリックすると設定が保存されて「Octolapse」画面に戻ります。

戻るとPrinterが先ほど設定した名前になっています。
他の項目も必要が有れば変更します。
僕は撮影時のヘッダ位置をEasyThreed X1のホーム位置にしたかったので「Stabilization」を「Back Right」に変更しました。(これは3Dプリンターやカメラの配置から決めると良いです)
ここまででOctoPrint側の設定はすべて終わりました。
※スライサーに合った「THIS GUIDE」をクリックして開いたページはそのまま開いておいてください。
「Cure」の設定
僕はスライサーに「Cure」を使っています。
そのため、ここではOctolapse用のCure設定について紹介します。
「プラグイン「Octolapse」について」で説明しましたが「Octolapse」は撮影時にヘッドを移動するGコードにする必要があるため、Octolapse用に設定すると必ず撮影時のヘッド移動が組み込まれてしまいます。
今後3Dプリンターで印刷する物はすべてタイムラプス撮影を行う場合には現状の設定をそのまま改変すれば良いのですが使い分けが必要な場合であれば現状の設定はそのままでOctolapse用の設定を別途準備した方が良いです。(ただし、3Dプリンター自体の設定変更が必要になった場合には両方対応する必要が出てくるので管理が煩雑にはなりやすいです)
使い分ける場合には現状の設定と同じ設定をもう1つ作っておきます。(使い分けない場合は不要)
Octolapse用のGコード追加スクリプトを反映させるには「「OctoPrint」の設定」で「Current Slicer Settings」の項目で「Cure」に合った「THIS GUIDE」のリンク先に記載されています。
そこに書かれている手順に沿って行っていきます。
ページの真ん中あたりの「If you are using Cura follow these steps」からの手順が「Cure」で使うための手順です。

注意書きにある通り、バージョンが3.x未満の場合は前提から外れてしまうのでバージョンアップが必要です。
また、バージョンによって設定方法が異なるため、まずはバージョン情報を確認します。
「Cure」の[Help]-[About…]をクリックするとバージョン情報が表示されます。

このバージョンを控えておきましょう。

プリンターの設定を行うためにメニューからプリンターの設定が面を呼び出します。

[Settings]-[Printer]-[Manage Printers…]をクリックするとPreferences画面が表示されます。(自動でPrintersが選択された状態になります)
手順通りであれば該当のプリンター設定を選択して「Machine Settings」をクリックするのですが既存の設定は変更したくないため、既存は「Octolapse」非対応用、新規で「Octolapse」対応用とします。(分ける必要が無ければ「Machine Settings」で既存を変更して問題ありません)

「Add」をクリックして既存と同じ設定を作ります。(コピーが出来れば良いのですがありません)
ちなみにEasyThreed X1のCure設定は以下の記事で紹介しています。
プリンターの設定が一通り終わったらバージョンに合ったリンクをクリックして追加するスクリプトを表示させます。

表示されたスクリプトすべてをコピーしておきます。
※マルチマテリアルやマルチエクストルーダーの場合は更に設定が必要なようなので該当する内容を確認して対応が必要になりそうです。

コピーしたスクリプトはプリンター設定の「Start G-code」の先頭に貼り付けます。

EasyThreed X1のデフォルトでは「G28 ;Home」が先頭なので改行を入れて先頭になるようにスクリプトを貼り付けます。

これでOctolapse対応のGコードをCureから作成する事ができるようになりました。
タイムラプス付きプリントの仕方
Octolapseを設定したCuraを使ってタイムラプス付きプリントの流れを紹介します。
プリンターの種類をOctolapseのスクリプトを追加した物に変えたら後はいつも通りの手順でGコードを生成します。

今回試した物はお馴染みベンチ船です。
スライスして出来たGコードをOctoPrintへアップロードします。

アップロードができたら今まで通りプリントを開始します。

「Octolapse」のスクリプトを含むGコードが読み込まれると「Snapshot Plan Preview」(Octolapseの撮影時のヘッド位置確認)画面が表示されます。(「Stabilization」で設定した場所がデフォルトとなります)
調整する場合にはこの画面上で修正する事ができます。
「Accept and Continue」をクリックすると「Snapshot Plan Preview」画面が閉じ、Octolapseの画面に戻り印刷が開始されます。

印刷が進み、撮影をする度にSnapshot Countが増え、「Timelapse Preview」にそれまで撮影したまでのタイムラプス映像のプレビューが見れます。
印刷が完了しました。

Snapshot Countの値がスライサーでスライスした層の数と一致するはずです。
タイムラプス映像はOctoPrint内に保存されているので「Videos and Images…」でダウンロードできます。
「Videos and Images…」をクリックすると「Videos and Images」画面が表示されます。

今まで撮影した一覧が表示されるのでActionのダウンロードアイコンでダウンロードする事ができます。(夕方から印刷を開始してしまったので前半以外は暗くてどうなっているかわからなかったですorz)
翌日の朝から再度実行して今度は明るい状態で撮影できました。
まとめ
OctoPrint、スライサーソフトの両方に設定が必要になるので面倒くさいですが造形物とその作業動画という2つの作品が一度に作れるようになります。
印刷時間は長くなってしまいますが3Dプリンターのタイムラプス撮影をしてみたい方は挑戦してみてはいかがでしょう?
僕の環境では夜でも撮影が出来るように照明が必要ですがさて、どうしたものかな・・・
コメント