Octaprint. Magic Timelapse. Делаем магию из таймлапса!

Подписаться на 3Dtoday
maelstrom
Идет загрузка
Загрузка
02.12.17
807
11
3D-печать
10
Смотрим, что это такое:

https://www.youtube.com/watch?v=pQCyZu9bUhI


https://www.youtube.com/watch?v=icr_eh0yZKM


Делаем приятные таймлапсы без рывков после каждого слоя. Остановка всегда в одном месте X, Y стола.

Установка

0) Считается что у вас уже настроена web камера для трансляции и записи таймлапсов. У меня камера mobius. Выдает 1280x720 на стрименге. Сервер печати работает на octopi (rp pi3) .

1) Ставим плагин: OctoPrint GCode System Commands
https://github.com/kantlivelong/OctoPrint-GCodeSystemCommands
ставим свою команду (у меня "octo 666";)и соотв-щий ей скрипт.
4bb66b0b3e9618b43fa5901a5536ac9c.png
2) Скрипт запуска скриншота с камеры. Тут надо поменять путь на свой куда будут сохранятся файлы jpg.

#!/bin/sh
cd /home/pi/timelapses
/usr/bin/curl -o `date +%Y%m%d_%H%M%S`.jpg http://127.0.0.1:8080/?action=snapshot2)

3) Модификация GCODE (после CURA) c помощью MATLAB
===========
%gcode modification for magic timelapse 3d rpinter octoprint server
clc
clear

infile='d:\3d_printer\models\Terminator_Mary_Bust\files\mary01.gcode ';
[f_path, f_name, f_ext]=fileparts(infile);
outfile=sprintf('%s\\%s_%s%s',f_path,f_name,'magic_tl',f_ext);
fid=fopen(infile,'r');
fid_out=fopen(outfile,'w');

disp('Reading gcode file...');
all_text_data = textread(infile,'%s','whitespace','\r\n');
disp('Read done!');
number_of_foundlines=0;
position_for_photo='G0 X5 Y30 F7800 ; move the printer to our ideal location for a photo';

for cur_line=1:length(all_text_data)
fprintf(fid_out,'%s\r\n',all_text_data{cur_line});
if strfind(all_text_data{cur_line},' Z')

number_of_foundlines=number_of_foundlines+1;
fprintf(1,'line: %d, layer: %d: %s\n',cur_line,number_of_foundlines,all_text_data{cur_line});
% fprintf(fid_out,'%s\r\n','G92 E0'); %G92 E0 ; reset the filament position counter — this doesn’t move the filament
fprintf(fid_out,'%s\r\n',position_for_photo); %moves to photo position
fprintf(fid_out,'%s\r\n','G4 P2000 ; pause for 2,000ms (2 seconds)');
fprintf(fid_out,'%s\r\n','G4 P1; pause for 1ms — these are here to flush the g-code buffer');
fprintf(fid_out,'%s\r\n','G4 P1');
fprintf(fid_out,'%s\r\n','G4 P1');
fprintf(fid_out,'%s\r\n','G4 P1');
fprintf(fid_out,'%s\r\n','G4 P1');
fprintf(fid_out,'%s\r\n','G4 P1');
fprintf(fid_out,'%s\r\n','G4 P1');
fprintf(fid_out,'%s\r\n','G4 P1');
fprintf(fid_out,'%s\r\n','G4 P1');
fprintf(fid_out,'%s\r\n','OCTO666 ; take a snapshot');
fprintf(fid_out,'%s\r\n','G4 P1000 ; pause for 1 second to let the script execute');
end;
end;
fclose('all');
===============
4) Собираем таймлапс из сохраненных jpg-ов. Можно это сделать автоматом, добавив еще одну комманду в конце запускающую скрипт сборки таймлапса.
у меня он такой:
======================
pi@octopi:~/scripts $ cat ./maketl
#/usr/bin/avconv -i *.jpg video.mp4
rm -f -r ./tmp
mkdir -v ./tmp

a=1
for i in *.jpg; do
new=$(printf "%04d.jpg" "$a";) #04 pad to length of 4

cp -i -- "$i" ./tmp/"$new"
let a=a+1
done
avconv -y -r 25 -i ./tmp/%04d.jpg -r 25 -vcodec libx264 -q:v 1 tl_25fps.mp4;
rm -f -r ./tmp

======================
ps: я еще использую скрипт для постобработки jpg-ов, поправляю уровни, тени, шарпинг и прочее. если надо пишите в коментах, напишу как (c помощью imagemagic)

Что надо доделать:

1) Изменение GCODE на сервере с помощью Python. Или сделать плагин пост опработки на питоне для CURA.
_Тут мне НУЖНА ПОМОЩЬ сообщества_

2) Добавление на картинку времени по дате создания файла, времени печати, сколько осталось
3) Автоматическая сшивка таймлапса, имя файла печати (удаление всем jpeg-ов потом).

Изначально увидел такой подход реализованный как скрипт пост обработки для Slic3r. Источник:
http://www.makermusings.com/2015/09/01/making-time-lapse-video-of-3d-prints/

подписываемся на мою группу в VK: https://vk.com/3d_novosib
Подписаться на 3Dtoday
10
Комментарии к статье

Комментарии

2 Дек 13:11
1
Интересно, но, по-моему, обычный таймлапс, снятый на принтере с Z-столом, выглядит более естественно.
2 Дек 13:41
0
Сама тема достаточно старая, еще в 2014 году этот вопрос предлагалось решить так
Разработчики прошивок услышали эту тему и в дальнейшем в Marlin, а затем и в MK4duo появилась фишка:
/**************************************************************************
*************************** Canon RC-1 Remote ****************************
**************************************************************************
* *
* M240 Triggers a camera by emulating a Canon RC-1 Remote *
* Data from: http://www.doc-diy.net/photo/rc-1_hacked/ *
* *
* You also need to set PHOTOGRAPH_PIN in Configuration_pins.h *
* *
**************************************************************************/
//#define PHOTOGRAPH
/**************************************************************************/

/**************************************************************************
***************************** Camera trigger *****************************
**************************************************************************
* *
* M240 Triggering CHDK to take a picture see how to use it here: *
* http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ *
* *
* You also need to set CHDK_PIN in Configuration_pins.h *
* *
**************************************************************************/
//#define CHDK

#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
/**************************************************************************/

Я это дело использовал в построцессах слайсера. На смене слоя вставлял кусок кода подачи сигнала на определенный PIN, к которому подключена камера. А в самом слайсинге делал переход слоя на детали в одном месте и получалось, что в тайм-лапс сопло всегда стоит в одном месте, а деталь растет :-).
2 Дек 18:16
0
Ну да. Плюс еще и время тратить на увод каретки, фотку, привод. Плюс еще по любому подачу надо после этого подогнать. Ибо где-то будет в 5см от места парковки заканчиваться слой, а где-то через весь стол... Такое себе. Тем более таймлапс это штука чисто для всяких ютуберов и прочего. Чего-то дельного потом из него вытянуть не выйдет. А вот возможность смотреть онлайн, это как по мне реальная польза.
2 Дек 16:13
0
Выглядит здорово вообщем)
4 Дек 17:36
0
Октопринта под руками нет (дома остался), но насколько я помню, там и так ыла возможность при перемещении по оси Z делать очередной кадр. Что-то типа такого и получится. Но мне для отложенного просмотра больше нравится кадр в три две-секунды, так удобнее смотреть, что именно пошло не так в случае проблем.
5 Дек 14:20
0
Да октопринг делает таймлапс по Z но все будет дергаться. первое видео показывает в чем разница штатного таймлапса.
В любом случае можно этот таймлапс _совмещать_ со всеми другими видами.
5 Дек 14:26
1
На прюшах таймлапс стрёмно смотрится как раз из-за стола, он дергается в видео. Видел даже, что камеру к столу крепили.
С Z-столом все менее эпилептично.
5 Дек 14:30
0
менее эпилептично
:D:D:D:D
6 Дек 14:55
0
не важно какой принтер, все будет статично и красиво расти. если делать как я написал
6 Дек 15:00
0
Важно. Потому что на дрыгостоле таймлапс без ваших модификаций выглядит плохо. А с Z - столом - хорошо.
6 Дек 19:04
0
Z лучше, но все равно будет скакать экструдер.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

3Dtoday за 60 секунд от 18 декабря

ПАО «ОДК-Сатурн» завоевало премию «Время инноваций» за проект в области топологической оптимизации и аддитивных технологий

Что подарить и что напечатать на Новый год

Vitae Industries тестирует 3D-принтер для печати таблеток

Еще один красавчик ZAV-L

Инсайдерский дайджест pt 59