1.代码1-将动画关键帧中的所有Y轴都设置为1.0,

代码:

import bpy

# 设置重置到的Y坐标值
reset_to = 1.0

# 遍历所有当前选中的对象
for object in bpy.context.selected_objects:
    # 如果对象没有动画,我们也应该重置其Y坐标
    object.location.y = reset_to
    
    # 检查对象是否有动画数据以及动画动作
    if not object.animation_data or not object.animation_data.action:
        # 没有动作,所以没有其他事情可做
        continue
    
    # 获取对象的动画动作
    action = object.animation_data.action
    # 在动画动作中查找与'location'(位置)相关的第二个F曲线
    fcurve = action.fcurves.find('location', index=1) 
    
    # 如果没有找到F曲线
    if not fcurve:
        # Y位置没有被动画化,所以没有其他事情可做
        continue
        
    # 遍历F曲线上的所有关键帧点
    for keypoint in fcurve.keyframe_points:
        # 重置每个关键帧点的Y坐标
        keypoint.co.y = reset_to 
        
    # 更新F曲线以应用更改
    fcurve.update()

这段脚本是用于Blender的,它的作用是遍历所有当前选中的对象,并将它们的Y坐标重置为1.0,同时检查这些对象是否有与位置相关的动画动作。如果有,它会找到控制Y坐标的F曲线,并重置该曲线上所有关键帧点的Y坐标值,最后更新F曲线以应用这些更改。

 

2.修改成一个随机值

代码

import bpy  # 导入Blender Python API
import random  # 导入Python的随机数模块

for object in bpy.context.selected_objects:  # 遍历所有当前选中的对象
    # 如果对象没有动画,我们也应该重置它的Y坐标
    object.location.y = random.uniform(-2, 2)  # 将Y坐标设置为-2到2之间的一个随机值

    if not object.animation_data or not object.animation_data.action:  # 检查对象是否有动画数据和动作
        # 没有动作,所以没有更多的事情要做
        continue  # 继续下一个循环迭代

    action = object.animation_data.action  # 获取对象的动作数据
    fcurve = action.fcurves.find('location', index=1)  # 在动作中查找与Y轴位置相关的曲线

    if not fcurve:  # 如果没有找到曲线
        # Y位置没有动画,所以没有更多的事情要做
        continue  # 继续下一个循环迭代

    for keypoint in fcurve.keyframe_points:  # 遍历曲线上的所有关键帧点
        keypoint.co.y = random.uniform(-2, 2)  # 将关键帧点的Y坐标设置为-2到2之间的一个随机值
    fcurve.update()  # 更新曲线,使更改生效

这段代码的作用是遍历所有选中的对象,随机地改变它们在Y轴上的位置,并且如果这些对象有动画,还会随机地改变它们动画中Y轴位置的关键帧值。

 

posted on 2024-04-18 14:57  大话人生  阅读(157)  评论(0编辑  收藏  举报