You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Blender中使用Python实现网格连续挤出并逐步旋转的方法

选中网格旋转的Python实现方法

在Blender Python中,实现选中网格的旋转有两种常用方式,适配不同场景:

1. 使用界面操作对应函数(适合交互类脚本)

直接调用bpy.ops.transform.rotate(),和界面点击旋转的逻辑一致,需确保当前处于编辑模式:

import bpy
import math

# 切换到编辑模式(如果当前不是)
if bpy.context.object.mode != 'EDIT':
    bpy.ops.object.mode_set(mode='EDIT')

# 绕Z轴旋转45度(注意:value参数需传入弧度值)
bpy.ops.transform.rotate(value=math.radians(45), orient_axis='Z')
  • 参数说明:orient_axis可选'X'/'Y'/'Z'指定旋转轴;value是旋转的弧度值,用math.radians()可将角度转为弧度。

2. 直接操作网格数据(适合批量/非交互脚本,更高效)

绕过操作符,直接对选中的网格元素(顶点/边/面)应用旋转矩阵,稳定性更高:

import bpy
import math
from mathutils import Matrix

# 切换到对象模式获取网格数据
bpy.ops.object.mode_set(mode='OBJECT')
active_obj = bpy.context.active_object
mesh_data = active_obj.data

# 筛选出选中的顶点
selected_vertices = [v for v in mesh_data.vertices if v.select]

# 创建旋转矩阵:绕Y轴旋转30度
rotation_matrix = Matrix.Rotation(math.radians(30), 4, 'Y')

# 对每个选中顶点应用旋转
for vert in selected_vertices:
    vert.co = rotation_matrix @ vert.co

# 更新网格并切回编辑模式
mesh_data.update()
bpy.ops.object.mode_set(mode='EDIT')

如果是在连续挤出流程中使用,建议在每次挤出后根据当前模式选择对应方法,确保上下文匹配即可完成旋转操作。

内容的提问来源于stack exchange,提问作者doby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:46:11