Blender Python API中文介绍文档四

news/2024/12/2 7:05:28/

ReferenceAPI Usage

Blender有很多内部链接数据类型,这些数据类型需要api,这个文档帮助你了解api

API文档范围

涵盖了bpy.types通过bpy.context获取 ,bpy.data获取blender文件数据

其他模块bge,bmeshaud不使用Blender-api,因此这篇文档不介绍

获取数据

API最常用的就是获取blender文件的数据,最好意识到数据块的ID,通过ID来获取属性

ID数据

数据块ID作为高层数据容器

从用户界面这个还不是很明显,当开发的时候就会体会到

数据ID类型包括场景,组,物体,网格,屏幕,世界,电枢,图片和纹理。详见bpy.types.ID子类,以下是数据块的ID的特点:

1.      ID是blend文件数据,因此加载一个blend文件会重新加载整个新的数据块

2.      通过bpy.data.*获取id

3.      每一个数据块有一个独一无二的.name属性,它显示在界面中

4.      动画数据存储在ID的.animation_data

5.      Id可以通过python加载复制和删除

6.      ID有自己的垃圾回收机制,当保存的时候会释放ID

7.      当数据块有一个外部数据引用时,这是一个典型的ID 数据块

简单数据获取

一个简单的例子,来演示如何调整物体位置:

Properties Window -> Object -> Transform -> Location打开这个界面,右键选择OnlinePython Reference,这会连接到bpy.types.Object.location

你会使用.location ,这是一个3维浮点型数组,如何获取这个数据呢?

最常用的是方法是通过context,因为object可以在很多方式获取-modifiers, functions, textures and constraints.,所以很容易被覆盖

但是如果你想获取任意选择的数据,你仅仅需要查看bpy.context文档,有各种具体的方式:

使用weight_paint_object获取的数据仅仅用于权重图模式

用户最近选择的要用active成员

获取单一的用户选择的物体,例如active_bone,active_pose_bone,active_node例如active_object

bpy.context.active_object.location

另一个获取object的方式是bpy.types.BlendData.objects,它没有列在bpy.data.objects,因为bpy.data是bpy.types.BlendData一个实例,bpy.data.objects是一个集合,你可以获取其中的成员:

bpy.data.objects["Cube"].location

嵌套属性

复杂的例子:

# access a render layers samples

bpy.context.scene.render.layers["RenderLayer"].samples

 

# access to the current weight paint brushsize

bpy.context.tool_settings.weight_paint.brush.size

 

# check if the window is fullscreen

bpy.context.window.screen.show_fullscreen

几种方式帮助你得到你想要的数据:

  • Use the Python console’s auto-complete(自动补全) to inspect properties. This can be hit-and-miss but has the advantage that you can easily see the values of properties and assign them to interactively see the results.
  • Copy(复制) the Data-Path from the user interface(用户界面). Explained further in :ref:`Copy Data Path <info_data_path_copy>`
  • Using the documentation(文档) to follow references. Explained further in :ref:`Indirect Data Access <info_data_path_indirect>`

复制数据路径

Blender可以计算工具tips显示的Python字符串,在python:…一行的下面,这使得使用API文档可以找到数据的源头

复制数据路径(来自bpy.types.ID)到其属性

在默认窗口模式下,tab选择修改模式,为立方体添加一个子分支表面修改(?这个一直没有找到如何添加。。。)

现在,移动鼠标到View按钮,工具tip包括bpy.types.SubsurfModifier.levels但是我想要物体的这个路径属性

注意文本复制不包括bpy.data.collection["name"].组件,因为你不会收集每一次获取的寻找,通常你想用context而不是通过名字获取每一个 bpy.types.ID实例

输入ID的路径到终端,bpy.context.active_object.包含最后一个点,不要点击enter

现在右键鼠标,选择Copy Data Path,将结果粘贴到终端里。

bpy.context.active_object.modifiers["Subsurf"].levels

点击enter键得如下‘1’结果,改变其值:

bpy.context.active_object.modifiers["Subsurf"].levels=2

可以在Subdivision-Surfacemodifier界面更新,cube也更新

间接路径获取

这个例子会让我们更加深入地了解,展示了获取激活雕刻刷子纹理的步骤

通过python获取刷子的纹理,并对其进行对比设置:

1.      在默认窗口视图模式,确保3D-view标题的雕刻模式

2.      从工具条扩展纹理面板,增加新的纹理,注意纹理按钮本身没有有效连接

3.      相反设置没有在雕刻面板显示。因此在属性面板观察纹理

在属性按钮选择纹理context

选择Brush图标,显示Brush纹理

扩展颜色面板里可以定位对比按钮(?)

4.      右键对比按钮OnlinePython Reference进入bpy.types.Texture.contrast

5.      此时我们看到对比是纹理的一个属性了,下一步如何从Brush获取纹理

6.      查看参考文档底部,Brush.texture

7.      现在纹理可以通过bpy.data.brushes["BrushName"].texture获取,但是通常情况下我们不想通过名字获取brush,因此下面是获取激活的brush的方法:bpy.context.brush

多种方式获取同样的数据:

bpy.context.brush.texture.contrast
bpy.context.sculpt.brush.texture.contrast
bpy.data.brushes["BrushName"].texture.contrast

如果你在开发以个用户工具一般用bpy.context因为用户通常希望工具依据他们的选择被操作

自动化呢,你最好用bpy.data,因为你想获取明确的数据并对其进行操作处理,不论用户现在的视图设置是什么样的。

操作

Blender中所有的快捷键和按钮都会调用一个操作,操作在bpy.ops中定义

只要按钮有tips和Python:行(?)就可以得到操作名,如果没有说明没有相关的定义

你可以将鼠标移到按钮,然后ctrl-c复制到键盘上

也可以右键选择OnlinePython Reference,它显示了参数和默认操作(有文件名和行号),这对喜欢查看源码的人有用

注意:不是所有操作都有效,详见usingoperators

信息视图

Blender记录了所有的操作和现实在信息空间,在文件按钮下边,可以下拉看到。选择脚本视图模式可以看到其输出。你可以执行一些操作然后看其显示的内容,删除点例如:

每一个命令可以被鼠标右键选择,复制粘贴到文本编辑器中

注意:不是所有操作都会显示,图像放大就没有,因为它不是那么重要,详见ShowAll Operators


http://www.ppmy.cn/news/521630.html

相关文章

三维动画制作软件blender3.0中文版

近几年&#xff0c;各种设计软件层出不穷&#xff0c;例如犀牛、Enscape、ZBrush、3DMax等等比比皆是&#xff0c;以至于很多设计师不知道该学习哪一个。此次小编要推荐的是blender3.0&#xff0c;这是一款跨平台全能的三维动画制作软件&#xff0c;提供从建模、动画、材质、渲…

DOD Digital Engineering Vision 数字工程策略与实施

DOD Digital Engineering Vision DOD的数字工程策略与实施&#xff0c;仅供个人学习使用&#xff0c;不代表个人意见和观点&#xff01;&#xff01;&#xff01; Digital Engineering Strategy and Implementation Ms. Philomena Zimmerman Office of the Under Secretary …

android定位之GPS,WIFI和GPRS(NETWORK)方式的定位(含实现源码)

android定位之GPS,WIFI和GPRS&#xff08;NETWORK&#xff09;方式的定位&#xff08;含实现源码&#xff09; 以下代码复制即可执行&#xff1a; Java源码&#xff1a; Android中LocationManager的提供了一系列方法来地理位置相关的问题&#xff0c;包括查询上一个已知位置…

GPS定位类型

1.GPS三种类型 此选项缺省为Stand Alone模式。 Stand Alone:是目前比较成熟、通用的GPS定位模式&#xff0c;仅通过卫星信号定位。 MS Based:也称为MSB&#xff0c;从服务器下载卫星信息&#xff0c;然后通过卫星信号定位&#xff0c;会比StandAlone模式搜星过程快一些…

GPS NMEA协议,0183 定位数据格式 双模定位:GNXXX GPS+BD 完整版

作者&#xff1a;haomingHu email&#xff1a;hhm_master163.com 背景&#xff1a;最近需要在imx6ull 的Linux板子上面接收定位模块的0183格式的数据并进行解析&#xff0c;并且用QT实现&#xff0c;绘制定位信息各种数据的动态曲线图 GPS NMEA协议&#xff0c;0183 定位数据…

常用的几种GPRS模块介绍 GPRS模块选哪个好

常用的几种GPRS模块介绍 GPRS模块选哪个好 所属分类&#xff1a;公司新闻发布时间&#xff1a;2018-12-05 GPRS模块采用GPRS的嵌入式系统可以实现无线数据传输领域的复杂应用&#xff0c;在远程抄表、工业控制、遥感遥测、智能交通领域都得到了广泛的应用。那么现在市场上常见…

STM32开发GPRS传输的GPS定位器-android studio开发客户端APP显示轨迹

前面文章介绍如何开发定位器硬件&#xff0c;单片机软件&#xff0c;服务器软件&#xff0c;上位机客户端软件&#xff0c;下面介绍如何使用android studio开发客户端APP显示轨迹。 能自己做的事从来不求人&#xff0c;前面用C#实现了PC端显示定位数据轨迹&#xff0c;用androi…

GPRS信号强度(收集)

GPRS信号强度 ATCSQ CSQ: 15,99 其中的&#xff11;&#xff15;为信号强度值&#xff0c;&#xff19;&#xff19;为误码率&#xff0c;信号在&#xff08;&#xff11;&#xff10;&#xff5e;&#xff13;&#xff11;&#xff09;之间均为有效值&#xff0c;如当地信号强…