Automatyczne tworzenie animacji dowolnego napisu :)

Zadanie na dzisiaj, to wygenerowanie animacji obracającego się napisu. Dowolnego napisu.
Jednym poleceniem 🙂
Rozwiązanie będzie polegało na przygotowaniu sceny (oczywiście w Houdinim) która odczyta tekst z pliku text.txt,
na jego podstawie wygeneruje siatkę modelu, który zostanie automagicznie zanimowany i wyrenderowany do serii klatek *.jpg
Zatem do dzieła:
(oczywiście opis dotyczy Houdini Indie i OSX – ogarnięcie na innym systemie należy do użytkownika:)
Po pierwsze potrzebujemy plik text.txt. Tworzymy plik i w treści wpisujemy np.: „napis”
Przechodzimy do Houdiniego – tworzymy Geometry i nazywamy np. „napis”,

Wchodzimy do środka i tworzymy node’a Font, a w polu text wpisujemy wyrażenie:

file('ścieżka do pliku/text.txt').readline()

Co spowoduje odczytanie tekstu ze stworzonego wcześniej pliku.

By nadać napisowi grubość dodajemy node’a extrude (można zaznaczyć opcję Cusp Polygonal Sides).

Wychodzimy z poziomu Geometry do Scene i tworzymy prostą animacje modelu.

Dodajemy do sceny kamere i oczywiście ustawiamy ją tak by widziała model podczas animacji. Nie zapominamy o jakimś światełku 🙂

Przechodzimy do panelu Outputs i dodajemy node’a mantra

W zakładce Properities->Output ustawiamy Output Picture podając nazwę pliku do jakiego będziemy renderować klatki. Dodanie $F4 do nazwy pliku, spowoduje dopisanie numeru aktualnie renderowanej klatki w czterocyfrowym formacie.

Dodatkowo z zakładce Scripts zaznaczamy Pre-Render Script oraz Pre-Frame Script ustawiamy jako python i w obu wpisujemy:

hou.node("/obj/napis/font1").cook(True,(11,56))

Zakres (11,56) to oznaczenie pierwszej i ostatniej renderowanej klatki, więc należy te wartości dostosować do swojej animacji 🙂

Zapisujemy scene pod nazwą generator.hiplc i w Houdinim to wszystko 🙂 Teraz skrypty….
Po pierwsze uruchamialny skrypt np. o nazwie np. „generator”

#!/bin/bash
echo $1 > text.txt
hython skrypt.py

..który ciąg znaków podany po komendzie „generator” zapisze do pliku text.txt i uruchomi skrypt.py

Po drugie, ten właśnie skrypt w pythonie, który załatwi resztę po stronie Houdiniego, czyli:

import hou
import os

hou.hipFile.load("generator.hiplc")
mantra = hou.node("/out/mantra1")
mantra.parm("camera").set("/obj/cam1")
font = hou.node("/obj/napis/font1")
font.cook(True,(1,83))
mantra.render()

… który w skrócie:

– otworzy plik z naszą sceną

– ustawi node’a wyjściowego na /out/mantra1

– kamerę na /obj/cam1

– odświeży („przecookuje” ? 🙂 node’a font1 w obiekcie napis w zakresie od 1 do 83 klatki

– uruchomi renderowanie

Oczywiście nazwy muszą się zgadzać z tym co mamy w scenie, czyli jeśli model z napisem nazwaliśmy „napis”, to tego pilnujemy w skrypcie. Domyślnie dodawana pierwsza kamera to /obj/cam1, a pierwszy node mantra to /out/mantra1 itd… czyli pilnujemy by się wszystko zgadzało 🙂

Oczywiście dla wygody wszystkie pliki czyli scenę i oba skrypty nagrywamy w tym samym katalogu. Teraz zostało tylko uruchomić Houdini Terminal (lub zwykły terminal w którym wykonamy: cd /Library/Frameworks/Houdini.framework/Versions/14.0.361/Resources; source ./houdini_setup; cd – )
Przechodzimy do katalogu z nasza sceną i skryptami i uruchamiamy

./generator Napis

i jeśli wszystko udało się bez błędów to kolejne renderowane klatki lądują w katalogu 🙂
Dla dociekliwych lub nienasyconych…. należałoby jeszcze uzależnić np. odległość kamery od długości tekstu, tak by zawsze widoczny był cały napis… 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *