show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次从零开始
- 安装了blender软件
- 并且了解了界面
- 并且在界面上对物体进行了操作
- 还有什么可以玩的呢?🤔
- 在shell中启动blender
blender
- 移动右侧提示区宽度
- 选择Script调板
for obj in bpy.data.objects:
print(obj)
- 看看现在都有些什么对象
- 和Scene Collection 一样
- 计划删除立方体
- 在3d视图中
- 选中立方体
- 立方体出现 橙色边缘
- 右键
- 按下X键
- 3D视图主舞台上Cube消失了
- data面板中
- cube对象消失了
- 信息面板显示
- 删除具体语句
- 删除了一个对象
- 选择第一句
- 鼠标右键
- 选择拷贝
- 到游乐场
- 粘贴
- 执行
- 删除了0个对象
- 因为没有选择
- 在场景调板
- 选中 摄影机
- 在 3d视图
- 摄影机 出现橙色外轮廓
- 在python调板中
- 按⬆️键
- 找到上一条命令
- 回车执行
- 将摄影机删除
- 3d视图 、 场景视图
- 都找不到 摄影机 了
- 选择了之后
- 就可以用代码删除
- 如何用代码选择呢?
bpy.ops.object.select_all(action="SELECT") # 取消选择所有物体
bpy.ops.object.delete() # 删除选定的物体
- 执行之后
- 最后的灯
- 也被删除了
- 新建文件
- 对当前项目不保存
- Don't save
bpy.ops.object.select_all(action="SELECT") # 取消选择所有物体
bpy.ops.object.delete() # 删除选定的物体
- 粘贴代码 到 游乐场
- 并执行
- 一次性删除3个物体
- 清场成功
- 可以添加一些物体吗?
- 选中3D视图主舞台
- 左手小拇指 先按下shift不松手
- 左手 再按下 a
- 同时放开 两个按键
- 调出上下文菜单
- 选中Cube进行添加
- 3D视图主舞台上出现新Cube
- data面板中 出现 新cube对象
- 消息面板中,出现命令
- 选中命令
- 右键 拷贝 命令
- 拷贝之后
- 命令进入剪贴板
bpy.ops.mesh.primitive_cube_add(size=2, enter_editmode=False, location=(0, 0, 0))
- 在python调板中
- 粘贴并执行
- 场景中出现
- 两个Cube
- 3d视图中
- 这两个Cube完全重合
- 想要避免完全重合
- 需要控制位置
bpy.ops.mesh.primitive_cube_add(size=2, enter_editmode=False, location=(0, 0, 3))
- 将初始位置设置为(0,0,3)
- 3d视图中
- 新Cube立方体
- 不重合
- 是否可以将函数中的参数清空?
- 先清空场景
- 在清空函数参数
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()
bpy.ops.mesh.primitive_cube_add()
- 清空场景中的对象后
- 在(0,0,0)的位置生成了Cube
- 这时候再设置Cube的Location
- 设置
- 位置
- 旋转
- 缩放
bpy.data.objects["Cube"].location = (1,2,3)
bpy.data.objects["Cube"].rotation_euler = (0.2,0.4,0.6)
bpy.data.objects["Cube"].scale = (1,2,3)
- 设置成功
- 观察属性
- 这里面用到的bpy什么意思?
help(bpy)
- bpy 是一个 通过python控制blender的module
- 里面有三个字模块
- ops
- path
- utils
- 我们使用的是ops
help(bpy.ops)
- 查看帮助
- ops应该里面存的都是工具
- 通过工具进行各种操作
- operations
- 所以叫ops
- 选中3D视图主舞台
- shift + a
- 创建一个 Cylinder 圆柱体
- 在信息调板中
- 选中信息
- 粘贴到python调板
- 就像primitive_cube_add一样
- 这里 是 primitive_cylinder_add
- 应该都是类似的结构
py.ops.mesh.primitive_cylinder_add(radius=1, depth=2, enter_editmode=False, location=(0, 0, 3))
- 可以找出对应关系吗?
- 先按⬆️ 找到上一条命令
- 再按 ctrl + 退格
- 按单词退格删除
py.ops.mesh.
- 按下tab
- 这都什么意思呢?
- 添加的形状都有对应关系
English | 中文 |
---|---|
Plane | 矩形平面 |
Cube | 正立方体 |
Circle | 圆形平面 |
Ico Sphere | 多面体 |
Cylinder | 圆柱体 |
Cone | 圆锥体 |
Torus | 圆环 |
Grid | 网格 |
Monkey | 猴子 |
- 好像可以加个猴子?
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()
bpy.ops.mesh.primitive_monkey_add()
键鼠配合 | 操作 | 效果 |
---|---|---|
鼠标中键 | 滚动 | 镜头推拉 |
鼠标中键 | 按住拖动 | 镜头旋转 |
shift + 鼠标中键 | 点击拖动 | 镜头平移 |
- 旋转摄影机
- 确实是个猴
- 函数里面有什么参数呢?
bpy.ops.mesh.primitive_monkey_add(
- 按下tab 观察参数
- 参数含义
参数 | 含义 |
---|---|
size=2 | 尺寸 |
calc_uvs=True | 计算uv面 |
enter_editmode=False | 进入编辑模式 |
align='WORLD' | 对齐方式 |
location=(0, 0, 0) | 所在位置 |
rotation=(0, 0, 0) | 旋转角度 |
- 猴创建之后
- 还能再移动吗?
-
选中猴子
- shift+空格
-
还是三种颜色
- 沿着 红绿蓝 三个坐标轴移动
- 分别对应着 xyz 三个移动轴
- 可以移动他的位置
- 可以用代码移动吗?
bpy.data.objects["Suzanne"].location = (1,2,3)
bpy.data.objects["Suzanne"].rotation_euler = (0.2,0.4,0.6)
bpy.data.objects["Suzanne"].scale = (1,1,1.5)
- 效果
- 参数
- 为啥会有只猴呢?
- 来自于电影
- 用于测试
- 还有什么类似的模型吗?
- 这次 了解了
- blender背后的机制
- 表面上
- 添加对象、删除对象、修改对象
- 本质上 都是在后面
- 控制台 去调用 一些函数 完成的
- 也可以直接
- 调用函数完成功能
- 调用函数时
- 不使用参数也可以
- 函数会使用默认的函数参数
- 可以拿这些Mesh对象排队布阵吗?🤔
- 我们下次再说!👋