Blender创建关键帧的函数为:
obj = bpy.data.objects["物体名称"]
obj.keyframe_insert(data_path="location",frame=1,index=1)
# 这句代码意为记录物体的位置属性中的y轴位置到关键帧1
这里我以控制物体的Z轴位移为例,当然你还可以添加旋转方向的动画,使用rotation_euler属性。
建议可以买一个传感器,从串口或网络读取数据,配合代码可以实现 真·手动 创建动画,会很有趣。
import bpy
import threading,time
class Create_obj:
def __init__(self,name):
self.obj = bpy.data.objects[name]
def obj_loc(self,data):
self.obj.location[2] = data
def obj_animation(self,data,fra):
self.obj.location[2] = data
self.obj.keyframe_insert(data_path="location",frame=fra,index=2)
if __name__ == "__main__":
obj_1 = Create_obj('Cube')
data = iter(([i*0.1 for i in range(30)]+[3-i*0.1 for i in range(30)])*100)
def test(ed):
global obj_1,data
st = time.time()
while time.time()-st<ed:
print("working")
obj_1.obj_loc(next(data))
time.sleep(0.05)
print("done")
# 打印的信息可以在blender的系统控制台查看
def animation(ed):
global obj_1,data
st = time.time()
fra = 0#blender默认一秒24帧
while time.time()-st<ed:
print(fra)
obj_1.obj_animation(next(data),fra)
time.sleep(0.05)
fra += 1
print("done")
t=threading.Thread(target=animation,args=(10,))
t.start()