oeasy blender 005 调用函数添加猴头Monkey

blende005添加网格对象Mesh

  • 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。oeasy blender 005 调用函数添加猴头Monkey

开始

  • 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视图主舞台
  1. 左手小拇指 先按下shift不松手
  2. 左手无名指 再按下 a
  3. 同时放开 两个按键
  4. 调出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立方体
  • 不重合
  • 是否可以将函数中的参数清空?
清空
  • 将代码粘贴到游乐场
  1. 全选

  2. 删除

    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
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))

  • 可以找出​所有​ 这类的函数吗?

尝试找到所有创建mesh的函数
  • 先按⬆️ 找到上一条命令
  • 重复按 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对象阵列
  • 并且排队布阵吗?🤔
相关推荐
overmind4 小时前
oeasy blender007 让对象在空间列阵
blender
Nan_Shu_6145 小时前
学习: Blender 动画篇
学习·blender
overmind5 小时前
oeasy blender008 三轴旋转效果
blender
Nan_Shu_6145 小时前
学习: Blender 合成篇
学习·blender
成都渲染101云渲染66667 小时前
Blender云渲染平台哪个好?2026全面对比与选择指南
blender
CG_MAGIC1 天前
Blender幕后花絮:王国受袭——叛乱
3d·blender·贴图·建模教程·渲云渲染
overmind1 天前
oeasy blender 004 在脚本工作区选择对象删除
blender
overmind1 天前
oeasy blender 003 blender中的游乐场,用参数运行模式
blender
overmind2 天前
oeasy blender 002 工作区的控制
blender