Skocz do zawartości

Fcheck - odtwarzanie animacji


Kroopson

Rekomendowane odpowiedzi

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
Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 10
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

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

Odnośnik do komentarza
Udostępnij na innych stronach

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
Odnośnik do komentarza
Udostępnij na innych stronach

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).

Odnośnik do komentarza
Udostępnij na innych stronach

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