IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> blender学习笔记(一):python脚本的使用 -> 正文阅读

[游戏开发]blender学习笔记(一):python脚本的使用

blender版本是3.0,下载链接:https://www.blender.org/download/


常用API

官方API文档: https://docs.blender.org/api/current/index.html
BlenderPython API中文版:BlenderPython API

STL模型导入

官方API说明:
https://docs.blender.org/api/current/bpy.ops.import_mesh.html
在这里插入图片描述

# 导入teethup.stl模型
bpy.ops.import_mesh.stl(filepath="/home/zzy/blender-3.0.0-linux-x64/scripts/teethup.stl")

图片导入

blender中直接插入图片是作为参考图,不能渲染,因此需要先加入一张平面,然后设置图片材质
参考博文:blender python为物体添加材质

# 新建一个平面
bpy.ops.mesh.primitive_cube_add()

# 添加颜色材质
bpy.data.materials.new('mat')
mat = bpy.data.materials['mat']
bpy.data.objects["Plane"].data.materials.append(bpy.data.materials['mat'])
mat.use_nodes = True
r = 1
g = 0
b = 0
a = 1
bpy.data.materials['mat'].node_tree.nodes["Principled BSDF"].inputs[0].default_value=(r, g, b, a)

# 添加图片材质
bpy.data.materials.new('mat')
mat = bpy.data.materials['mat']
bpy.data.objects["Plane"].data.materials.append(bpy.data.materials['mat'])
mat.use_nodes = True
matnodes = mat.node_tree.nodes
#新建图片节点
tex = matnodes.new('ShaderNodeTexImage')
tex.image = bpy.data.images.load(filepath = "/home/zzy/blender-3.0.0-linux-x64/scripts/material/img1.jpg")  
disp=bpy.data.materials['mat'].node_tree.nodes["Principled BSDF"].inputs['Base Color']
mat.node_tree.links.new(disp, tex.outputs[0])

物体选择

官方API说明:
https://docs.blender.org/api/current/bpy.ops.object.html
在这里插入图片描述

#为了选定某个物体操作,所以先不要选择所有物体
bpy.ops.object.select_all(action='DESELECT')
#通过select_pattern命令来按照物体命名查找选定物体,支持通配符*模糊匹配
bpy.ops.object.select_pattern(pattern="Cube", case_sensitive=False, extend=True)

参考博客:blender 2.8 python bpy 编写脚本操作物体

物体位置变换

官方API说明:
https://docs.blender.org/api/current/bpy.ops.transform.html

# set location
bpy.data.objects["teethup"].location = (0,0,0)
# set scale
bpy.data.objects["teethup"].scale = (1,1,1)
# set rotation
bpy.data.objects["teethup"].rotation_euler = (-1.57, 0, 3.14)
# or
bpy.ops.object.select_all(action='DESELECT')
bpy.data.objects["teethup"].select_set(True)
bpy.ops.transform.rotate(value=0, orient_axis='X', orient_type='GLOBAL')
bpy.ops.transform.rotate(value=1.57, orient_axis='Y', orient_type='GLOBAL')
bpy.ops.transform.rotate(value=3.14, orient_axis='Z', orient_type='GLOBAL')

一步到位(使用旋转矩阵设置rotation):

bpy.ops.object.select_all(action='DESELECT')
bpy.ops.object.select_pattern(pattern="teethup", case_sensitive=False, extend=True)
bpy.ops.transform.translate(value=(0, 0, 0), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), 
                                                           orient_matrix_type='GLOBAL', constraint_axis=(False, True, False), mirror=True,
                                                            use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1,     
                                                            use_proportional_connected=False, use_proportional_projected=False, release_confirm=True)

摄像头设置

选中摄像头,设置location

bpy.ops.object.select_all(action='DESELECT')
bpy.data.objects["Camera"].select_set(True)
bpy.data.objects["Camera"].location = (0,0,30)

渲染并保存为图片

官方API说明:
https://docs.blender.org/api/current/bpy.ops.render.html

在这里插入图片描述

bpy.data.scenes["Scene"].render.image_settings.file_format = 'PNG'
bpy.data.scenes["Scene"].render.filepath = "/home/zzy/blender-3.0.0-linux-x64/scripts/output/output1.png"
bpy.data.scenes["Scene"].render.film_transparent = True
bpy.ops.render.render( write_still=True )

参考博客

  1. Blender脚本开发
  2. 在Blender 2.8使用Python编程(入门级)
  3. Blender下用Python实现模型文件导入、渲染和动画生成
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-12-24 18:50:05  更:2021-12-24 18:51:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 20:38:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码