Skocz do zawartości

Pan Placek

Members
  • Liczba zawartości

    9
  • Rejestracja

  • Ostatnia wizyta

Odpowiedzi dodane przez Pan Placek

  1. W blenderze.

     

    Teraz mam MEGA problem. W swoim projekcie muszę wczytać dane motion capture wykorzystując zmiany pozycji punktów.

    Myk polega na tym, że z pozycji trzeba przejść na rotację. Znalazłem coś takiego jak macierze rotacji:

    http://pl.wikipedia.org/wiki/Elementarne_macierze_transformacji

    http://en.wikipedia.org/wiki/Rotation_matrix

     

    Ale nie za bardzo umiem z tego skorzystać, czy miał ktoś z tym już do czynienia i wie jak rozwiązać problem?

  2. Zrobiłem w calości ten skrypt oraz skrypt wczytujący dane. Ale mam kolejny problemik. Działa on wyłącznie w trybie pose mode.

    Odpalając go np. trybie object wyskakuje błąd.

     

    Tak więc moje pytanie brzmi: jak przy uruchomieniu skryptu sprawdzić czy jest zaznaczony obiekt 'Armatura' i jaki tryb jest obecnie włączony?

    Tutaj wiem tylko tyle, że przejście do trybu posemode to posemode_toggle()

  3. zrobiłem to w ten sposób:

    [font=arial][font=arial]myFile=open(file_name).readlines()
       destinationFile=open(file_name,'w')
       for line in myFile:[color=#500050]
    [/color]
    [/font]
    [font=arial]        destinationFile.write(line.replace("[","").replace("]",""))[/font][/font]
    [font=arial][font=arial]    destinationFile.close()[/font][/font]
    

     

    Niestety nie wiem jak to inaczej zrobić, ale ważne, że działa.

  4. Mam taki problemik. Mam plik z danymi i chce w nim usunąć znaki "[" i "]"

    stosuje taki kod:

     

     

        myFile=open(file_name).readlines()
       destinationFile=open(file_name,'w')
       for line in myFile:
           destinationFile.write(line.replace("[",""))
           destinationFile.write(line.replace("]",""))
       destinationFile.close()

     

    Ogólnie to trochę to działa, a trochę nie.

    Mając np linijkę tekstu typu

    sad an dsuoi anfionio zn [aism podima]kjoan sdn
    otrzymuje dwie linijki tekstu:

    sad an dsuoi anfionio zn aism podima]kjoan sdn

    sad an dsuoi anfionio zn [aism podimakjoan sdn

     

    Pewnie mógłbym, zrobić w ten sposób, że tworze drugi raz plik i przepisuje zawartość.

    Ale nieukrywajmy jest to mało eleganckie. Czy jest jakaś inna metoda?

  5. Hej, jak w temacie, piszę skrypt, który zapisuje pozycję kości a dokładnie head, tail i rotation_euler.

    Męczę się z tym dość długo i niestety nie mogę przebrnąć przez pewien etap.

     

    Oto kod który napisałem:

     

    def getPosition(a_name):
       bones=bpy.data.armatures[a_name].bones
       bone_struct=[]
    
       for bone in bones:
           bone_ends=[]
           bpy.context.active_object.data.bones[bone].select=True
           bone_ends.append(bone.name)
           bone_ends.append(bpy.context.active_pose_bone.head)
           bone_ends.append(bpy.context.active_pose_bone.tail)
           bone_ends.append(bpy.context.active_pose_bone.rotation_euler)
           bone_struct.append(bone_ends)
       return(bone_struct)
    
    #zapisywanie animacji do pliku
    def saveAnimation(a_name, file_name):
    scene=bpy.context.scene
    frames=scene.frame_end - scene.frame_start + 1
    myFile=open(file_name,"w")
    scene.frame_current=0
    i=0
    j=0
    
    for i in range(scene.frame_start, scene.frame_end + 1):
    	myFile.write("Frame: %d;\n" % scene.frame_current)
    	scene.frame_current=i
    	scene.frame_set(scene.frame_current)
    
    	#korzystam z wczeniej utworzonej funkcji getPosition
    	myData=getPosition(a_name)
    	for line in myData:
    		 myFile.write(str(line))
    		 myFile.write("\n")
    myFile.close()
    return
    
    saveAnimation('Armature', 'animation.txt')
    

     

    W wyniku otrzymuje plik w którym w każdej klatce i przy każdej kości mam wartości obecnie aktywnej kości z klatki 0.

    Stosując w konsoli komendę bpy.context.active_pose_bone.head dostaję poprawne wyniki przy zmianie klatki.

    Więc sądzę, że kieruje się w dobrym kierunku, ale problem tkwi właśnie z aktywacją kości, której nie potrafie zaimplementować.

     

    Wcześniej próbowałem zapisać pozycję nieco inaczej:

    def getPosition(a_name):
    bones=bpy.data.armatures[a_name].bones
    bone_struct=[]
    i=0
    for bone in bones:
    	bone_ends=[]
    	bone_ends.append(bone.name)
    	bone_ends.append(bones[i].head)
    	bone_ends.append(bones[i].tail)
    	bone_struct.append(bone_ends)
    	i=i+1
    
    return(bone_struct)
    

     

    W wyniku otrzymywałem pozycję każdej kości, ale wyłącznie w pierwszej klatce.

     

    Także drodzy koledzy proszę was o pomoc.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności