Napisano 21 Kwiecień 201212 l 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? :)
Napisano 27 Kwiecień 201212 l 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ń 201212 l przez CgBartosz
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto