cubester.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:CubeSter 作者: BlendingJake 项目源码 文件源码
def create_f_curves(mesh, frames, frame_step_size, style):
    # use data to animate mesh                    
    action = bpy.data.actions.new("CubeSterAnimation")

    mesh.animation_data_create()
    mesh.animation_data.action = action

    data_path = "vertices[%d].co" 

    vert_index = 4 if style == "blocks" else 0  # index of first vertex

    # loop for every face height value            
    for frame_start_vert in range(len(frames[0])): 
        # only go once if plane, otherwise do all four vertices that are in top plane if blocks
        end_point = frame_start_vert + 4 if style == "blocks" else frame_start_vert + 1

        # loop through to get the four vertices that compose the face                                
        for frame_vert in range(frame_start_vert, end_point):
            fcurves = [action.fcurves.new(data_path % vert_index, i) for i in range(3)]  # fcurves for x, y, z
            frame_counter = 0  # go through each frame and add position
            temp_v = mesh.vertices[vert_index].co                 

            # loop through frames
            for frame in frames:
                vals = [temp_v[0], temp_v[1], frame[frame_start_vert]]  # new x, y, z positions
                for i in range(3):  # for each x, y, z set each corresponding fcurve
                    fcurves[i].keyframe_points.insert(frame_counter, vals[i], {'FAST'})   

                frame_counter += frame_step_size  # skip frames for smoother animation

            vert_index += 1

        # only skip vertices if made of blocks
        if style == "blocks":
            vert_index += 4


# create material with given name, apply to object
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号