Анимация и 3D графика

индекс
186,51

Рендер на удалённой машине при помощи связки Dropbox & Mail

Я чуток увлекаюсь 3д и порендериваю порой дома всякую ерунду. Дома у меня Macbook Pro и его двухъядерного Core 2 Duo для рендера маловато, тяжёлые сцены считаются долго, на ночь оставлять жужащий вентиляторами ноут не хочется. На работе же стоит 4х-ядерный Mac Pro с Xeon'ами, подумалось мне скидывать задачи по просчёту на него, вот только как? И я за NAT'ом, и он за NAT'ом (и к тому же на стриме), сисадминского опыта у меня 0, как портфорвардинги я не пытался настроить, ни один из remote desktop'ов заставить работать не вышло. На помощь пришли Dropbox и Правила Mail'a

Сначала, почему всё-таки я выбрал связку Dropbox+Mail, а не продолжил бороться с NAT'ом: помимо большей стабильности, файлы на дропбоксе доступны с веб-интерфейса из любого места с интернетом, в том числе доступны для iPhone

Идея была такая — сцена с домашнего компьютера синхронизуется через Dropbox с рабочей машиной, дальше письмо с определённым сабжектом и с именем файла в теле запускает рендер, после рендера файлы через тот же дропбокс оказываются на домашней машине.

Столкнулся с двумя проблемами: во-первых, в Help'e для Cinema 4d, в которой я всё рендерю, ничего не сказано про работу с командной строкой под OS X; во-вторых, я ничего не понимаю в apple script. В обоих случаях оказалось, что кто-то уже задавался вопросом, решение которого можно было бы спроецировать на мои задачи.

Для командной строки я нашёл описание рендера для Maya. Файл, к которому надо обращаться лежал внутри Maya.app
Пробую то же самое для Cinema 4d.app:
правый клик по файлу -> Show package contents -> Contents -> MacOS -> CINEMA 4D
Перетаскиваю этот файл в терминал и охренеть: Синька запускается. Теперь команда: -nogui -render «filename»
(тут важно не забыть в настройках рендера сразу задать файл для сохранения, а то порендерится в пустоту)
И надо же, сработало:


Следующая задача собственно как-то начать рендер. Тут я взял за основу скрипт с Mac OS X Hints, который добавлял в Transmission присланный по почте .torrent-файл.
Всё что нужно было сделать — поменять target application на Terminal и keystroke, который посылается в Терминал, на нужную мне строчку.
Тут я, как человек ничего не понимающий ещё и в синтаксе консоли, столкнулся с тем, что скрипт ругался на слэш с пробелом «\ ». Погуглив, оказалось, что для Apple script необходим ещё один дополнительный слэш: «\\ »
Ну и путь я тут заменил сразу на директорию Dropbox'a
Получилось так:


Теперь дело за малым: настроить Mail
Mail -> Preferences -> Rules
Добавляем новое правило
Я сделал его таким:


Когда с моего ящика приходит письмо с сабжектом renderMe, письмо помечается прочитанным, запускается скрипт, который берёт имя файла из тела письма, и чтобы проверить работает ли вообще компьютер и интернет, высылается обратное письмо с текстом, что всё ок.

Тест:


картинка, которая оказалась в дропбоксе после рендера и доступна на всех машинах в аккаунте:


судя по описанию, Maya, Modo и другие так же поддерживают рендер через командную строку. На Windows Applescript можно заменить VB'шным расширением для Outlook и, возможно, Eudora.

Интересно, у меня получилось очередное квадратное колесо или имеющий право на жизнь способ? :)
+53
28 января 2010, 17:31
23
tyr

комментарии (40)

+4
Proklado4ka_A11ways #
team viewer'у пофиг на NAT
+2
tyr #
пробовал… он у меня не заработал вообще. нажимаю логин, спрашивает пароль и… ничего не происходит
да, плюс ремоут десктопа в возможности контролировать процесс, но тк всё-таки ниодин RD через интернет мне завести не удалось, буду пока делать так, тем более что получился довольно быстрый способ %)
+1
Sanches #
У TeamViewer'а есть Host версия, при первом запуске он предлагает запомнить 9-и значный номер и ввести пароль для этого компьютера, может запускаться как служба. По этим данным хост-машина будет доступна от куда угодно и бесплатно.
+1
tyr #
да, я так и сделал и сегодня ещё раз попробовал. но то же самое. и файлы не шлются, при попытке файл трансфер организовать соединяется, при входе в первую же папку падает :(
+1
Kolegg #
У меня не получилось связаться с компом, который работает за лантунетом…
+4
XuMiX #
ну, прямо труЪ юниксвей)
+7
telegamochka #
Браво :) Я несколько лет назад сделала аналогичное решение :) Правда, в моем случае это был не рендеринг. Я работаю над мобильными приложениями (J2ME). И одно время постоянно приходилось таскать с собой ноут (3 кило 15 дюймов), чтобы если в программе что-то срочно нужно будет поменять, то можно было бы без проблем это сделать, не срываясь домой или в офис. В результате я настроила домашний комп под федорой для удаленной компиляции, вывела в инет как сервер — и при необходимости без всякого ноутбука правила исходники на Nokia E61, затем в один клик отправляла их собственной программкой на сервер, где они компилились и возвращались на смартфон уже готовым приложением.

Оказалось полезно — и в плане экономии времени, и с точки зрения самообразования ;)
+1
Nesp #
Рендер-фермы уже не в моде?
+2
tyr #
бесплатные? боюсь ещё не появились
платные? конечно это здорово, если бы я всерьёз занимался viz'ом и дешевле было бы покупать гигагерцы, чем считать сутки-другие
+3
CriggerMarg #
работает — значит точно имеет право на жизнь. К тому же не так и трудоемко это выглядит все.
+3
youROCK #
А Hamachi не пробовали? Хоть под Mac OS X он доступен только из консоли, всё равно должен работать. Насколько я знаю, NAT он «прорубает», правда не уверен, что можно соединить 2 машины, каждая из которых спрятана за NAT.
+2
tyr #
не пробовал, покопаю, спасибо!
+1
lostinfuture #
можно соединить и 2 за натом
+1
andoriyu #
mobile me. соеденяет машинки по ipsec'у. ну или какойнить костыль в стиле моего сервиса.
+1
veon #
можно подконнектить и больше 2 машин. я активно юзаю для обслуживания своей сети. через веб или rdp, в зависимости от необходимости можно попасть на нужный комп/сервер. одного маковеда год назад обучил, он теперь за другими работниками в офисе подсматривает.
+2
Alex_At_Net #
Вы молодец! Так держать :-)
+2
alexleo #
А какой рендер вы используете? MentalRay? Например, для Maxwell'а есть готовые Render Node, которые как раз и позволяют распределять рендер между разными машинами.

Хотя у вас, если я правильно понял, задача была проще- запустить рендер удаленно, а не распределять сцену между несколькими машинами.
+3
tyr #
Advanced Render (рендер самой Синемы)
не знаю про Maxwell, но и AR, и, кажется, Mental использую сетевой рендер только для анимации
плюс в моём случае сетевые рендеры не найдут друг друга из-за того же NAT'a :/
+1
alexleo #
Есть Remote Desktop как раз для таких случаев, когда оба за натом, он находится по адресу logmein.com/

Работает по схеме прокси-сервера, то есть к нему нужно цепляться с двух сторон. Нас он когда-то очень выручил. Выглядит примерно так- уходите с работы, запускаете там клиент, цепляетесь к серверу, приходите домой, заходите на их сайт, логинитесь- получаете десктоп удаленной машины. Я им пользовался года три назад, может сейчас что-то изменилось, я на работе сейчас, проверить не могу, но сайт, вроде, жив. Попробуйте, возможно этот вариант как раз для вас.
+1
tyr #
спасибо, попробую! в целом меня устраивает и мой вариант, но не хватает контроля, который мог бы обеспечить RD
+2
fmax #
А какая разница анимация или отдельный кадр? Всеравно все в сиквенцию рендерится, тоесть отдельными кадрами, так что mental ray спокойно по сети работает. Только если это встроенный в майя ментал, то ограничен 8 процессорами.

Автору респект за тему!
+2
tyr #
Не, я имею ввиду даже не сиквенс, а именно одну большую картинку. Ео, что картинку одну нельзя одновременно на нескольких машинах считать
+3
fmax #
Можно :) только процессы расчета GI, FG и baking происходят на одной машине. Даже можно определить для каждой машины регион просчета.
+3
tyr #
охренеть круто! я довольно поверхностно триде сейчас знаю, надо глубже рыть значит :)
+1
sanju #
Я использую вариант с ремоут десктопом logmein в сочетании с тем же дропбокс. С айфона или macbook захожу на домашнюю рендер-машину( PC) и запускаю просчет картинки/мувика. Вариант с logmein лучше тем, что можно в сцене что-нибудь подкрутить.
+1
tyr #
спасибо, попробую logmein, наверное единственное незнакомое RD-имя из миллиона опробованных клиентов :)
да, контроль над сценой бы не помешал, хотя думаю я бы не стал полностью переходить на RD, вариант с автоматизацией оказался довольно удобным
+2
sanju #
logmein.com — онлайн доступ через браузер. Клиент должен быть только на контролируемой машине. Бесплатен в версии с несущественными ограничениями: нет буфера обмена, нельзя кидать файлы(так как есть Дропбокс, неактуально)
+4
AVI #
Никакое это не квадратное колесо, а интересная тема. Но у меня есть некоторые комментарии.
Сейчас совершается два действия для получения результата: кладется файл в дропбокс + отправляется команда старта по email'у. Может попробовать сделать более универсально, используя только один из механизмов?

1. Раз используется email, то может можно отправлять исходный файл как вложение, которое будет сохраняться, а дальше обрабатываться как обычно. Или результат будет отправляться обратно на email.
(сразу скажу, я не изучал вопрос как там обстоят дела с автоматическим сохранением вложений и т.п., но наверное это решаемо). Плюсы: можно отправлять задания и получать результаты с компьютеров, на которых не используется/не настроен дропбокс, а есть только email; результат в одно действие.

2. Если все-таки есть дропбокс, то можно обойтись без email'а. Можно воспользоваться «Folder Actions» (Действия папки) и привязаться к одной из папок дропбокса реакцию на появление файла.
on adding folder items to this_folder after receiving added_items (это под мак ос)
Тогда будет достаточно просто положить файл в папку и получить результат. Реакцию обработчика можно реализовать, например, созданием временного файла-флага, типа «обрабатывается».
Плюсы: не надо никому писать письма, положил — получил.

Мои вмешательства имеют право на жизнь? :)
+2
tyr #
спасибо!
Да, я думал про аттачи, видел скрипт который их сохраняет. Там сложность мне показалась в том, что, во-первых, сцены бывают довольно тяжёлые, на почте есть всё-таки пересылаемые ограничения; а во-вторых я не знаю как отловить момент окончания рендера, чтобы отправить результат обратно — если только не задавать рендер в определённую папку с folder actions. Но если считается, скажем, анимация, то мы рискуем получить в ответ 200 писем, по 1 кадру в каждом и проклянём всё, пока их сохраним =)
С фолдер акшенс хорошая идея, но я не очень понимаю, как её реализовать, а именно, как скрипт узнает, что приняты все файлы? Дропбокс же скачивает их по одному не предупредив систему об их общем количестве
Хотя можно класть в папку архив со сценой, фолдер акшен его распаковывает, тогда же можно будет и узнать, что файлы получены — на месте архива будет стопка наших файлов. Но для меня тут всё упирается в знание apple script :(
+1
AVI #
А исходник не один файл, а несколько и результат опять же не один файл, а несколько?
В статье ведь посылается имя файла (одного) в письме и результат — один файл. Или я что-то разглядеть не могу?
+2
tyr #
Файл 3д-сцены один, но помимо него ещё отдельно лежат файлы текстур, предпросчёта света и подобная ерунда. То есть по почте я посылаю только имя файла сцены, а дальше программа уже подсасывает и остальные файлы. В моём примере, например, отдельно есть ещё .psd файл на 5мб с картой нормалей
И на выходе может один файл получиться, как в этом примере, так и множество отдельных кадров, если считается анимация (как правило, только редкие извращенцы считают анимацию сразу в видео-файл)
довольно много нюансов, поэтому делал максимально универсальный вариант, как мне казалось :)
+2
AVI #
Да, я понял, шероховатости есть…
Но я все равно пошел рыть Apple scripts и macosxhints.com на предмет какой бы автоматизацией себя развлечь :) Спасибо за подброшенную тему.
+1
7vies #
Так создавайте в дропбоксе файл со специальным именем типа go, в котором лежит например имя файла сцены, и пусть рендер на него реагирует. И отвечать так же может, через файлы, практически тот же емэйл :)
+1
tyr #
спасибо!
Да, я думал про аттачи, видел скрипт который их сохраняет. Там сложность мне показалась в том, что, во-первых, сцены бывают довольно тяжёлые, на почте есть всё-таки пересылаемые ограничения; а во-вторых я не знаю как отловить момент окончания рендера, чтобы отправить результат обратно — если только не задавать рендер в определённую папку с folder actions. Но если считается, скажем, анимация, то мы рискуем получить в ответ 200 писем, по 1 кадру в каждом и проклянём всё, пока их сохраним =)
С фолдер акшенс хорошая идея, но я не очень понимаю, как её реализовать, а именно, как скрипт узнает, что приняты все файлы? Дропбокс же скачивает их по одному не предупредив систему об их общем количестве
Хотя можно класть в папку архив со сценой, фолдер акшен его распаковывает, тогда же можно будет и узнать, что файлы получены — на месте архива будет стопка наших файлов. Но для меня тут всё упирается в знание apple script :(
+3
tyr #
мазила!
+2
p1xel #
целый iRender получился =)
+2
LeeMiller #
отличная концепция, мог бы кто описать такую же схему для винды? сам попробую поковырять modo, если будут результаты — обязательно отпишусь
+2
tyr #
не скажу за другие почтовые клиенты, но у аутлука есть Правила, по которым он может запустить программу. как передать имя файла не знаю, но в крайнем случае можно использовать одно и тоже temp-имя %)
чёрт, тоже хочу заняться модо
0
Kolegg #
nnCron, думаю вам поможет.
+2
crazyASD #
Спасибо! Пользуюсь Mac OS и Dropbox. Рендерю Cinema 4D и Artlantis Studio. Буду думать как заставить работать их.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.