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.)
:sad当然,由于我们的示例脚本创建了一个新的对象而不是修改一个现有的对象,所以最初的"对象"步骤在这里不相关.但它对其他操作符是相关的.)

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


Last modified: Monday, 17 March 2025, 2:54 PM