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 115
60  img2rgb.py PIL lambda print end prn sys.argv JMJS 24.6.18 403
59  cv2 image pixel bgr °ª ¼öÁ¤Çϱâ JMJS 24.3.1 423
58  ±ÛÀÚÇǶó¹Ìµå lpyramid.py JMJS 24.3.1 458
57  µñ¼Å³Ê¸® dictionary µñ¼Å³Ê¸® key¿Í value µÚÁý±â ... JMJS 24.3.1 376
56  bus idx2set cap JMJS 24.2.22 431
55  ÆÄÀ̽㠸®½ºÆ®¿¡¼­ ºó ¹®ÀÚ¿­ÀÎ ¿ø¼Ò Á¦°ÅÇϱâ JMJS 24.2.22 403
54  openpyxl JMJS 24.2.22 407
53  Decorators µ¥ÄÚ·¹ÀÌÅÍ JMJS 24.2.29 427
52  walrus operator := and for in list JMJS 24.2.1 396
51  pandas Çà Ãß°¡ JMJS 24.1.28 363
50  split with brackets JMJS 24.1.27 373
49  ÀÌÅÍ·¹ÀÌÅÍ Iterator JMJS 24.1.26 402
48  re regular expression JMJS 24.1.26 372
47  read_excel()ÀÇ ÁöÁ¤ °¡´ÉÇÑ ¿É¼Ç JMJS 24.1.26 397
46  pandas to_excel sheet ¿©·¯Àå excel ÆÄÀÏ ¾²±â Àбâ JMJS 24.1.28 493
45  pandas ¼¿ isna isnull notna notnull JMJS 24.1.28 423
44  tkinter tk1.py JMJS 24.1.25 460
43  pandas _append df2.py JMJS 24.1.25 436
42  ÆÇ´Ù½º pandas DataFrame, list, dictionary, ... JMJS 24.1.25 449
41  f-string JMJS 24.6.18 457
40  pandas JMJS 24.1.17 369
39  __add__ __getattr__ __getitem__ __setitem__ JMJS 24.1.24 409
38  ÆÄÀ̽㠼³Ä¡°æ·Î È®ÀÎ JMJS 23.12.4 373
37  deepcopy JMJS 23.11.24 386
36  def func(*args): JMJS 23.11.24 434
35  sys.version_info JMJS 23.11.19 426
34  argparse add_argument parse_args JMJS 24.1.17 378
33  [bpy]bone2_wr.py JMJS 23.9.23 416
32  [bpy]bm.verts depsgraph JMJS 23.9.23 384
31  [bpy]keyframe_insert JMJS 23.9.23 393
30  [bpy]key_blocks JMJS 23.9.23 399
29  def abc (a=10,b=20,c=30) JMJS 23.8.1 400
28  shape prj JMJS 23.10.29 441
27  yaml JMJS 23.11.30 450
26  getopt arg argv JMJS 23.7.26 437
25  pg.mouse.get_pressed() pg.mouse.get_pos() JMJS 22.11.20 543
24  pg.MOUSEBUTTONDOWN event.button JMJS 22.11.20 562
23  ¸ðµÎÀÇ ÆÄÀ̽ã - 20Àϸ¸¿¡¹è¿ì´Â ÇÁ·Î±×·¡¹Ö ±âÃÊ JMJS 20.1.8 603
22  python -m pip install -U pip JMJS 19.11.25 523
21  get =lambda i,m ... JMJS 19.11.13 578
20  2Â÷¿ø ¸®½ºÆ®, Æ©Çà JMJS 19.11.13 555
19  [turtle]def polygon3(n,c,d) JMJS 19.11.11 577
18  [turtle]def polygon2(n,a) JMJS 19.11.11 602
17  def factorial(n) JMJS 19.11.11 523
16  def sum_func(n) JMJS 19.11.11 524
15  def hello() fun1(a) fun2(a,b) JMJS 19.11.11 523
14  while sum JMJS 19.11.11 607
13  random calculation JMJS 19.11.11 516
12  turtle random JMJS 19.11.11 520
11  import time time.time JMJS 19.11.11 628
10  turtle begin_fill end_fill JMJS 19.11.11 516
9  if else JMJS 19.11.11 520
8  input JMJS 19.11.11 522
7  list JMJS 24.3.1 590
6  turtle triangle JMJS 19.11.11 545
5  for range JMJS 19.11.11 533
4  ¸ðµâ »ç¿ëÇϱâ JMJS 19.11.11 570
3  import ÆÄÀ̽㠸ðµâ °¡Á®´Ù ¾²±â JMJS 19.11.11 571
1  print ÁÙ¹Ù²Þ JMJS 19.11.11 585
 ^_^ 70.1.1
[1]