Skocz do zawartości

Featured Replies

Napisano

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
  • Wyświetleń 1,1k
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano

a nie myślałeś, żeby dobrać się do komendy pleyblasta? jak ustawisz w pleyblascie klatki, to automatycznie uruchamia fcheka i odtwarza animację.

Napisano
  • Autor

Tak ale jak np chcesz sobie odtworzyć nie wiem, playblast sprzed tygodnia albo sekwencję z Aftera? :)

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
  • Autor

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
  • Autor

w sumie wiele nie zostało do zrobienia :) Lepiej popatrz do drugiego wątku który założyłem ;)

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.

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

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności