Skip to content

Latest commit

 

History

History
475 lines (311 loc) · 9.97 KB

638-2015968-添加立方体_Cube_调用函数_默认参数.sy.md

File metadata and controls

475 lines (311 loc) · 9.97 KB
show version enable_checker
step
1.0
true

python_音频处理_midi制作

开始

  • 上次从零开始
    • 安装了blender软件
    • 并且了解了界面
    • 并且在界面上对物体进行了操作
  • 还有什么可以玩的呢?🤔

启动blender

  • 在shell中启动blender
blender
  • 移动右侧提示区宽度
    • 选择Script调板

图片描述

首先观察

for obj in bpy.data.objects:
	print(obj)
  • 看看现在都有些什么对象

图片描述

  • 和Scene Collection 一样

图片描述

  • 计划删除立方体

删除立方体

  • 在3d视图中
    • 选中立方体
    • 立方体出现 橙色边缘
    • 右键

图片描述

  • 按下X

删除结果

图片描述

  • 3D视图主舞台上Cube消失了

图片描述

  • data面板中
    • cube对象消失了

图片描述

从信息调板到游乐场

  • 信息面板显示
    1. 删除具体语句
    2. 删除了一个对象
  • 选择第一句
    • 鼠标右键
    • 选择拷贝

图片描述

  • 到游乐场
    1. 粘贴
    2. 执行

图片描述

  • 删除了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视图主舞台
    1. 左手小拇指 先按下shift不松手
    2. 左手 再按下 a
    3. 同时放开 两个按键
    4. 调出上下文菜单

图片描述

  • 选中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

bpy.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))
  • 可以找出对应关系吗?

尝试找到所有创建mesh的函数

  • 先按⬆️ 找到上一条命令
    • 再按 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对象排队布阵吗?🤔
  • 我们下次再说!👋