Victor_V Napisano 21 Kwiecień 2012 Napisano 21 Kwiecień 2012 Mam taki pewien problem. Dostałem w sumie odpowiedź gdzie indziej, ale nie taką jaką chciałem. Napisałem sobie skrypt który czyta i wypisuje rotacje obiektu w danej klatce. Działa dobrze, ale wypisywane są wszystkie klatki. O co chodzi więc? Załóżmy, że moja aniamcja ma klatki kluczowe w 0,3,5 i 10 klatce. Chciałbym, żeby dane były wypisywane tylko dla tych klatek czyli dla 0f,3f,5f,10f. Aktualny mój kod on CopyBones pressed do ( nframes = "sliderTime = " rframes = "$.rotation = " pframes = "$.pos = " keystart = animationrange.start keyend = animationrange.end-1 if selection.count == 1 then ( format nframes sliderTime = 0f print sliderTime format rframes print $.rotation format pframes print $.pos for i = keystart to keyend do ( sliderTime +=1 format nframes print sliderTime format rframes print $.rotation format pframes print $.pos ) ) else ( messagebox "You must select any bone first!" ) ) Przykładowo wypisywanie chciałbym, żeby wyglądało tak: sliderTime = 0f $.rotation = (quat -0.0402838 -0.692195 0.0462476 -0.7191) $.pos = [0.0814999,4.36233e-005,-0.00849035] sliderTime = 3f $.rotation = (quat -0.0373623 -0.694563 0.0465611 -0.716951) $.pos = [0.0844062,0.0018139,-0.00846642] sliderTime = 5f $.rotation = (quat -0.0348128 -0.696512 0.0469076 -0.715163) $.pos = [0.0868516,0.00332114,-0.00844604] sliderTime = 10f $.rotation = (quat -0.0343639 -0.696845 0.0469752 -0.714856) $.pos = [0.087274,0.00358315,-0.0084425] Jakieś pomysły? :)
CgBartosz Napisano 27 Kwiecień 2012 Napisano 27 Kwiecień 2012 (edytowane) W efekcie ubocznym mozna pisac do pliku jesli zamienic stringstream na file i drukuje propertiesy. ( struct PrintNodeValues ( public nodesArray, frameArray, dataStream, private fn _printValuesByType _node _frame = ( propNames = getPropNames _node format "\tslidertime = %\n" _frame to:dataStream for propName in propNames do ( at time _frame ( propValue = getproperty _node propName format "\t$.% = %\n" (propName as string) propValue to:dataStream ) ) ), on create do ( for _frame in frameArray do ( for _node in nodesArray do ( format "\nnodeInfo\n" to:dataStream format "\t%\n" _node to:dataStream format "\tsuperClass:%\n" (superclassof(_node)) to:dataStream format "\tClass:%\n" (classof(_node)) to:dataStream format "transforms:%\n" _node to:dataStream _printValuesByType _node.controller _frame format "properties:%\n" _node to:dataStream _printValuesByType _node _frame ) ) ) ) nodesArray = selection as array frameArray = #(0f,5f,10f,15f,20f) dataStream = stringstream "\n" PrintNodeValues nodesArray frameArray dataStream print (dataStream as string) ) Dla splajna taki wynik daje w listenerze: nodeInfo $Line:Line002 @ [14.202627,-7.950639,0.000000] superClass:shape Class:line transforms:$Line:Line002 @ [14.202627,-7.950639,0.000000] slidertime = 20f $.position = [14.2026,-7.95064,0] $.rotation = (quat 0 0 0 1) $.scale = [1,1,1] properties:$Line:Line002 @ [14.202627,-7.950639,0.000000] slidertime = 20f $.steps = 6 $.render_renderable = false $.render_mapcoords = false $.render_viewport_thickness = 1.0 $.render_viewport_sides = 12 $.render_viewport_angle = 0.0 $.render_displayRenderMesh = false $.render_useViewportSettings = false $.render_displayRenderSettings = true $.thickness = 1.0 $.sides = 12 $.angle = 0.0 $.renderable = true $.mapcoords = false $.viewport_thickness = 1.0 $.viewport_sides = 12 $.viewport_angle = 0.0 $.displayRenderMesh = false $.useViewportSettings = false $.displayRenderSettings = true $.optimize = true $.adaptive = false $.render_viewport_length = 6.0 $.render_viewport_width = 2.0 $.render_viewport_angle2 = 0.0 $.render_rectangular = false $.render_viewport_rectangular = false $.render_aspect_locked = false $.render_viewport_aspect_locked = false $.render_auto_smooth = true $.realWorldMapSize = false $.render_thickness = 1.0 $.render_sides = 12 $.render_angle = 0.0 $.render_width = 2.0 $.render_length = 6.0 $.render_angle2 = 0.0 $.render_threshold = 40.0 Edytowane 29 Kwiecień 2012 przez CgBartosz
Rekomendowane odpowiedzi
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ę