Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 4 column 1
---
show: step
version: 1.0
enable_checker: true
本教程同步发布在:
个人网站: `https://oeasy.org`
蓝桥云课: `https://www.lanqiao.cn/courses/3584`
GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
Gitee: `https://gitee.com/overmind1980/oeasypython`
---- oeasy Python 0678
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 配套视频
- 上次 了解了
- blender背后的机制
- 表面上
- 添加对象、删除对象、修改对象
- 本质上 都是在后面
- 控制台 去执行python脚本 完成的
- 可以直接
- 使用代码
- 完成功能
- 我还是想要
新添加一个物体?🤔- 怎么添加呢?🤔
- 想要添加对象
- 在3d视图上方
- 点击Add菜单
- 点击Monkey 猴子
- 出现了猴子
- 但是埋在 立方体中
- 在游乐场 执行
- 清空代码
bpy.ops.object.select_all(action="SELECT") # 选择所有物体
bpy.ops.object.delete() # 删除选定的物体
- 场景清空
- 真的出来一只猴
- 可以 用快捷键 完成 添加对象 吗?
- 还是先清场景
bpy.ops.object.select_all(action="SELECT") # 选择所有物体
bpy.ops.object.delete() # 删除选定的物体
- 光标放在Add上
- 出现快捷键提示
- 选中3D视图主舞台
- 左手小拇指 先按下shift不松手
- 左手无名指 再按下 a
- 同时放开 两个按键
- 调出Add菜单
- 选中Cube进行添加
- 三个地方出现新Cube
- 3d视图
- 场景 数据视图
- 当前文件 数据视图
- 消息面板中,出现命令
- 这就是新增Cube
- 对应的代码
- 选中 代码
- 右键
- 拷贝之后
- 命令进入剪贴板
bpy.ops.mesh.primitive_cube_add(size=2, enter_editmode=False, location=(0, 0, 0))
- 在python调板中
- 粘贴并执行
- 执行结果 返回
- {FINISHED}
- 场景调调板中出现
- 两个Cube
- 文件调板中出现
- 两个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
- Rotation
- Scale
- 设置
- 位置
- 旋转
- 缩放
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
- Give access to blender data and utility functions
- 给予了
- 对于blender数据的存取
- 以及实用功能
- bpy里面有三个子模块
- ops
- path
- utils
- 我们使用的是
- bpy.ops
help(bpy.ops)
- 查看帮助
- ops里面存的工具
- 可以用来进行各种操作
- operations
- 所以叫ops
- 选中3D视图主舞台
- shift + a
- 创建一个 Cylinder 圆柱体
- 在信息调板中
- 选中信息
- 粘贴到python调板
- primitive_cylinder_add函数
- 就像 之前的 primitive_cube_add一样
- 是类似的结构
py.ops.mesh.primitive_cylinder_add(radius=1, depth=2, enter_editmode=False, location=(0, 0, 3))
- 可以找出
所有这类的函数吗?
- 先按⬆️ 找到上一条命令
- 重复按 ctrl + 退格
- 按照单词退格
- 直到下图状态
bpy.ops.mesh.primitive_
- 按下tab
- 这都什么意思呢?
- 这对应着
- 各种mesh类型
- 添加的形状都有对应关系
| 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+空格
- 松手
- G
-
还是三种颜色
- 沿着 红绿蓝 三个坐标轴移动
- 分别对应着 xyz 三个移动轴
- 可以移动他的位置
- 能用代码移动吗?
- 把猴子拖到游乐场
- 猴子为啥叫做苏珊娜?!
- 来自于电影
- 叫做苏珊娜的猴子
- 用于测试
- 还有什么类似的
- 知名模型吗?
wget https://labfile.oss.aliyuncs.com/courses/3584/Utah_teapot_%28solid%29_low_poly%2B.stl
- 文件 File
- 导入 import
- stl文件
- 斯坦福 兔子
-
先把导入的犹他茶壶删除掉
- 场景中 只有 猴子
-
尝试用代码改变
- 位置 position
- 旋转 rotation
- 缩放 scale
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)
- 猴子拉长了脸😄
- 参数
- 这次 用代码
- 调用 一些函数 完成了
- 新建物体
- 设置物体位置、旋转、缩放
-
可以用纯代码
- 新建Mesh对象阵列
- 并且排队布阵吗?🤔
-
我们下次再说!👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。



































