Blender 3D:第四单元:与高级教程起飞
Prologue
::序言
Now that we’ve covered the basics of writing a working addon and making it installable, let’s add some refinements to its functionality.
::现在我们已经了解了写一个可用的附加程序的基本知识,
To start with, users normally add new objects via the Add menu which pops up when pressing SHIFT + A , rather than via a custom panel. Can our script add a new “Tetrahedron” item to that menu? Yes it can.
::首先,用户通常通过按下SHIFT+A时弹出的添加菜单来添加新对象,而不是通过自定义面板.我们的脚本可以在菜单中添加一个新的"四面体"项目吗?是的.
Also, our script currently requires us to adjust its setting (the “Upside-Down” checkbox)
before
it performs its action. In user-interface parlance, this is the ordering “Object→Setting→Action”: select an object, specify the settings for the action, then perform the action. Whereas the preferred order in Blender 2.5
x
is “Object→Action→Setting”: which means the action is performed with some initial settings, which the user is then free to modify while observing their effect. This gives a much smoother workflow, rather than the user having to guess what the effects will be before applying them, and then undoing and trying again if they guessed wrong.
::此外,我们的脚本目前要求我们在执行操作之前调整其设置 (倒置选框).在用户界面语言中,这是命令Object→Setting→Action:选择一个对象,指定操作的设置,然后执行操作.而在Blender 2.5x中首选的顺序是Object→Action→Setting:这意味着操作是使用一些初始设置执行的,用户可以在观察它们的影响时自由修改.这使得工作流程更顺,而不是用户在应用它们之前猜测效果是什么,然后撤销并再次尝试如果他们猜错了.
(Of course, since our example script creates a new object rather than modifying an existing one, the initial “Object” step is not relevant here. But it is to other operators.)
:当然,由于我们的示例脚本创建了一个新的对象而不是修改一个现有的对象,所以最初的"对象"步骤在这里不相关.但它对其他操作符是相关的.)
So the modifications we need to make to our script are:
::我们需要对脚本进行修改是:
-
Get rid of the existing Panel subclass.
::删除现有的Panel子类. -
Our
register
function will add a new entry to the Add menu (specifically, the mesh-add submenu) to invoke our Operator subclass.
::我们的注册函数将在Add菜单 (具体来说,是网格-add子菜单) 中添加一个新条目来调用我们的Operator子类. -
When our operator is invoked, a panel will appear, with all the settings controls we previously had, except for the “Add” button. The user can play with these settings, and observe the effect on the newly-created object immediately.
::当调用操作符时,会出现一个面板,里面包含我们以前所有的设置控件,除了"添加"按.用户可以使用这些设置,并立即观察新创建对象的效果.
The nice thing is, Blender does most of the hard work for us, so we only need to edit a few lines of code to achieve all the above!
::很好的一点是, 混器为我们做了大部分的艰苦工作,
Adding To The Add Menu
::添加到添加菜单
This needs to be done in two steps. First we need a function which will be invoked when Blender creates its Add menu: this will add an entry that invokes our custom operator by its name. Specifically, we will add our custom item to the “Mesh” submenu of the “Add” menu. We can also assign an icon to the menu item; here I’m using the generic plugin icon:
::这需要在两个步骤中完成.首先我们需要一个函数,当Blender创建添加菜单时将会调用它:这将添加一个输入,通过它的名称调用我们的自定义操作符.具体来说,我们将添加我们的自定义项在"添加"菜单的"Mesh"子菜单中.我们也可以将图标分配给菜单项;在这里我使用通用的插件图标:
def add_to_menu(self, context) : self.layout.operator("mesh.make_tetrahedron", icon = "PLUGIN") #end add_to_menu
# version 2.72b only allows for the icon value from the set: # ("NONE", "QUESTION", "ERROR", "CANCEL", "TRIA_RIGHT", "TRIA_DOWN", # "TRIA_LEFT", "TRIA_UP", "ARROW_LEFTRIGHT", "PLUS", "DISCLOSURE_TRI_DOWN", # "DISCLOSURE_TRI_RIGHT", "RADIOBUT_OFF", "RADIOBUT_ON", "MENU")
Having done that, we change our
register
function to add our
add_to_menu
item to a list that Blender uses to create its Add→Mesh menu:
::加入我们的add_to_menu项到Blender用来创建Add→Mesh菜单的列表中:
def register() : bpy.utils.register_class(MakeTetrahedron) bpy.types.INFO_MT_mesh_add.append(add_to_menu) #end register
Note this
bpy.types.INFO_MT_mesh_add
object is not currently mentioned in the API documentation; I found it by examining the scripts that come bundled with Blender.
::需要注意的是,这个bpy.types.INFO_MT_mesh_add对象目前没有在API文档中提到;我通过检查与Blender捆绑的脚本来发现它.
And of course we should clean up ourselves, so the
unregister
function needs to remove the item we added:
::取消注册函数需要删除我们添加的项目:
def unregister() : bpy.utils.unregister_class(MakeTetrahedron) bpy.types.INFO_MT_mesh_add.remove(add_to_menu) #end unregister
Fixing Up The UI
::修复用户界面
Note that previously, our
register
and
unregister
functions were attaching a custom property to Blender’s
Scene
class to hold our setting value. That code is now gone, but we still need the property. Instead, it will now be attached directly to our
MakeTetrahedron
class.
::需要注意的是,以前我们的注册和取消注册函数将一个自定义属性附加到Blender的Scene类中以保持我们的设置值. 现在这个代码已经消失了,但我们仍然需要该属性. 相反,它现在将直接附加到我们的MakeTetrahedron类.
Also, remember we said we were getting rid of the
TetrahedronMakerPanel
class? In fact we keep the
draw
method from that, and move it to our
MakeTetrahedron
operator, only getting rid of the last button in the panel for invoking the operator. This is because by the time the panel is being drawn, the operator has already been invoked.
::另外,还记得我们说我们要去掉TetrahedronMakerPanel类? 事实上我们保留了draw方法,并将其移到MakeTetrahedron操作符,只去掉调用操作符的最后一个按. 这是因为当面板被绘制时,已经调用了操作符.
We also need to tell Blender that we are conforming to the Object→Action→Settings convention, by adding the
"REGISTER"
item to our
bl_options
.
::我们还需要告诉Blender我们正在遵守Object→Action→Settings的规则,通过在bl_options中添加"REGISTER"项.
So the header of our operator class now looks like this:
::我们的运算符类的标题现在看起来像这样:
class MakeTetrahedron(bpy.types.Operator) : bl_idname = "mesh.make_tetrahedron" bl_label = "Tetrahedron" bl_options = {"REGISTER", "UNDO"} inverted = bpy.props.BoolProperty \ ( name = "Upside Down", description = "Generate the tetrahedron upside down", default = False ) def draw(self, context) : TheCol = self.layout.column(align = True) TheCol.prop(self, "inverted") #end draw
Previously our custom property was called
make_tetrahedron_inverted
, but here I just call it
inverted
, because after all it is being attached to our own class, so there should be no worry about name clashes.
::现在我们将它称为反向, 因为它被附加到我们自己的类, 所以不应该担心名称冲突.
Note that I also changed the
bl_label
text, taking out the word “Add”. This is redundant, because our label will be appearing in a menu that is already titled “Add”.
::需要注意的是,我还改变了bl_label的文字,删除了"添加"这个词. 这很多余,因为我们的标签将出现在已经标题为"添加"的菜单中.
invoke
Versus
execute
::调用与执行对比
The last thing to do is rearrange the code for actually creating the tetrahedron object. Previously we had it in a method called
invoke
, and that method will still be called when our operator is selected from the Add→Mesh menu. Then our
draw
method will be called, so our panel will also appear. But then, if the user makes adjustments to the controls in our panel, Blender will invoke a different operator method, called
execute
.
::最后要做的就是重新排列实际创建四面体对象的代码.以前我们有一个称为invoke的方法,当我们从Add→Mesh菜单中选择操作符时,该方法仍然会被调用.然后我们的draw方法会被调用,所以我们的面板也会出现.但是,如果用户对我们的面板中的控件进行调整,Blender会调用一个不同的操作符方法,称为execute.
To the user, it looks like they are making adjustments to an already-created object. But in fact our
execute
method can do exactly the same thing as
invoke
, namely create a new object every time it’s called! Blender will take care of getting rid of previously-created objects, so the user won’t know the difference.
::用户看起来像是对已经创建的对象进行调整. 但实际上我们的执行方法可以与调用做完全相同的事情,即每次调用时创建一个新对象! Blender 将处理以前创建的对象,因此用户不会知道区别.
Nice, isn’t it? But in order for this to work, our code needs to do one thing more: ensure that our newly-created object is the only selected, active object. So the following is added after
NewObj
has been created and linked into the scene:
::很好,不是吗?但是为了让这一切能够起作用,我们的代码需要做一件事:确保我们新创建的对象是唯一被选中的,活跃的对象.所以在创建 NewObj 并链接到场景后,添加以下内容:
bpy.ops.object.select_all(action = "DESELECT") NewObj.select = True context.scene.objects.active = NewObj
Put It All Together
::让所有这些东西都结合起来
Note that the object-creation code has been moved into a common routine that I have called
action_common
. This can then be called from both the
invoke
and
execute
methods.
::需要注意的是,对象创建代码已经被移动到一个常见的程序中,我称之为 action_common.
import math import bpy import mathutils class MakeTetrahedron(bpy.types.Operator) : bl_idname = "mesh.make_tetrahedron" bl_label = "Tetrahedron" bl_options = {"REGISTER", "UNDO"} inverted = bpy.props.BoolProperty \ ( name = "Upside Down", description = "Generate the tetrahedron upside down", default = False ) def draw(self, context) : TheCol = self.layout.column(align = True) TheCol.prop(self, "inverted") #end draw def action_common(self, context) : Scale = -1 if self.inverted else 1 Vertices = \ [ mathutils.Vector((0, -1 / math.sqrt(3),0)), mathutils.Vector((0.5, 1 / (2 * math.sqrt(3)), 0)), mathutils.Vector((-0.5, 1 / (2 * math.sqrt(3)), 0)), mathutils.Vector((0, 0, Scale * math.sqrt(2 / 3))), ] NewMesh = bpy.data.meshes.new("Tetrahedron") NewMesh.from_pydata \ ( Vertices, [], [[0, 1, 2], [0, 1, 3], [1, 2, 3], [2, 0, 3]] ) NewMesh.update() NewObj = bpy.data.objects.new("Tetrahedron", NewMesh) context.scene.objects.link(NewObj) bpy.ops.object.select_all(action = "DESELECT") NewObj.select = True context.scene.objects.active = NewObj #end action_common def execute(self, context) : self.action_common(context) return {"FINISHED"} #end execute def invoke(self, context, event) : self.action_common(context) return {"FINISHED"} #end invoke #end MakeTetrahedron def add_to_menu(self, context) : self.layout.operator("mesh.make_tetrahedron", icon = "PLUGIN") #end add_to_menu def register() : bpy.utils.register_class(MakeTetrahedron) bpy.types.INFO_MT_mesh_add.append(add_to_menu) #end register def unregister() : bpy.utils.unregister_class(MakeTetrahedron) bpy.types.INFO_MT_mesh_add.remove(add_to_menu) #end unregister if __name__ == "__main__" : register() #end if
Undocumented Blender
::没有证书的混合器
That
INFO_MT_mesh_add
object is one of a bunch of undocumented things lurking in the
bpy.types
module. They all have names of the form
prefix
_
type
_
restofname
, where
prefix
is an all-uppercase mnemonic for the category of object (mostly a window type, e.g.
INFO
for the Info window, which is where the main menu bar appears, though there are also names for major object categories like
MESH
and
LAMP
), and
type
indicates the class of object:
HT
for a window header UI object (
bpy.types.Header
),
MT
for a menu (
bpy.types.Menu
),
OT
for an operator, and
PT
for a panel (
bpy.types.Panel
). The
OT
ones seem to correspond directly to objects in
bpy.ops
, but at a lower level; it’s probably easier just to use the official
bpy.ops
objects. As for the
HT
,
MT
and
PT
objects, these all have
append
,
prepend
and
remove
methods that you can use to customize them:
append
adds a widget at the end (right or bottom), while
prepend
puts it at the front (left or top).
::INFO_MT_mesh_add对象是bpy.types模块中隐藏的一些未经记录的对象之一.它们都有形式前_type_restofname的名称,前是对象类别的全大写记忆符 (主要是窗口类型,例如Info窗口,这是主菜单的出现位置,尽管主要对象类别也有一些名称,如MESH和LAMP),类型表示对象类别:HT为窗口头部UI对象 (bpy.types.Header),MT为菜单 (bpy.types.Menu),OT为操作员,PT为面板 (bpy.types.Panel).OT对象似乎更容易直接对应bpy.ops中的对象,但在较低的水平上;它可能只是使用官方的bpy.
Since they aren’t (yet) mentioned in the official Blender documentation, here is a list of all the ones I’ve been able to find:
::由于它们在官方的Blender文档中没有被提及,所以我列出了我能够找到的所有这些:
Operator Category | Header | Menu | Panel |
---|---|---|---|
Bone Properties | BONE_PT_constraints, BONE_PT_context_bone, BONE_PT_custom_props, BONE_PT_deform, BONE_PT_display, BONE_PT_inverse_kinematics, BONE_PT_relations, BONE_PT_transform, BONE_PT_transform_locks | ||
Movie Clip Editor | CLIP_HT_header | CLIP_MT_camera_presets, CLIP_MT_clip, CLIP_MT_proxy, CLIP_MT_reconstruction, CLIP_MT_select, CLIP_MT_select_grouped, CLIP_MT_select_mode, CLIP_MT_stabilize_2d_specials, CLIP_MT_track, CLIP_MT_track_color_presets, CLIP_MT_track_color_specials, CLIP_MT_track_transform, CLIP_MT_track_visibility, CLIP_MT_tracking_settings_presets, CLIP_MT_tracking_specials, CLIP_MT_view | CLIP_PT_active_mask_point, CLIP_PT_active_mask_spline, CLIP_PT_display, CLIP_PT_footage, CLIP_PT_footage_info, CLIP_PT_marker, CLIP_PT_marker_display, CLIP_PT_mask, CLIP_PT_mask_display, CLIP_PT_mask_layers, CLIP_PT_objects, CLIP_PT_plane_track, CLIP_PT_proxy, CLIP_PT_stabilization, CLIP_PT_tools_cleanup, CLIP_PT_tools_clip, CLIP_PT_tools_geometry, CLIP_PT_tools_grease_pencil, CLIP_PT_tools_marker, CLIP_PT_tools_mask, CLIP_PT_tools_object, CLIP_PT_tools_orientation, CLIP_PT_tools_plane_tracking, CLIP_PT_tools_solve, CLIP_PT_tools_tracking, CLIP_PT_track, CLIP_PT_track_settings, CLIP_PT_tracking_camera |
Cloth Properties | CLOTH_MT_presets | ||
Console | CONSOLE_HT_header | CONSOLE_MT_console, CONSOLE_MT_language | |
Cycles Renderer | CYCLES_MT_integrator_presets, CYCLES_MT_sampling_presets | ||
Object Data Context | DATA_PT_active_spline, DATA_PT_area, DATA_PT_bone_group_specials, DATA_PT_bone_groups, DATA_PT_camera, DATA_PT_camera_display, DATA_PT_camera_dof, DATA_PT_cone, DATA_PT_context_arm, DATA_PT_context_camera, DATA_PT_context_curve, DATA_PT_context_lamp, DATA_PT_context_lattice, DATA_PT_context_mesh, DATA_PT_context_metaball, DATA_PT_context_speaker, DATA_PT_curve_texture_space, DATA_PT_custom_props_arm, DATA_PT_custom_props_camera, DATA_PT_custom_props_curve, DATA_PT_custom_props_lamp, DATA_PT_custom_props_lattice, DATA_PT_custom_props_mesh, DATA_PT_custom_props_metaball, DATA_PT_custom_props_speaker, DATA_PT_customdata, DATA_PT_display, DATA_PT_distance, DATA_PT_empty, DATA_PT_falloff_curve, DATA_PT_font, DATA_PT_geometry_curve, DATA_PT_ghost, DATA_PT_iksolver_itasc, DATA_PT_lamp, DATA_PT_lattice, DATA_PT_lens, DATA_PT_mball_texture_space, DATA_PT_metaball, DATA_PT_metaball_element, DATA_PT_modifiers, DATA_PT_motion_paths, DATA_PT_normals, DATA_PT_paragraph, DATA_PT_pathanim, DATA_PT_pose_library, DATA_PT_preview, DATA_PT_shadow, DATA_PT_shadow_game, DATA_PT_shape_curve, DATA_PT_shape_keys, DATA_PT_skeleton, DATA_PT_speaker, DATA_PT_spot, DATA_PT_sunsky, DATA_PT_text_boxes, DATA_PT_texture_space, DATA_PT_uv_texture, DATA_PT_vertex_colors, DATA_PT_vertex_groups | ||
Dopesheet | DOPESHEET_HT_header | DOPESHEET_MT_channel, DOPESHEET_MT_gpencil_channel, DOPESHEET_MT_gpencil_frame, DOPESHEET_MT_key, DOPESHEET_MT_key_transform, DOPESHEET_MT_marker, DOPESHEET_MT_select, DOPESHEET_MT_view | |
Filebrowser | FILEBROWSER_HT_header | ||
Fluid Simulation | FLUID_MT_presets | ||
Graph Editor | GRAPH_HT_header | GRAPH_MT_channel, GRAPH_MT_key, GRAPH_MT_key_transform, GRAPH_MT_marker, GRAPH_MT_select, GRAPH_MT_view | |
UV/Image Editor | IMAGE_HT_header | IMAGE_MT_image, IMAGE_MT_image_invert, IMAGE_MT_select, IMAGE_MT_uvs, IMAGE_MT_uvs_mirror, IMAGE_MT_uvs_select_mode, IMAGE_MT_uvs_showhide, IMAGE_MT_uvs_snap, IMAGE_MT_uvs_transform, IMAGE_MT_uvs_weldalign, IMAGE_MT_view | IMAGE_PT_active_mask_point, IMAGE_PT_active_mask_spline, IMAGE_PT_game_properties, IMAGE_PT_image_properties, IMAGE_PT_mask, IMAGE_PT_mask_display, IMAGE_PT_mask_layers, IMAGE_PT_paint, IMAGE_PT_paint_curve, IMAGE_PT_paint_stroke, IMAGE_PT_sample_line, IMAGE_PT_scope_sample, IMAGE_PT_tools_brush_appearance, IMAGE_PT_tools_brush_texture, IMAGE_PT_tools_brush_tool, IMAGE_PT_tools_mask, IMAGE_PT_tools_mask_texture, IMAGE_PT_view_histogram, IMAGE_PT_view_properties, IMAGE_PT_view_vectorscope, IMAGE_PT_view_waveform |
Info Window | INFO_HT_header | INFO_MT_add, INFO_MT_armature_add, INFO_MT_curve_add, INFO_MT_edit_curve_add, INFO_MT_file, INFO_MT_file_export, INFO_MT_file_external_data, INFO_MT_file_import, INFO_MT_game, INFO_MT_help, INFO_MT_mesh_add, INFO_MT_render, INFO_MT_report, INFO_MT_surface_add, INFO_MT_window | |
Lamp Properties | LAMP_MT_sunsky_presets | ||
Logic Editor | LOGIC_HT_header | LOGIC_MT_logicbricks_add, LOGIC_MT_view | LOGIC_PT_properties |
Mask Properties | MASK_MT_animation, MASK_MT_mask, MASK_MT_select, MASK_MT_transform, MASK_MT_visibility | ||
Material Properties | MATERIAL_MT_specials, MATERIAL_MT_sss_presets | MATERIAL_PT_context_material, MATERIAL_PT_custom_props, MATERIAL_PT_diffuse, MATERIAL_PT_flare, MATERIAL_PT_halo, MATERIAL_PT_mirror, MATERIAL_PT_options, MATERIAL_PT_physics, MATERIAL_PT_preview, MATERIAL_PT_shading, MATERIAL_PT_shadow, MATERIAL_PT_specular, MATERIAL_PT_sss, MATERIAL_PT_strand, MATERIAL_PT_transp, MATERIAL_PT_transp_game, MATERIAL_PT_volume_density, MATERIAL_PT_volume_integration, MATERIAL_PT_volume_lighting, MATERIAL_PT_volume_options, MATERIAL_PT_volume_shading, MATERIAL_PT_volume_transp | |
Mesh Properties | MESH_MT_shape_key_specials, MESH_MT_vertex_group_specials | ||
NLA Editor | NLA_HT_header | NLA_MT_add, NLA_MT_edit, NLA_MT_edit_transform, NLA_MT_marker, NLA_MT_select, NLA_MT_view | |
Node Editor | NODE_HT_header | NODE_MT_add, NODE_MT_category_CMP_CONVERTOR, NODE_MT_category_CMP_DISTORT, NODE_MT_category_CMP_GROUP, NODE_MT_category_CMP_INPUT, NODE_MT_category_CMP_LAYOUT, NODE_MT_category_CMP_MATTE, NODE_MT_category_CMP_OP_COLOR, NODE_MT_category_CMP_OP_FILTER, NODE_MT_category_CMP_OP_VECTOR, NODE_MT_category_CMP_OUTPUT, NODE_MT_category_SH_CONVERTOR, NODE_MT_category_SH_GROUP, NODE_MT_category_SH_INPUT, NODE_MT_category_SH_LAYOUT, NODE_MT_category_SH_NEW_CONVERTOR, NODE_MT_category_SH_NEW_GROUP, NODE_MT_category_SH_NEW_INPUT, NODE_MT_category_SH_NEW_LAYOUT, NODE_MT_category_SH_NEW_OP_COLOR, NODE_MT_category_SH_NEW_OP_VECTOR, NODE_MT_category_SH_NEW_OUTPUT, NODE_MT_category_SH_NEW_SCRIPT, NODE_MT_category_SH_NEW_SHADER, NODE_MT_category_SH_NEW_TEXTURE, NODE_MT_category_SH_OP_COLOR, NODE_MT_category_SH_OP_VECTOR, NODE_MT_category_SH_OUTPUT, NODE_MT_category_TEX_CONVERTOR, NODE_MT_category_TEX_DISTORT, NODE_MT_category_TEX_GROUP, NODE_MT_category_TEX_INPUT, NODE_MT_category_TEX_LAYOUT, NODE_MT_category_TEX_OP_COLOR, NODE_MT_category_TEX_OUTPUT, NODE_MT_category_TEX_PATTERN, NODE_MT_category_TEX_TEXTURE, NODE_MT_node, NODE_MT_node_color_presets, NODE_MT_node_color_specials, NODE_MT_select, NODE_MT_view | NODE_PT_active_node_color, NODE_PT_active_node_generic, NODE_PT_active_node_properties, NODE_PT_backdrop, NODE_PT_category_CMP_CONVERTOR, NODE_PT_category_CMP_DISTORT, NODE_PT_category_CMP_GROUP, NODE_PT_category_CMP_INPUT, NODE_PT_category_CMP_LAYOUT, NODE_PT_category_CMP_MATTE, NODE_PT_category_CMP_OP_COLOR, NODE_PT_category_CMP_OP_FILTER, NODE_PT_category_CMP_OP_VECTOR, NODE_PT_category_CMP_OUTPUT, NODE_PT_category_SH_CONVERTOR, NODE_PT_category_SH_GROUP, NODE_PT_category_SH_INPUT, NODE_PT_category_SH_LAYOUT, NODE_PT_category_SH_NEW_CONVERTOR, NODE_PT_category_SH_NEW_GROUP, NODE_PT_category_SH_NEW_INPUT, NODE_PT_category_SH_NEW_LAYOUT, NODE_PT_category_SH_NEW_OP_COLOR, NODE_PT_category_SH_NEW_OP_VECTOR, NODE_PT_category_SH_NEW_OUTPUT, NODE_PT_category_SH_NEW_SCRIPT, NODE_PT_category_SH_NEW_SHADER, NODE_PT_category_SH_NEW_TEXTURE, NODE_PT_category_SH_OP_COLOR, NODE_PT_category_SH_OP_VECTOR, NODE_PT_category_SH_OUTPUT, NODE_PT_category_TEX_CONVERTOR, NODE_PT_category_TEX_DISTORT, NODE_PT_category_TEX_GROUP, NODE_PT_category_TEX_INPUT, NODE_PT_category_TEX_LAYOUT, NODE_PT_category_TEX_OP_COLOR, NODE_PT_category_TEX_OUTPUT, NODE_PT_category_TEX_PATTERN, NODE_PT_category_TEX_TEXTURE, NODE_PT_quality |
Object Properties | OBJECT_PT_animation, OBJECT_PT_constraints, OBJECT_PT_context_object, OBJECT_PT_custom_props, OBJECT_PT_delta_transform, OBJECT_PT_display, OBJECT_PT_duplication, OBJECT_PT_groups, OBJECT_PT_motion_paths, OBJECT_PT_relations, OBJECT_PT_transform, OBJECT_PT_transform_locks | ||
Outliner | OUTLINER_HT_header | OUTLINER_MT_edit_datablocks, OUTLINER_MT_search, OUTLINER_MT_view | |
Particle Properties | PARTICLE_PT_boidbrain, PARTICLE_PT_cache, PARTICLE_PT_children, PARTICLE_PT_context_particles, PARTICLE_PT_custom_props, PARTICLE_PT_draw, PARTICLE_PT_emission, PARTICLE_PT_field_weights, PARTICLE_PT_force_fields, PARTICLE_PT_hair_dynamics, PARTICLE_PT_physics, PARTICLE_PT_render, PARTICLE_PT_rotation, PARTICLE_PT_velocity, PARTICLE_PT_vertexgroups | ||
Physics Properties | PHYSICS_PT_add, PHYSICS_PT_cloth, PHYSICS_PT_cloth_cache, PHYSICS_PT_cloth_collision, PHYSICS_PT_cloth_field_weights, PHYSICS_PT_cloth_stiffness, PHYSICS_PT_collision, PHYSICS_PT_domain_boundary, PHYSICS_PT_domain_gravity, PHYSICS_PT_domain_particles, PHYSICS_PT_dp_advanced_canvas, PHYSICS_PT_dp_brush_source, PHYSICS_PT_dp_brush_velocity, PHYSICS_PT_dp_brush_wave, PHYSICS_PT_dp_cache, PHYSICS_PT_dp_canvas_initial_color, PHYSICS_PT_dp_canvas_output, PHYSICS_PT_dp_effects, PHYSICS_PT_dynamic_paint, PHYSICS_PT_field, PHYSICS_PT_fluid, PHYSICS_PT_game_collision_bounds, PHYSICS_PT_game_obstacles, PHYSICS_PT_game_physics, PHYSICS_PT_rigid_body, PHYSICS_PT_rigid_body_collisions, PHYSICS_PT_rigid_body_constraint, PHYSICS_PT_rigid_body_dynamics, PHYSICS_PT_smoke, PHYSICS_PT_smoke_adaptive_domain, PHYSICS_PT_smoke_cache, PHYSICS_PT_smoke_field_weights, PHYSICS_PT_smoke_fire, PHYSICS_PT_smoke_flow_advanced, PHYSICS_PT_smoke_groups, PHYSICS_PT_smoke_highres, PHYSICS_PT_softbody, PHYSICS_PT_softbody_cache, PHYSICS_PT_softbody_collision, PHYSICS_PT_softbody_edge, PHYSICS_PT_softbody_field_weights, PHYSICS_PT_softbody_goal, PHYSICS_PT_softbody_solver | ||
Properties Properties | PROPERTIES_HT_header | ||
Render Layer Properties | RENDERLAYER_PT_freestyle, RENDERLAYER_PT_freestyle_lineset, RENDERLAYER_PT_freestyle_linestyle, RENDERLAYER_PT_layer_options, RENDERLAYER_PT_layer_passes, RENDERLAYER_PT_layers | ||
Render Properties | RENDER_MT_ffmpeg_presets, RENDER_MT_framerate_presets, RENDER_MT_lineset_specials, RENDER_MT_presets | RENDER_PT_antialiasing, RENDER_PT_bake, RENDER_PT_dimensions, RENDER_PT_embedded, RENDER_PT_encoding, RENDER_PT_freestyle, RENDER_PT_game_display, RENDER_PT_game_player, RENDER_PT_game_shading, RENDER_PT_game_sound, RENDER_PT_game_stereo, RENDER_PT_game_system, RENDER_PT_motion_blur, RENDER_PT_output, RENDER_PT_performance, RENDER_PT_post_processing, RENDER_PT_render, RENDER_PT_shading, RENDER_PT_stamp | |
Scene Properties | SCENE_PT_audio, SCENE_PT_color_management, SCENE_PT_custom_props, SCENE_PT_game_navmesh, SCENE_PT_keying_set_paths, SCENE_PT_keying_sets, SCENE_PT_physics, SCENE_PT_rigid_body_cache, SCENE_PT_rigid_body_field_weights, SCENE_PT_rigid_body_world, SCENE_PT_scene, SCENE_PT_simplify, SCENE_PT_unit | ||
Sequencer Window | SEQUENCER_HT_header | SEQUENCER_MT_add, SEQUENCER_MT_add_effect, SEQUENCER_MT_marker, SEQUENCER_MT_select, SEQUENCER_MT_strip, SEQUENCER_MT_view, SEQUENCER_MT_view_toggle | SEQUENCER_PT_edit, SEQUENCER_PT_effect, SEQUENCER_PT_filter, SEQUENCER_PT_input, SEQUENCER_PT_mask, SEQUENCER_PT_modifiers, SEQUENCER_PT_preview, SEQUENCER_PT_proxy, SEQUENCER_PT_scene, SEQUENCER_PT_sound, SEQUENCER_PT_view |
Texture Properties | TEXTURE_MT_envmap_specials, TEXTURE_MT_specials | TEXTURE_PT_blend, TEXTURE_PT_clouds, TEXTURE_PT_colors, TEXTURE_PT_context_texture, TEXTURE_PT_custom_props, TEXTURE_PT_distortednoise, TEXTURE_PT_envmap, TEXTURE_PT_envmap_sampling, TEXTURE_PT_image, TEXTURE_PT_image_mapping, TEXTURE_PT_image_sampling, TEXTURE_PT_influence, TEXTURE_PT_magic, TEXTURE_PT_mapping, TEXTURE_PT_marble, TEXTURE_PT_musgrave, TEXTURE_PT_pointdensity, TEXTURE_PT_pointdensity_turbulence, TEXTURE_PT_preview, TEXTURE_PT_stucci, TEXTURE_PT_voronoi, TEXTURE_PT_voxeldata, TEXTURE_PT_wood | |
Text Editor | TEXT_HT_header | TEXT_MT_edit, TEXT_MT_edit_select, TEXT_MT_edit_to3d, TEXT_MT_format, TEXT_MT_templates, TEXT_MT_templates_osl, TEXT_MT_templates_py, TEXT_MT_text, TEXT_MT_toolbox, TEXT_MT_view | TEXT_PT_find, TEXT_PT_properties |
Timeline | TIME_HT_header | TIME_MT_autokey, TIME_MT_cache, TIME_MT_frame, TIME_MT_playback, TIME_MT_view | |
User Preferences | USERPREF_HT_header | USERPREF_MT_addons_dev_guides, USERPREF_MT_interaction_presets, USERPREF_MT_keyconfigs, USERPREF_MT_splash | USERPREF_PT_addons, USERPREF_PT_edit, USERPREF_PT_file, USERPREF_PT_input, USERPREF_PT_interface, USERPREF_PT_system, USERPREF_PT_tabs, USERPREF_PT_theme |
3D View | VIEW3D_HT_header | VIEW3D_MT_armature_specials, VIEW3D_MT_bone_options_disable, VIEW3D_MT_bone_options_enable, VIEW3D_MT_bone_options_toggle, VIEW3D_MT_brush, VIEW3D_MT_brush_paint_modes, VIEW3D_MT_edit_armature, VIEW3D_MT_edit_armature_parent, VIEW3D_MT_edit_armature_roll, VIEW3D_MT_edit_curve, VIEW3D_MT_edit_curve_ctrlpoints, VIEW3D_MT_edit_curve_segments, VIEW3D_MT_edit_curve_showhide, VIEW3D_MT_edit_curve_specials, VIEW3D_MT_edit_font, VIEW3D_MT_edit_lattice, VIEW3D_MT_edit_mesh, VIEW3D_MT_edit_mesh_clean, VIEW3D_MT_edit_mesh_delete, VIEW3D_MT_edit_mesh_edges, VIEW3D_MT_edit_mesh_extrude, VIEW3D_MT_edit_mesh_faces, VIEW3D_MT_edit_mesh_normals, VIEW3D_MT_edit_mesh_select_mode, VIEW3D_MT_edit_mesh_showhide, VIEW3D_MT_edit_mesh_specials, VIEW3D_MT_edit_mesh_vertices, VIEW3D_MT_edit_meta, VIEW3D_MT_edit_meta_showhide, VIEW3D_MT_edit_surface, VIEW3D_MT_edit_text_chars, VIEW3D_MT_hide_mask, VIEW3D_MT_hook, VIEW3D_MT_make_links, VIEW3D_MT_make_single_user, VIEW3D_MT_mirror, VIEW3D_MT_object, VIEW3D_MT_object_animation, VIEW3D_MT_object_apply, VIEW3D_MT_object_clear, VIEW3D_MT_object_constraints, VIEW3D_MT_object_game, VIEW3D_MT_object_group, VIEW3D_MT_object_parent, VIEW3D_MT_object_quick_effects, VIEW3D_MT_object_showhide, VIEW3D_MT_object_specials, VIEW3D_MT_object_track, VIEW3D_MT_paint_vertex, VIEW3D_MT_paint_weight, VIEW3D_MT_particle, VIEW3D_MT_particle_showhide, VIEW3D_MT_particle_specials, VIEW3D_MT_pose, VIEW3D_MT_pose_apply, VIEW3D_MT_pose_constraints, VIEW3D_MT_pose_group, VIEW3D_MT_pose_ik, VIEW3D_MT_pose_library, VIEW3D_MT_pose_motion, VIEW3D_MT_pose_propagate, VIEW3D_MT_pose_showhide, VIEW3D_MT_pose_slide, VIEW3D_MT_pose_specials, VIEW3D_MT_pose_transform, VIEW3D_MT_sculpt, VIEW3D_MT_select_edit_armature, VIEW3D_MT_select_edit_curve, VIEW3D_MT_select_edit_lattice, VIEW3D_MT_select_edit_mesh, VIEW3D_MT_select_edit_metaball, VIEW3D_MT_select_edit_surface, VIEW3D_MT_select_object, VIEW3D_MT_select_paint_mask, VIEW3D_MT_select_paint_mask_vertex, VIEW3D_MT_select_particle, VIEW3D_MT_select_pose, VIEW3D_MT_snap, VIEW3D_MT_tools_projectpaint_clone, VIEW3D_MT_tools_projectpaint_stencil, VIEW3D_MT_transform, VIEW3D_MT_transform_armature, VIEW3D_MT_transform_base, VIEW3D_MT_transform_object, VIEW3D_MT_uv_map, VIEW3D_MT_vertex_group, VIEW3D_MT_view, VIEW3D_MT_view_align, VIEW3D_MT_view_align_selected, VIEW3D_MT_view_cameras, VIEW3D_MT_view_navigation | VIEW3D_PT_background_image, VIEW3D_PT_context_properties, VIEW3D_PT_etch_a_ton, VIEW3D_PT_sculpt_options, VIEW3D_PT_sculpt_symmetry, VIEW3D_PT_sculpt_topology, VIEW3D_PT_tools_armatureedit, VIEW3D_PT_tools_armatureedit_options, VIEW3D_PT_tools_brush, VIEW3D_PT_tools_brush_appearance, VIEW3D_PT_tools_brush_curve, VIEW3D_PT_tools_brush_stroke, VIEW3D_PT_tools_brush_texture, VIEW3D_PT_tools_curveedit, VIEW3D_PT_tools_latticeedit, VIEW3D_PT_tools_mask_texture, VIEW3D_PT_tools_mballedit, VIEW3D_PT_tools_meshedit, VIEW3D_PT_tools_meshedit_options, VIEW3D_PT_tools_objectmode, VIEW3D_PT_tools_particlemode, VIEW3D_PT_tools_posemode, VIEW3D_PT_tools_posemode_options, VIEW3D_PT_tools_projectpaint, VIEW3D_PT_tools_rigidbody, VIEW3D_PT_tools_surfaceedit, VIEW3D_PT_tools_textedit, VIEW3D_PT_tools_vertexpaint, VIEW3D_PT_tools_weightpaint, VIEW3D_PT_tools_weightpaint_options, VIEW3D_PT_transform_orientations, VIEW3D_PT_view3d_cursor, VIEW3D_PT_view3d_curvedisplay, VIEW3D_PT_view3d_display, VIEW3D_PT_view3d_meshdisplay, VIEW3D_PT_view3d_meshstatvis, VIEW3D_PT_view3d_motion_tracking, VIEW3D_PT_view3d_name, VIEW3D_PT_view3d_properties |
Window Manager Properties | WM_MT_operator_presets | ||
World Properties | WORLD_PT_ambient_occlusion, WORLD_PT_context_world, WORLD_PT_custom_props, WORLD_PT_environment_lighting, WORLD_PT_game_context_world, WORLD_PT_game_mist, WORLD_PT_game_physics, WORLD_PT_game_world, WORLD_PT_gather, WORLD_PT_indirect_lighting, WORLD_PT_mist, WORLD_PT_preview, WORLD_PT_stars, WORLD_PT_world |