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

Blender Python API中文介绍文档四相关推荐

  1. UG 二次开发中文帮助文档,UFun在线帮助文档, NX API 中文帮助文档

    UG 二次开发中文帮助文档,UFun在线帮助文档, NX API 中文帮助文档 在线的中文帮助文档,不用下载,网页直接查询函数: UFun函数中文帮助文档地址:http://www.ugapi.com ...

  2. JDK 11 API中文帮助文档.CHM文档无法打开问题

    JDK 11 API中文帮助文档.CHM文档无法打开问题 1)开始–运行–输入"regedit",打开注册表,找到以下分支:找到计算机\HKEY_LOCAL_MACHINE\SOF ...

  3. JAVA JDK 1.7 API中文帮助文档

    免费分享 JAVA JDK 1.7 API中文帮助文档 希望可以帮助到大家 JAVA JDK 1.7  API中文帮助文档 链接:https://pan.baidu.com/s/1puPVlExxwf ...

  4. python ctypes中文帮助文档

    15.17.ctypes- 用于Python的外部函数库 2.5版中的新功能. ctypes是Python的外部函数库.它提供C兼容的数据类型,并允许在DLL或共享库中调用函数.它可以用于在纯Pyth ...

  5. java API中文在线帮助文档各种链接

    四种链接 1.https://www.w3cschool.cn/java/dict 2.http://www.matools.com/api/java8 3.http://tool.oschina.n ...

  6. Jvectormap中文帮助文档(API)

    关于Jvectormap JVectorMap 是一个优秀的.兼容性强的用来显示矢量地图的jQuery插件.它使用 SVG 在Firefox 3 or 4, Safari, Chrome, Opera ...

  7. Java8中文api汉化文档下载【谷歌翻译最精准版】【jdk api 1.8_google.CHM】

    Java8中文api汉化文档下载[谷歌翻译最精准版][jdk api 1.8_google.CHM] 这是Java8的汉化文档,谷歌翻译非常精准! 需要的同学微信扫码发送关键字 api8 即可获取下载 ...

  8. Java8 API在线中文阅读文档

    Java8 API在线中文阅读文档 Java8 API chm格式 链接: https://pan.baidu.com/s/1vvxrBtf0we0Y6Q19q0k2Yw 提取码: etnw

  9. Python借助jieba包对中文txt文档去停用词、分词

    Python借助jieba包对中文txt文档去停用词.分词` import jieba# 创建停用词list def stopwordslist(filepath):stopwords = [line ...

最新文章

  1. Glide执行流程总结
  2. c语言精品课程网站论文免费下载,【毕业论文_c语言程序设计精品课程网站的研究与实现6喜欢就下吧材料】...
  3. linux不断安装操作系统,无人值守批量安装linux操作系统
  4. ip地址开头结尾不能为0
  5. Nexus安装及配置
  6. mysql提权_mysql提权总结
  7. 企业微信怎么删除好友 企业微信如何删除成员
  8. zabbix使用宏自动发现挂载的文件系统并进行监控
  9. 旧电脑装什么系统最快_旧电脑装什么系统好_老旧电脑适合装什么操作系统
  10. 地震勘探算法matlab,SeismicLab 地震勘探,matlab程序包, 地球物理, 学。作图工具等。 249万源代码下载- www.pudn.com...
  11. python当前时间获取_python 当前时间获取方法
  12. 两平面平行方向向量关系_方向向量和法向量的关系
  13. 电脑变wifi 用电脑建立无线网
  14. 1、Debian-Pi-Aarch64 系统安装
  15. elementUI重难点
  16. 设计模式之禅【迭代器模式】
  17. matlab C++ 实现对手机拍摄的机读卡结果识别
  18. 真实案例解析OO理论与实践
  19. opencv中findContours 和drawContours画图函数
  20. Oracle基础学习之三—查询

热门文章

  1. MAC地址与IP地址详解
  2. UC-Android逆向工程师 面试题1的分析
  3. ubuntu14.04 安装NVIDIA 显卡驱动QuardroP4000
  4. 分库分表-1| 什么是分库分表?
  5. iPhone十年的历程变化,你对未来的苹果手机抱有期待吗?
  6. word07 页码设置
  7. SAP库存管理之ABC分类法
  8. Echarts升级2:柱状图头部显示百分比、同时内容在弹框显示
  9. android MotionEvent.ACTION_CANCEL情景分析
  10. USG防火墙透明模式配置