Skocz do zawartości

Fcheck - odtwarzanie animacji


Rekomendowane odpowiedzi

Napisano (edytowane)

Czy wkurzało was kiedykolwiek że żeby odtworzyć animację zapisaną jako sekwencja klatek w fcheck'u trzeba otworzyć fcheck'a, wklikać się w file->open animation i znów grzebać w poszukiwaniu klatki animacji.

Jako że nie znalazłem rozwiązania tego palącego problemu jak uniknąć tego klikania (ale też nie szukałem za daleko) napisałem takie małe cuś:

 

import re, sys, string, os, time


def getFrameNumber(s):
       digitsLen = s.split(".")
       count = digitsLen[-2]
       digits = re.findall('[0,1, 2,3,4,5,6,7,8,9]', count)
       return digits

def makeHashes(hashes):
       returnString = ""
       for h in range(hashes):
               returnString += "#"
       return returnString

def getPattern(s):
       nameSplit = s.split(".")
       pattern = nameSplit[0:len(nameSplit) - 2]
       return '.'.join(pattern)

def getExtension(s):
       extension = s.split(".")[-1]
       return extension

arg = sys.argv




filename = arg[1]
pieces = filename.split("\\")
sequenceName = pieces[-1]


digits = getFrameNumber(sequenceName)

replString = makeHashes(len(digits))
digitsLen = sequenceName.split(".")
count = digitsLen[-2]

digitsLen[-2] = replString

joinDigitsLen = '.'.join(digitsLen)

pieces[-1] = joinDigitsLen
finalFileName = '\\'.join(pieces)


directory = os.listdir('\\'.join(pieces[0:len(pieces)-1]))
pattern = getPattern(sequenceName)
extension = getExtension(sequenceName)
firstFrame = ""
framesCount = 0
for f in directory:
       if f.find(pattern) != -1:
               if f.find(extension) != -1:
                       firstFrame = getFrameNumber(f)
                       break

for f in directory:
       if f.find(pattern) != -1:
               if f.find(extension) != -1:
                       framesCount += 1




firstFrame = int(''.join(firstFrame))
lastFrame = firstFrame + (framesCount - 1)

command = "fcheck -n "
command += (" " + str(firstFrame) + " " + str(lastFrame) + " 1 " + finalFileName)

os.system(command)

 

Żeby działało trzeba mieć pythona zainstalowanego i wpisaną ścieżkę do Maya ( domyślnie przy instalacji się dopisuje).

 

Ten kod zapisujemy w pliku np. runSequence.py zapisujemy na pulpicie. Wtedy wystarczy przeciągnąć dowolną klatkę z sekwencji na ikonę skryptu i powinien odpalić się fcheck.

 

Ten skrypcik to taka luźna propozycja, obsługuje niestety tylko sekwencje zapisane w formacie: nazwasekwencji.###.jpg gdzie ### to numer sekwencji, nie zobaczy np nazwasekwencji_###.jpg etc. Może ktoś pomoże to rozwinąć trochu?

 

Pozdrosy

Edytowane przez Kroopson
  • Odpowiedzi 10
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

Napisano

Nie myślałeś żeby zrobić to z zwykłym ".bat"-em shellowym? Też kiedyś nad tym się zastanawiałem, ale zawsze było 10 ważniejszych rzeczy do zrobienia.

Napisano

Nie wiem jak zrobić w shellu analizę nazwy pliku żeby wyciągał które cyferki w nazwie to numery klatek (było nie było fcheck zeby odtworzyc animacje musi miec parametry takie jak:

 

fcheck -n int(pierwsza_klatka) int(ostatnia_klatka) int(co_ile_klatek) nazwapliku_####.jpg

Napisano

ok, jako że na chorobowym jestem to z nudów zrobiłem ładowanie animacji do FCheck'a w Visual Basicu - ogólnie odpali się u wszystkich z Windowsem, wystarczy fcheck .... chyba :)

 

plik: VIsual Basic Based fcheck_animLoader

 

Usage:

Ściągasz, rozpakowujesz, przeciągasz którąkolwiek z klatek animacji na plik .vbs i oglądasz animke w fchecku.

 

Obsługuje wszystkie paddingowane klatki w sensie 100 klatek od klatka001.tga do klatka100.tga, przejdzie jak ulał, ale klatka1.tga do klatka100.tga już nie. Jak będzie Wam brakowało klatek między najmniejszym numerem a największym to je po prostu ominie.

 

Akceptowane formy numeracji:

aaaa.00132.tga

aaaa00345.jpg

nnnnn_fdmkl.2frdwsf.rewjiow_0234.innyFormat

 

ogólnie każdy który ma padding i jakieś rozszerzenie które łyka fcheck.

 

Jak ktoś bardzo polubi ten skrypt i będzie wolał od Krupsonowej napisanej Pythonowej wersji to niech mi skrobnie maila - jak się nazbiera maili to dorobię brakujące funkcjonalności - poki co jest późno i kończy mi się "chorobowe" więc nie mam czasu za bardzo na dokończenie.

  • Like 1
Napisano

Ten skrypcik to taka luźna propozycja, obsługuje niestety tylko sekwencje zapisane w formacie: nazwasekwencji.###.jpg gdzie ### to numer sekwencji, nie zobaczy np nazwasekwencji_###.jpg etc. Może ktoś pomoże to rozwinąć trochu?

Pozdrosy

 

Napisałem dawno temu taki skrypt dla mplaya. Jest tam funkcja, która daje radę z większością formatów, poza klatkami floating point, coś jak:

 

def padding(file, return_full_name=True):
   # find padding rule and applies it
   pic_dir = os.path.dirname(file)
   base, ext = os.path.splitext(os.path.basename(file))
   list_base = list(base).reverse()
   count = 0
   for letter in list_base:
       if letter.isdigit(): count += 1
       else: break
   # generate new name:
   if return_full_name:
       if count != 0:
           if count == 1:
               base = base[0:-count] + "$F"
           else:
               base = base[0:-count] + "$F" + str(count)
       file = os.path.join(pic_dir, base + ext)
   else:
       if count != 0: base = base[0:-count]
       file = os.path.join(pic_dir, base)

   return file

 

Całość znajduje się tutaj.

 

pozdro,

skk.

 

(mplay otworzy w zakładkach kilka sekwencji jednocześnie, jeśli znajdzie je w katalogu/podkatalogach).

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności