LogIn E-mail
¼³°èÀ̾߱â
[bpy]bone2_wr.py
# 33 JMJS    23.9.23 14:52

import bpy
import math
import os.path
import time
from time import ctime
import shutil
#---------------------------------------------------------------------------#
def ss2f1 (a):
    return '%9.4f' %(float(a))
#---------------------------------------------------------------------------#
def ss2f(s):
    for i in range(len(s)):
        s[i]=ss2f1(s[i])
    return s
#---------------------------------------------------------------------------#
def deg2rad (deg): return math.radians(deg)
def rad2deg (rad): return math.degrees(rad)
#---------------------------------------------------------------------------#
def r2d (r): return rad2deg(r)
#---------------------------------------------------------------------------#
def path_check(s):
    s=s.replace('pose.bones["','')
    s=s.replace('"]','')
    if '.location' in s:
        s=s.replace('.location','')
        return(s,'loc')
    elif 'location' in s:
        s='body'
        return(s,'loc')
    elif '.rotation_euler' in s:
        s=s.replace('.rotation_euler','')
        return(s,'rot')
    elif 'rotation_euler' in s:
        s='body'
        return(s,'rot')
#---------------------------------------------------------------------------#
def ndic_add (key,fr):
    global ndic
    if key not in ndic: ndic[key]={}
    if fr  not in ndic[key]:
        ndic[key][fr]=[0,0,0]
#---------------------------------------------------------------------------#
def ndic_put (key,fr,x,f):
    ndic_add(key,fr)
    ndic[key][fr][x]=f
#---------------------------------------------------------------------------#
ndic={}
#---------------------------------------------------------------------------#
print()
print("Start  bone2_wr at ",ctime())
ob   = bpy.context.object
name = bpy.context.object.name
#rint("KK1: object.name : ",name)
#---------------------------------------------------------------------------#
if ob is not None:
    if  ob.animation_data        is not None \
    and ob.animation_data.action is not None :
        action = ob.animation_data.action
        for fcu in action.fcurves:
            if 'scale' in fcu.data_path: continue
            if 'quaternion' in fcu.data_path: continue
            (name,com)=path_check(fcu.data_path)
            key='%s %s' %(name,com)
            x=int(fcu.array_index)
            for kp in fcu.keyframe_points:
                fr=int(kp.co[0])
                f=float(kp.co[1])
                if com != 'loc': f=r2d(f)
                #if key ==  'body rot': #rint("KK11:",key)
                #if key == 'spine loc': #rint("KK11:",key)
                ndic_put(key,fr,x,f)
                #rint("KK81:ndic[key][fr]:",key,fr,x,f)
                #rint("KK82:ndic[key][fr]:",key,fr,ndic[key][fr])
#---------------------------------------------------------------------------#
if os.path.isfile('bone2.rot'):
    ofile='backup\\bone2.rot.'+str(int(time.time()))
    shutil.copyfile('bone2.rot',ofile)
#---------------------------------------------------------------------------#
#rint("KK2: write bone.rot...")
fo = open('bone2.rot','w')
for name in sorted(ndic.keys()):
    num=0
    for fr in sorted(ndic[name].keys()):
        name2 = name.replace(' ','   ')
        if fr%4>-1 :
            s='jin1e   %s   %3d' %(name2,fr)
            (a,b,c)=ss2f(ndic[name][fr][0:3])
            s+='  %s %s %s\n'  %(a,b,c)
            fo.write(s)
    if num>0: fo.write('\n')
fo.close()
#---------------------------------------------------------------------------#
print("Finish bone2_wr at ",ctime())
print()
#---------------------------------------------------------------------------#

°Ô½Ã¹°: 61 °Ç, ÇöÀç: 1 / 1 ÂÊ
¹øÈ£ Á¦       ¸ñ ÀÛ¼ºÀÚ µî·ÏÀÏ ¹æ¹®
61  os.path.dirname(os.path.realpath(__file__))) JMJS 25.8.20 99
60  img2rgb.py PIL lambda print end prn sys.argv JMJS 24.6.18 364
59  cv2 image pixel bgr °ª ¼öÁ¤Çϱâ JMJS 24.3.1 390
58  ±ÛÀÚÇǶó¹Ìµå lpyramid.py JMJS 24.3.1 428
57  µñ¼Å³Ê¸® dictionary µñ¼Å³Ê¸® key¿Í value µÚÁý±â ... JMJS 24.3.1 359
56  bus idx2set cap JMJS 24.2.22 389
55  ÆÄÀ̽㠸®½ºÆ®¿¡¼­ ºó ¹®ÀÚ¿­ÀÎ ¿ø¼Ò Á¦°ÅÇϱâ JMJS 24.2.22 375
54  openpyxl JMJS 24.2.22 375
53  Decorators µ¥ÄÚ·¹ÀÌÅÍ JMJS 24.2.29 391
52  walrus operator := and for in list JMJS 24.2.1 374
51  pandas Çà Ãß°¡ JMJS 24.1.28 340
50  split with brackets JMJS 24.1.27 357
49  ÀÌÅÍ·¹ÀÌÅÍ Iterator JMJS 24.1.26 379
48  re regular expression JMJS 24.1.26 350
47  read_excel()ÀÇ ÁöÁ¤ °¡´ÉÇÑ ¿É¼Ç JMJS 24.1.26 377
46  pandas to_excel sheet ¿©·¯Àå excel ÆÄÀÏ ¾²±â Àбâ JMJS 24.1.28 464
45  pandas ¼¿ isna isnull notna notnull JMJS 24.1.28 399
44  tkinter tk1.py JMJS 24.1.25 426
43  pandas _append df2.py JMJS 24.1.25 406
42  ÆÇ´Ù½º pandas DataFrame, list, dictionary, ... JMJS 24.1.25 414
41  f-string JMJS 24.6.18 431
40  pandas JMJS 24.1.17 351
39  __add__ __getattr__ __getitem__ __setitem__ JMJS 24.1.24 389
38  ÆÄÀ̽㠼³Ä¡°æ·Î È®ÀÎ JMJS 23.12.4 358
37  deepcopy JMJS 23.11.24 368
36  def func(*args): JMJS 23.11.24 401
35  sys.version_info JMJS 23.11.19 405
34  argparse add_argument parse_args JMJS 24.1.17 360
33  [bpy]bone2_wr.py JMJS 23.9.23 394
32  [bpy]bm.verts depsgraph JMJS 23.9.23 368
31  [bpy]keyframe_insert JMJS 23.9.23 375
30  [bpy]key_blocks JMJS 23.9.23 380
29  def abc (a=10,b=20,c=30) JMJS 23.8.1 384
28  shape prj JMJS 23.10.29 412
27  yaml JMJS 23.11.30 428
26  getopt arg argv JMJS 23.7.26 411
25  pg.mouse.get_pressed() pg.mouse.get_pos() JMJS 22.11.20 518
24  pg.MOUSEBUTTONDOWN event.button JMJS 22.11.20 527
23  ¸ðµÎÀÇ ÆÄÀ̽ã - 20Àϸ¸¿¡¹è¿ì´Â ÇÁ·Î±×·¡¹Ö ±âÃÊ JMJS 20.1.8 573
22  python -m pip install -U pip JMJS 19.11.25 510
21  get =lambda i,m ... JMJS 19.11.13 546
20  2Â÷¿ø ¸®½ºÆ®, Æ©Çà JMJS 19.11.13 531
19  [turtle]def polygon3(n,c,d) JMJS 19.11.11 554
18  [turtle]def polygon2(n,a) JMJS 19.11.11 565
17  def factorial(n) JMJS 19.11.11 500
16  def sum_func(n) JMJS 19.11.11 509
15  def hello() fun1(a) fun2(a,b) JMJS 19.11.11 506
14  while sum JMJS 19.11.11 589
13  random calculation JMJS 19.11.11 498
12  turtle random JMJS 19.11.11 505
11  import time time.time JMJS 19.11.11 611
10  turtle begin_fill end_fill JMJS 19.11.11 500
9  if else JMJS 19.11.11 499
8  input JMJS 19.11.11 504
7  list JMJS 24.3.1 568
6  turtle triangle JMJS 19.11.11 526
5  for range JMJS 19.11.11 516
4  ¸ðµâ »ç¿ëÇϱâ JMJS 19.11.11 551
3  import ÆÄÀ̽㠸ðµâ °¡Á®´Ù ¾²±â JMJS 19.11.11 533
1  print ÁÙ¹Ù²Þ JMJS 19.11.11 570
 ^_^ 70.1.1
[1]