随笔 - 633,  文章 - 0,  评论 - 13,  阅读 - 48万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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   大话人生  阅读(174)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2022-04-18 操作yaml-5
2022-04-18 fixture固件装饰器做用例的前后置-4
2018-04-18 pycharm(pythoon3)_django2.0_xadmin创建测试用例后台管理系统
点击右上角即可分享
微信分享提示