Skocz do zawartości

Featured Replies

Napisano

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? :)

  • Odpowiedzi 1
  • Wyświetleń 1,5k
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano

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 przez CgBartosz

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

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności