diff options
Diffstat (limited to 'doc')
23 files changed, 6048 insertions, 923 deletions
diff --git a/doc/doxygen/Doxyfile b/doc/doxygen/Doxyfile index 8b3a97816ba..a3ccf9227d3 100644 --- a/doc/doxygen/Doxyfile +++ b/doc/doxygen/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = Blender # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = "V2.8x" +PROJECT_NUMBER = "V2.79" # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/doc/doxygen/doxygen.source.h b/doc/doxygen/doxygen.source.h index 3ef20466664..67e231212c7 100644 --- a/doc/doxygen/doxygen.source.h +++ b/doc/doxygen/doxygen.source.h @@ -160,9 +160,6 @@ * merged in docs. */ -/** \defgroup quicktime QuickTime - * \ingroup blender - /** \defgroup gui GUI */ /** \defgroup wm Window Manager diff --git a/doc/guides/python-dev-guide.txt b/doc/guides/python-dev-guide.txt deleted file mode 100644 index 75c9ccb57e5..00000000000 --- a/doc/guides/python-dev-guide.txt +++ /dev/null @@ -1,170 +0,0 @@ -Simple Blender Python Developer's Guide ---------------------------------------- - -This is an outline for a future guide yet to be written. It is meant for -programmers wanting to understand and maybe help with the embedding of Python -inside Blender. - -I - Introduction - -We could praise Python here for its many qualities, but it's probably better -to just give some links: - -The main site is at www.python.org , with documentation at www.python.org/doc/ - -Also worth of mention: it's an interpreted language and is available for -many different systems. The download includes the interpreter, many modules -(think libs), good documentation and some programs / examples. If you use -linux, there's a high chance you already have Python installed, just try -"man python". - -The reason for embedding a language environment inside Blender is to give -users the ability to access the program's internal data and functionality. -This can be used to import / export (from / to other 2d / 3d formats) or -change the data (to create new objects procedurally, among many other -interesting possibilities). Script writers (Blender Python programmers) can -also expand Blender in new ways, adding new features on-the-fly, without having -to recompile it. It is usually much easier and faster to write scripts in -Python than to code the equivalent in C. - -II - Reference material: - -There are two important texts for us in the documentation that comes -with Python ( docs also available online at www.python.org ): - -- Extending and Embedding (tutorial for C/C++ programmers) - -and specially - -- Python/C API. - -You can read the first one to get a feel for how things are done -(reference counting is probably the most important part), but the second -doc is a must. Specially useful as a fast reference is its Index, at letter -P, where all commands are. - -Specially useful commands are Py_BuildValue and the family of parsing -functions, PyArg_Parse* (PyArg_Parse(), PyArg_ParseTuple(), -PyArg_ParseTupleAndKeywords()). Py_BuildValue is usually the best way to make -Python Objects (the 'variables' that the Python Interpreter understands) -out of C ones. The PyArg_Parse* functions do the opposite, they parse -Python Objects to C variables. - -So, understand PyArg_Parse* functions, Py_BuildValue and reference -counting. The first doc has a good discussion about them. - -- C knowledge is also necessary, of course, use your favorite resource. - -- The Blender 2.25 API documentation ( www.blender.org ) is, along with -the source, our basic API ref. - -III - Directories - -The previous Blender Python API's are spread in blender/intern/python -and the C part of the current one, bpython, is at -blender/source/blender/bpython/, specially in intern/. The current -solution is a Python wrapper on top of this bpython one, at -blender/intern/python/modules/Blender/ - -Note: since it's in Python, they needed the freeze Python utility, a -process/program that creates stand-alone executables out of Python -source files -- that is, it packs together an interpreter, the needed -modules and the source of a Python program so that users of this program -don't need to have the Python interpreter already installed in their -machines to run the program -- Blender, in this case. - -The new implementation is pure C, so we won't need to "freeze" it. - -Another important dir for starters is blender/source/blender/makesdna, -where the headers with Blender structs lie. - -IV - Experimental Python - -The new implementation, currently referred to as experimental python - -exppython - was started by Michel Selten. He chose to solve the mess in -Blender Python by starting over from scratch, in C, but keeping API -compatibility with the current 2.25 API used by Blender. - -It is in blender/source/blender/python , more specifically inside -api2_2x/ - -To make it clear, exppython is the new implementation being worked on. It -will possibly become the de-facto implementation in Blender 2.28, the next -Blender version. Currently, Blender still comes with the same implementation -found in the 2.25 version of the program. So we call that the 2.25 -implementation, or bpython. - -BPython had plenty of "macro magic", lot's of complicate #define's, etc., -since a lot of the embedding work is quite repetitive. But that makes it -much harder for newbies to jump in and learn, so the new files in exppython -avoid that. - -This means: Blender, Object, Camera, Lamp, Image, Text, Window modules -(the files have the same names, ending obviously with .c and .h) - -To speed things up, some independent parts of bpython are being -integrated directly into exppython. That already happened with Draw and -BGL, both taken from opy_draw.c in the bpython/intern dir. The same is -happening with NMesh (Mesh is written in Python and imports NMesh to -extend / change its functionality). - -For a good example of dexterity with macros (cheers to the NaN -programmer(s)!), look at BGL.[ch], the OpenGL API wrapper. The defines -are in the header. - -Besides keeping compatibility with the 2.25 API, there are already some -additions to exppython: - -- some modules have access to more variables than 2.25 had; -- there are more method functions and the access is safer; -- the file selector (or file browser, if you prefer) is back: - It's now in the Window module, along with an image selector, too. -- there are totally new modules, unavailable in 2.25: - Fellow new developers joining our team are contributing new modules - that have been requested by the community for a long time. - - -V - Coding - -The Camera module is a good reference, since it is like most others, in -terms of programming, but is smaller and simple. It's in Camera.c and -Camera.h . To have it working, it was also necessary to include a line to -the end of Blender.c (registering it as a Blender submodule) and another to -modules.h (declaring its init and CreateObject method) - -Currently, one of our conventions is to prepend M_ to module functions, -doc strings, etc. and C_ to the new types we had to create for Python, -like C_Camera, C_Lamp, etc. - -If you look at Camera.[ch], you'll find code for creating the Camera -module and the Camera "type", with all its methods and access policies. -It's really a new type defined in Python, like PyInt or PyFloat, -PyString, etc. In practice, it's a "thin" (because it doesn't make -copies of the variables) wrapper for the Blender Camera Data Object. - -A note about Blender: objects in Blender share a common base, the -Object, whose attributes are things like the matrix, the location, the -rotation, the size, etc. A Camera is actually an Object of type Camera -(which means that its "data" field points to a Camera Data obj) and a -Camera Data object, which is the specific camera part of the object -(attributes like lens, clip start, etc.). Same for other objects, like -Lamp, Mesh, etc. - -That's why C_Camera is a wrapper for the Blender Camera **Data** -object. The full wrapper is Object("Camera") linked with -Camera("camera_name"). - -How to write a new module for a simple object? Use Camera.[ch] as -templates, check the specifics of your object in the makesdna dir -(for example, the camera one is DNA_camera_types.h) and make the -necessary changes. - -If you want to help exppython and in the process possibly learn more about -embedding, the Python/C API and Blender internals, there's this mailing list: - -Bf-python mailing list -Bf-python@blender.org -http://www.blender.org/mailman/listinfo/bf-python - -There you can ask what hasn't been done yet, get help, make suggestions for -new features we should consider, send bug reports, etc. diff --git a/doc/python_api/examples/bmesh.ops.1.py b/doc/python_api/examples/bmesh.ops.1.py index abce087ceb3..b307624467f 100644 --- a/doc/python_api/examples/bmesh.ops.1.py +++ b/doc/python_api/examples/bmesh.ops.1.py @@ -12,7 +12,7 @@ bm = bmesh.new() bmesh.ops.create_circle( bm, cap_ends=False, - diameter=0.2, + radius=0.2, segments=8) diff --git a/doc/python_api/examples/bpy.app.translations.py b/doc/python_api/examples/bpy.app.translations.py index e41623d2885..4256147ef31 100644 --- a/doc/python_api/examples/bpy.app.translations.py +++ b/doc/python_api/examples/bpy.app.translations.py @@ -32,3 +32,62 @@ Module References ----------------- """ + +import bpy + +# This block can be automatically generated by UI translations addon, which also handles conversion with PO format. +# See also https://wiki.blender.org/index.php/Dev:Doc/Process/Translate_Blender#Translating_non-official_addons +# It can (should) also be put in a different, specific py file. + +# ##### BEGIN AUTOGENERATED I18N SECTION ##### +# NOTE: You can safely move around this auto-generated block (with the begin/end markers!), +# and edit the translations by hand. +# Just carefully respect the format of the tuple! + +# Tuple of tuples ((msgctxt, msgid), (sources, gen_comments), (lang, translation, (is_fuzzy, comments)), ...) +translations_tuple = ( + (("*", ""), + ((), ()), + ("fr_FR", "Project-Id-Version: Copy Settings 0.1.5 (r0)\nReport-Msgid-Bugs-To: \nPOT-Creation-Date: 2013-04-18 15:27:45.563524\nPO-Revision-Date: 2013-04-18 15:38+0100\nLast-Translator: Bastien Montagne <montagne29@wanadoo.fr>\nLanguage-Team: LANGUAGE <LL@li.org>\nLanguage: __POT__\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n", + (False, + ("Blender's translation file (po format).", + "Copyright (C) 2013 The Blender Foundation.", + "This file is distributed under the same license as the Blender package.", + "FIRST AUTHOR <EMAIL@ADDRESS>, YEAR."))), + ), + (("Operator", "Render: Copy Settings"), + (("bpy.types.SCENE_OT_render_copy_settings",), + ()), + ("fr_FR", "Rendu : copier réglages", + (False, ())), + ), + (("*", "Copy render settings from current scene to others"), + (("bpy.types.SCENE_OT_render_copy_settings",), + ()), + ("fr_FR", "Copier les réglages de rendu depuis la scène courante vers d’autres", + (False, ())), + ), + # ... etc, all messages from your addon. +) + +translations_dict = {} +for msg in translations_tuple: + key = msg[0] + for lang, trans, (is_fuzzy, comments) in msg[2:]: + if trans and not is_fuzzy: + translations_dict.setdefault(lang, {})[key] = trans + +# ##### END AUTOGENERATED I18N SECTION ##### + +# Define remaining addon (operators, UI...) here. + +def register(): + # Usual operator/UI/etc. registration... + + bpy.app.translations.register(__name__, translations_dict) + + +def unregister(): + bpy.app.translations.unregister(__name__) + + # Usual operator/UI/etc. unregistration... diff --git a/doc/python_api/examples/bpy.types.Menu.4.py b/doc/python_api/examples/bpy.types.Menu.4.py new file mode 100644 index 00000000000..04ceb6654da --- /dev/null +++ b/doc/python_api/examples/bpy.types.Menu.4.py @@ -0,0 +1,81 @@ +""" +Extending the Button Context Menu ++++++++++++++++++++++++++++++++++ + +This example enables you to insert your own menu entry into the common +right click menu that you get while hovering over a value field, +color, string, etc. + +To make the example work, you have to first select an object +then right click on an user interface element (maybe a color in the +material properties) and choose *Execute Custom Action*. + +Executing the operator will then print all values. +""" + +import bpy +from bpy.types import Menu + + +def dump(obj, text): + for attr in dir(obj): + print("%r.%s = %s" % (obj, attr, getattr(obj, attr))) + + +class WM_OT_button_context_test(bpy.types.Operator): + """Right click entry test""" + bl_idname = "wm.button_context_test" + bl_label = "Run Context Test" + + @classmethod + def poll(cls, context): + return context.active_object is not None + + def execute(self, context): + value = getattr(context, "button_pointer", None) + if value is not None: + dump(value, "button_pointer") + + value = getattr(context, "button_prop", None) + if value is not None: + dump(value, "button_prop") + + value = getattr(context, "button_operator", None) + if value is not None: + dump(value, "button_operator") + + return {'FINISHED'} + + +# This class has to be exactly named like that to insert an entry in the right click menu +class WM_MT_button_context(Menu): + bl_label = "Unused" + + def draw(self, context): + pass + + +def menu_func(self, context): + layout = self.layout + layout.separator() + layout.operator(WM_OT_button_context_test.bl_idname) + +classes = ( + WM_OT_button_context_test, + WM_MT_button_context, +) + + +def register(): + for cls in classes: + bpy.utils.register_class(cls) + bpy.types.WM_MT_button_context.append(menu_func) + + +def unregister(): + for cls in classes: + bpy.utils.unregister_class(cls) + bpy.types.WM_MT_button_context.remove(menu_func) + +if __name__ == "__main__": + register() diff --git a/doc/python_api/examples/bpy.types.Operator.5.py b/doc/python_api/examples/bpy.types.Operator.5.py index 310eeceadf3..c1a49a756a0 100644 --- a/doc/python_api/examples/bpy.types.Operator.5.py +++ b/doc/python_api/examples/bpy.types.Operator.5.py @@ -2,13 +2,14 @@ Modal Execution +++++++++++++++ -This operator defines a :class:`Operator.modal` function which running, -handling events until it returns ``{'FINISHED'}`` or ``{'CANCELLED'}``. - -Grab, Rotate, Scale and Fly-Mode are examples of modal operators. -They are especially useful for interactive tools, -your operator can have its own state where keys toggle options as the operator -runs. +This operator defines a :class:`Operator.modal` function that will keep being +run to handle events until it returns ``{'FINISHED'}`` or ``{'CANCELLED'}``. + +Modal operators run every time a new event is detected, such as a mouse click +or key press. Conversely, when no new events are detected, the modal operator +will not run. Modal operators are especially useful for interactive tools, an +operator can have its own state where keys toggle options as the operator runs. +Grab, Rotate, Scale, and Fly-Mode are examples of modal operators. :class:`Operator.invoke` is used to initialize the operator as being by returning ``{'RUNNING_MODAL'}``, initializing the modal loop. diff --git a/doc/python_api/rst/bge.app.rst b/doc/python_api/rst/bge.app.rst index 34b9263db0c..e8b91ffbcaf 100644 --- a/doc/python_api/rst/bge.app.rst +++ b/doc/python_api/rst/bge.app.rst @@ -47,4 +47,3 @@ Module to access application values that remain unchanged during runtime. True if the BGE has been built with physics support. :type: bool - diff --git a/doc/python_api/rst/bge.texture.rst b/doc/python_api/rst/bge.texture.rst index 49f6c4469a4..3028ee653f8 100644 --- a/doc/python_api/rst/bge.texture.rst +++ b/doc/python_api/rst/bge.texture.rst @@ -681,7 +681,7 @@ Image classes .. attribute:: zbuff - Use depth component of render as grey scale color - suitable for texture source. + Use depth component of render as grayscale color - suitable for texture source. :type: bool @@ -817,7 +817,7 @@ Image classes .. attribute:: zbuff - Use depth component of viewport as grey scale color - suitable for texture source. + Use depth component of viewport as grayscale color - suitable for texture source. :type: bool @@ -1260,8 +1260,8 @@ Filter classes .. class:: FilterGray - Filter for gray scale effect. - Proportions of R, G and B contributions in the output gray scale are 28:151:77. + Filter for grayscale effect. + Proportions of R, G and B contributions in the output grayscale are 28:151:77. .. attribute:: previous diff --git a/doc/python_api/rst/bge_types/bge.types.BL_ShapeActionActuator.rst b/doc/python_api/rst/bge_types/bge.types.BL_ShapeActionActuator.rst index d08a761ed95..4bb3d273cb9 100644 --- a/doc/python_api/rst/bge_types/bge.types.BL_ShapeActionActuator.rst +++ b/doc/python_api/rst/bge_types/bge.types.BL_ShapeActionActuator.rst @@ -59,7 +59,7 @@ base class --- :class:`SCA_IActuator` .. attribute:: mode - The operation mode of the actuator. Can be one of :ref:`these constants<shape-action-actuator>`. + The operation mode of the actuator. Can be one of :ref:`these constants<action-actuator>`. :type: integer @@ -68,5 +68,3 @@ base class --- :class:`SCA_IActuator` The name of the property that is set to the current frame number. :type: string - - diff --git a/doc/python_api/rst/bge_types/bge.types.KX_GameObject.rst b/doc/python_api/rst/bge_types/bge.types.KX_GameObject.rst index d8cc5e45e83..c5729fd5b19 100644 --- a/doc/python_api/rst/bge_types/bge.types.KX_GameObject.rst +++ b/doc/python_api/rst/bge_types/bge.types.KX_GameObject.rst @@ -405,7 +405,7 @@ base class --- :class:`SCA_IObject` .. note:: - This attribute is experemental and may be removed (but probably wont be). + This attribute is experimental and may be removed (but probably wont be). .. note:: @@ -419,7 +419,7 @@ base class --- :class:`SCA_IObject` .. note:: - This attribute is experemental and may be removed (but probably wont be). + This attribute is experimental and may be removed (but probably wont be). .. note:: @@ -453,7 +453,7 @@ base class --- :class:`SCA_IObject` .. attribute:: childrenRecursive - all children of this object including childrens children, (read-only). + all children of this object including children's children, (read-only). :type: :class:`CListValue` of :class:`KX_GameObject`'s @@ -536,7 +536,7 @@ base class --- :class:`SCA_IObject` .. method:: getAxisVect(vect) - Returns the axis vector rotates by the objects worldspace orientation. + Returns the axis vector rotates by the object's worldspace orientation. This is the equivalent of multiplying the vector by the orientation matrix. :arg vect: a vector to align the axis. @@ -596,7 +596,7 @@ base class --- :class:`SCA_IObject` Gets the game object's linear velocity. - This method returns the game object's velocity through it's centre of mass, ie no angular velocity component. + This method returns the game object's velocity through it's center of mass, ie no angular velocity component. :arg local: * False: you get the "global" velocity ie: relative to world orientation. @@ -609,7 +609,7 @@ base class --- :class:`SCA_IObject` Sets the game object's linear velocity. - This method sets game object's velocity through it's centre of mass, + This method sets game object's velocity through it's center of mass, ie no angular velocity component. This requires a dynamic object. @@ -814,7 +814,7 @@ base class --- :class:`SCA_IObject` # do something pass - The face paremeter determines the orientation of the normal. + The face parameter determines the orientation of the normal. * 0 => hit normal is always oriented towards the ray origin (as if you casted the ray from outside) * 1 => hit normal is the real face normal (only for mesh object, otherwise face has no effect) @@ -911,7 +911,7 @@ base class --- :class:`SCA_IObject` .. note:: - The gameObject argument has an advantage that it can convert from a mesh with modifiers applied (such as subsurf). + The gameObject argument has an advantage that it can convert from a mesh with modifiers applied (such as the Subdivision Surface modifier). .. warning:: @@ -919,7 +919,7 @@ base class --- :class:`SCA_IObject` .. warning:: - If the object is a part of a combound object it will fail (parent or child) + If the object is a part of a compound object it will fail (parent or child) .. warning:: diff --git a/doc/python_api/rst/bgl.rst b/doc/python_api/rst/bgl.rst index 99f481ce998..0b31e62963c 100644 --- a/doc/python_api/rst/bgl.rst +++ b/doc/python_api/rst/bgl.rst @@ -12,7 +12,7 @@ contents: dir(bgl). A simple search on the web can point to more than enough material to teach OpenGL programming, from books to many collections of tutorials. -Here is a comprehensive `list of books <https://www.opengl.org/documentation/books/>`__ (non free). +Here is a comprehensive `list of books <https://www.khronos.org/developers/books/>`__ (non free). The `arcsynthesis tutorials <https://web.archive.org/web/20150225192611/http://www.arcsynthesis.org/gltut/index.html>`__ is one of the best resources to learn modern OpenGL and `g-truc <http://www.g-truc.net/post-opengl-samples.html#menu>`__ @@ -2067,7 +2067,7 @@ offers a set of extensive examples, including advanced features. :arg length: Returns the length of the string returned in source (excluding the null terminator). :type source: :class:`bgl.Buffer` char. :arg source: Specifies an array of characters that is used to return the source code string. - + .. function:: glShaderSource(shader, shader_string): diff --git a/doc/python_api/rst/change_log.rst b/doc/python_api/rst/change_log.rst index 5a3bf2a6d8d..21c7cf96135 100644 --- a/doc/python_api/rst/change_log.rst +++ b/doc/python_api/rst/change_log.rst @@ -1,3 +1,5 @@ +:tocdepth: 2 + Blender API Change Log ********************** @@ -5648,3 +5650,5652 @@ Added * :class:`bpy.types.SceneRenderLayer.freestyle_settings` * :class:`bpy.types.SceneRenderLayer.use_freestyle` + +2.67 to 2.68 +============ + +bpy.types.BlendDataTexts +------------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataTexts.load` (filepath, internal), *was (filepath)* + +bpy.types.DopeSheet +------------------- + +Added +^^^^^ + +* :class:`bpy.types.DopeSheet.show_modifiers` + +bpy.types.Armature +------------------ + +Added +^^^^^ + +* :class:`bpy.types.Armature.is_editmode` + +bpy.types.Curve +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Curve.is_editmode` + +bpy.types.Lattice +----------------- + +Added +^^^^^ + +* :class:`bpy.types.Lattice.is_editmode` + +bpy.types.Mesh +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Mesh.calc_smooth_groups` +* :class:`bpy.types.Mesh.is_editmode` + +bpy.types.MetaBall +------------------ + +Added +^^^^^ + +* :class:`bpy.types.MetaBall.is_editmode` + +bpy.types.ParticleSettings +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ParticleSettings.use_modifier_stack` + +bpy.types.WindowManager +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.WindowManager.popup_menu` +* :class:`bpy.types.WindowManager.pupmenu_begin__internal` +* :class:`bpy.types.WindowManager.pupmenu_end__internal` + +bpy.types.World +--------------- + +Added +^^^^^ + +* :class:`bpy.types.World.cycles_visibility` + +bpy.types.MaskSpline +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.MaskSpline.points` + +bpy.types.MaskSplines +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.MaskSplines.new` +* :class:`bpy.types.MaskSplines.remove` + +Removed +^^^^^^^ + +* **add** + +bpy.types.MeshPolygon +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.MeshPolygon.center` + +bpy.types.DecimateModifier +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.DecimateModifier.delimit` + +bpy.types.MovieTrackingSettings +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.MovieTrackingSettings.use_keyframe_selection` + +bpy.types.Node +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Node.dimensions` + +bpy.types.NodeSocket +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.NodeSocket.hide_value` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.NodeSocket.draw` (context, layout, node, text), *was (context, layout, node)* + +bpy.types.NodeSocketStandard +---------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.NodeSocketStandard.draw` (context, layout, node, text), *was (context, layout, node)* + +bpy.types.NodeSocketInterfaceStandard +------------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.NodeSocketInterfaceStandard.type` + +bpy.types.NodeTreeInputs +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.NodeTreeInputs.move` + +bpy.types.NodeTreeOutputs +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.NodeTreeOutputs.move` + +bpy.types.CyclesMaterialSettings +-------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CyclesMaterialSettings.use_transparent_shadow` + +bpy.types.CyclesRenderSettings +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.CyclesRenderSettings.sampling_pattern` + +bpy.types.RenderEngine +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderEngine.bl_use_exclude_layers` +* :class:`bpy.types.RenderEngine.bl_use_save_buffers` + +bpy.types.SmokeDomainSettings +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SmokeDomainSettings.highres_sampling` + +Removed +^^^^^^^ + +* **use_smooth_emitter** + +bpy.types.SmokeFlowSettings +--------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SmokeFlowSettings.particle_size` +* :class:`bpy.types.SmokeFlowSettings.subframes` +* :class:`bpy.types.SmokeFlowSettings.use_particle_size` + +bpy.types.SpaceProperties +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceProperties.use_limited_texture_context` + +bpy.types.SpaceView3D +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceView3D.transform_manipulators` + +Removed +^^^^^^^ + +* **use_manipulator_rotate** +* **use_manipulator_scale** +* **use_manipulator_translate** + +bpy.types.ThemeFontStyle +------------------------ + +Renamed +^^^^^^^ + +* **shadowalpha** -> :class:`bpy.types.ThemeFontStyle.shadow_alpha` +* **shadowcolor** -> :class:`bpy.types.ThemeFontStyle.shadow_value` + +bpy.types.ThemeView3D +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeView3D.wire_edit` + +bpy.types.ToolSettings +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.ToolSettings.vertex_group_subset` + +bpy.types.UserPreferences +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferences.autoexec_paths` + +2.68 to 2.69 +============ + +bpy.types.ActionActuator +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.ActionActuator.blend_mode` + +bpy.types.ColorManagedViewSettings +---------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ColorManagedViewSettings.look` + +bpy.types.ShrinkwrapConstraint +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.ShrinkwrapConstraint.project_axis` +* :class:`bpy.types.ShrinkwrapConstraint.project_axis_space` +* :class:`bpy.types.ShrinkwrapConstraint.project_limit` + +Removed +^^^^^^^ + +* **use_x** +* **use_y** +* **use_z** + +bpy.types.CurveMapping +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.CurveMapping.initialize` + +bpy.types.DynamicPaintSurface +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.DynamicPaintSurface.wave_smoothness` + +bpy.types.Mesh +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Mesh.calc_normals_split` +* :class:`bpy.types.Mesh.free_normals_split` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Mesh.calc_smooth_groups` (use_bitflags), *was ()* + +bpy.types.Scene +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Scene.frame_current_final` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Scene.collada_export` (filepath, apply_modifiers, export_mesh_type, selected, include_children, include_armatures, include_shapekeys, deform_bones_only, active_uv_only, include_uv_textures, include_material_textures, use_texture_copies, use_ngons, use_object_instantiation, sort_by_name, open_sim, export_transformation_type), *was (filepath, apply_modifiers, export_mesh_type, selected, include_children, include_armatures, include_shapekeys, deform_bones_only, active_uv_only, include_uv_textures, include_material_textures, use_texture_copies, use_ngons, use_object_instantiation, sort_by_name, second_life, export_transformation_type)* + +bpy.types.Text +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Text.current_line_index` + +bpy.types.IDMaterials +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.IDMaterials.clear` + +bpy.types.KeyMaps +----------------- + +Added +^^^^^ + +* :class:`bpy.types.KeyMaps.remove` + +bpy.types.MaskParent +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.MaskParent.type` + +bpy.types.MeshLoop +------------------ + +Added +^^^^^ + +* :class:`bpy.types.MeshLoop.normal` + +bpy.types.SimpleDeformModifier +------------------------------ + +Removed +^^^^^^^ + +* **use_relative** + +bpy.types.MovieTracking +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.MovieTracking.plane_tracks` + +bpy.types.MovieTrackingObject +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.MovieTrackingObject.plane_tracks` + +bpy.types.ShaderNodeMapping +--------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeMapping.vector_type` + +bpy.types.ShaderNodeSubsurfaceScattering +---------------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeSubsurfaceScattering.falloff` + +bpy.types.ShaderNodeTexSky +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeTexSky.ground_albedo` +* :class:`bpy.types.ShaderNodeTexSky.sky_type` + +bpy.types.ParticleSystem +------------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.ParticleSystem.co_hair` (object, particle_no, step), *was (object, modifier, particle_no, step)* + +bpy.types.Property +------------------ + +Added +^^^^^ + +* :class:`bpy.types.Property.is_argument_optional` + +bpy.types.CyclesCurveRenderSettings +----------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CyclesCurveRenderSettings.cull_backfacing` +* :class:`bpy.types.CyclesCurveRenderSettings.shape` + +Removed +^^^^^^^ + +* **encasing_ratio** +* **interpolation** +* **line_method** +* **normalmix** +* **preset** +* **segments** +* **triangle_method** +* **use_backfacing** +* **use_encasing** +* **use_joined** +* **use_parents** +* **use_smooth** +* **use_tangent_normal** +* **use_tangent_normal_correction** +* **use_tangent_normal_geometry** + +bpy.types.CyclesRenderSettings +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.CyclesRenderSettings.use_square_samples` + +bpy.types.RenderEngine +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderEngine.bind_display_space_shader` +* :class:`bpy.types.RenderEngine.support_display_space_shader` +* :class:`bpy.types.RenderEngine.unbind_display_space_shader` + +bpy.types.RenderLayer +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderLayer.use_pass_subsurface_color` +* :class:`bpy.types.RenderLayer.use_pass_subsurface_direct` +* :class:`bpy.types.RenderLayer.use_pass_subsurface_indirect` + +bpy.types.SceneGameData +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.SceneGameData.vsync` + +bpy.types.SceneRenderLayer +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SceneRenderLayer.use_pass_subsurface_color` +* :class:`bpy.types.SceneRenderLayer.use_pass_subsurface_direct` +* :class:`bpy.types.SceneRenderLayer.use_pass_subsurface_indirect` + +bpy.types.SpaceNodeEditor +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceNodeEditor.cursor_location_from_region` + +bpy.types.SpaceTextEditor +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceTextEditor.top` +* :class:`bpy.types.SpaceTextEditor.visible_lines` + +bpy.types.SpaceView3D +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceView3D.show_occlude_wire` + +bpy.types.TexMapping +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.TexMapping.vector_type` + +bpy.types.ThemeImageEditor +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeImageEditor.uv_others` +* :class:`bpy.types.ThemeImageEditor.uv_shadow` + +bpy.types.UILayout +------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.UILayout.template_list` (listtype_name, list_id, dataptr, propname, active_dataptr, active_propname, rows, maxrows, type, columns), *was (listtype_name, list_id, dataptr, propname, active_dataptr, active_propname, rows, maxrows, type)* + +bpy.types.UIList +---------------- + +Added +^^^^^ + +* :class:`bpy.types.UIList.bitflag_filter_item` +* :class:`bpy.types.UIList.draw_filter` +* :class:`bpy.types.UIList.filter_items` +* :class:`bpy.types.UIList.filter_name` +* :class:`bpy.types.UIList.use_filter_invert` +* :class:`bpy.types.UIList.use_filter_show` +* :class:`bpy.types.UIList.use_filter_sort_alpha` +* :class:`bpy.types.UIList.use_filter_sort_reverse` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.UIList.draw_item` (context, layout, data, item, icon, active_data, active_property, index, flt_flag), *was (context, layout, data, item, icon, active_data, active_property, index)* + +bpy.types.UI_UL_list +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.UI_UL_list.filter_items_by_name` +* :class:`bpy.types.UI_UL_list.sort_items_by_name` +* :class:`bpy.types.UI_UL_list.sort_items_helper` + +bpy.types.Window +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Window.cursor_modal_restore` +* :class:`bpy.types.Window.cursor_modal_set` +* :class:`bpy.types.Window.cursor_set` +* :class:`bpy.types.Window.cursor_warp` + +2.69 to 2.70 +============ + +bpy.types.BlendData +------------------- + +Added +^^^^^ + +* :class:`bpy.types.BlendData.use_autopack` + +bpy.types.ClothSettings +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.ClothSettings.sewing_force_max` +* :class:`bpy.types.ClothSettings.shrink_max` +* :class:`bpy.types.ClothSettings.shrink_min` +* :class:`bpy.types.ClothSettings.use_sewing_springs` +* :class:`bpy.types.ClothSettings.vertex_group_shrink` + +bpy.types.DupliObject +--------------------- + +Removed +^^^^^^^ + +* **matrix_original** + +bpy.types.FCurve +---------------- + +Added +^^^^^ + +* :class:`bpy.types.FCurve.update_autoflags` + +bpy.types.FModifierNoise +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.FModifierNoise.offset` + +bpy.types.FreestyleSettings +--------------------------- + +Removed +^^^^^^^ + +* **raycasting_algorithm** + +bpy.types.GameObjectSettings +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GameObjectSettings.use_record_animation` + +bpy.types.Armature +------------------ + +Added +^^^^^ + +* :class:`bpy.types.Armature.transform` + +bpy.types.Brush +--------------- + +Renamed +^^^^^^^ + +* **use_restore_mesh** -> :class:`bpy.types.Brush.use_drag_dot` + +bpy.types.Curve +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Curve.transform` + +Removed +^^^^^^^ + +* **use_time_offset** + +bpy.types.Image +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Image.filepath_from_user` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Image.gl_load` (frame, filter, mag), *was (filter, mag)* +* :class:`bpy.types.Image.gl_touch` (frame, filter, mag), *was (filter, mag)* + +bpy.types.Lattice +----------------- + +Added +^^^^^ + +* :class:`bpy.types.Lattice.transform` + +bpy.types.Mesh +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Mesh.calc_tangents` +* :class:`bpy.types.Mesh.free_tangents` + +bpy.types.Object +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Object.image_user` +* :class:`bpy.types.Object.lod_levels` + +bpy.types.ParticleSettings +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ParticleSettings.material_slot` + +bpy.types.Scene +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Scene.lock_frame_selection_to_range` + +bpy.types.Texture +----------------- + +Added +^^^^^ + +* :class:`bpy.types.Texture.use_clamp` + +bpy.types.World +--------------- + +Removed +^^^^^^^ + +* **star_settings** + +bpy.types.MaskLayer +------------------- + +Added +^^^^^ + +* :class:`bpy.types.MaskLayer.use_fill_holes` +* :class:`bpy.types.MaskLayer.use_fill_overlap` + +bpy.types.Menu +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Menu.draw_collapsible` + +bpy.types.MeshLoop +------------------ + +Added +^^^^^ + +* :class:`bpy.types.MeshLoop.bitangent` +* :class:`bpy.types.MeshLoop.bitangent_sign` +* :class:`bpy.types.MeshLoop.tangent` + +bpy.types.BevelModifier +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.BevelModifier.offset_type` +* :class:`bpy.types.BevelModifier.profile` + +bpy.types.BuildModifier +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.BuildModifier.use_reverse` + +bpy.types.ScrewModifier +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.ScrewModifier.use_stretch_u` +* :class:`bpy.types.ScrewModifier.use_stretch_v` + +bpy.types.TriangulateModifier +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.TriangulateModifier.ngon_method` +* :class:`bpy.types.TriangulateModifier.quad_method` + +Removed +^^^^^^^ + +* **use_beauty** + +bpy.types.MovieTrackingMarker +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.MovieTrackingMarker.is_keyed` + +bpy.types.MovieTrackingPlaneTrack +--------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.MovieTrackingPlaneTrack.image` +* :class:`bpy.types.MovieTrackingPlaneTrack.image_opacity` + +bpy.types.MovieTrackingSettings +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.MovieTrackingSettings.default_weight` +* :class:`bpy.types.MovieTrackingSettings.show_extra_expanded` + +Removed +^^^^^^^ + +* **reconstruction_success_threshold** +* **use_fallback_reconstruction** + +bpy.types.MovieTrackingTrack +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.MovieTrackingTrack.offset` +* :class:`bpy.types.MovieTrackingTrack.weight` + +bpy.types.Node +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Node.draw_label` + +bpy.types.CompositorNodeDefocus +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CompositorNodeDefocus.scene` + +bpy.types.CompositorNodeDespeckle +--------------------------------- + +Renamed +^^^^^^^ + +* **threshold_neighbour** -> :class:`bpy.types.CompositorNodeDespeckle.threshold_neighbor` + +bpy.types.ShaderNodeOutput +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeOutput.is_active_output` + +bpy.types.ShaderNodeOutputLamp +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeOutputLamp.is_active_output` + +bpy.types.ShaderNodeOutputMaterial +---------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeOutputMaterial.is_active_output` + +bpy.types.ShaderNodeOutputWorld +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeOutputWorld.is_active_output` + +bpy.types.NodeSocket +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.NodeSocket.is_output` + +Removed +^^^^^^^ + +* **in_out** + +bpy.types.NodeSocketInterface +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.NodeSocketInterface.is_output` + +Removed +^^^^^^^ + +* **in_out** + +bpy.types.Paint +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Paint.use_symmetry_feather` +* :class:`bpy.types.Paint.use_symmetry_x` +* :class:`bpy.types.Paint.use_symmetry_y` +* :class:`bpy.types.Paint.use_symmetry_z` + +bpy.types.Sculpt +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Sculpt.detail_refine_method` +* :class:`bpy.types.Sculpt.gravity` +* :class:`bpy.types.Sculpt.gravity_object` + +Removed +^^^^^^^ + +* **use_edge_collapse** +* **use_symmetry_feather** +* **use_symmetry_x** +* **use_symmetry_y** +* **use_symmetry_z** + +bpy.types.VertexPaint +--------------------- + +Removed +^^^^^^^ + +* **use_all_faces** + +bpy.types.Panel +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Panel.bl_category` +* :class:`bpy.types.Panel.use_pin` + +bpy.types.CyclesRenderSettings +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.CyclesRenderSettings.sample_clamp_direct` +* :class:`bpy.types.CyclesRenderSettings.sample_clamp_indirect` +* :class:`bpy.types.CyclesRenderSettings.volume_bounces` +* :class:`bpy.types.CyclesRenderSettings.volume_homogeneous_sampling` +* :class:`bpy.types.CyclesRenderSettings.volume_max_steps` +* :class:`bpy.types.CyclesRenderSettings.volume_samples` +* :class:`bpy.types.CyclesRenderSettings.volume_step_size` + +Removed +^^^^^^^ + +* **sample_clamp** + +bpy.types.CyclesWorldSettings +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CyclesWorldSettings.homogeneous_volume` + +bpy.types.RenderEngine +---------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.RenderEngine.end_result` (result, cancel, do_merge_results), *was (result, cancel)* + +bpy.types.RenderSettings +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.RenderSettings.bake_user_scale` +* :class:`bpy.types.RenderSettings.use_bake_user_scale` +* :class:`bpy.types.RenderSettings.use_lock_interface` + +bpy.types.RigidBodyObject +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.RigidBodyObject.mesh_source` +* :class:`bpy.types.RigidBodyObject.use_deform` + +bpy.types.SceneRenderLayer +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SceneRenderLayer.pass_alpha_threshold` + +bpy.types.SculptToolCapabilities +-------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SculptToolCapabilities.has_gravity` + +bpy.types.SpaceClipEditor +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceClipEditor.mask_overlay_mode` +* :class:`bpy.types.SpaceClipEditor.show_graph_tracks_error` +* :class:`bpy.types.SpaceClipEditor.show_mask_overlay` + +Renamed +^^^^^^^ + +* **show_graph_tracks** -> :class:`bpy.types.SpaceClipEditor.show_graph_tracks_motion` + +bpy.types.SpaceGraphEditor +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceGraphEditor.use_auto_normalization` +* :class:`bpy.types.SpaceGraphEditor.use_normalization` + +bpy.types.SpaceImageEditor +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceImageEditor.mask_overlay_mode` +* :class:`bpy.types.SpaceImageEditor.show_mask_overlay` + +bpy.types.SpaceNodeEditor +------------------------- + +Removed +^^^^^^^ + +* **use_hidden_preview** + +bpy.types.SpaceView3D +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceView3D.show_textured_shadeless` + +bpy.types.TextCharacterFormat +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.TextCharacterFormat.material_index` + +bpy.types.ThemeDopeSheet +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.ThemeDopeSheet.keyframe` +* :class:`bpy.types.ThemeDopeSheet.keyframe_border` +* :class:`bpy.types.ThemeDopeSheet.keyframe_border_selected` +* :class:`bpy.types.ThemeDopeSheet.keyframe_breakdown` +* :class:`bpy.types.ThemeDopeSheet.keyframe_breakdown_selected` +* :class:`bpy.types.ThemeDopeSheet.keyframe_extreme` +* :class:`bpy.types.ThemeDopeSheet.keyframe_extreme_selected` +* :class:`bpy.types.ThemeDopeSheet.keyframe_jitter` +* :class:`bpy.types.ThemeDopeSheet.keyframe_jitter_selected` +* :class:`bpy.types.ThemeDopeSheet.keyframe_selected` + +bpy.types.ThemeImageEditor +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeImageEditor.edge_select` +* :class:`bpy.types.ThemeImageEditor.wire_edit` + +bpy.types.ThemeInfo +------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeInfo.info_debug` +* :class:`bpy.types.ThemeInfo.info_debug_text` +* :class:`bpy.types.ThemeInfo.info_error` +* :class:`bpy.types.ThemeInfo.info_error_text` +* :class:`bpy.types.ThemeInfo.info_info` +* :class:`bpy.types.ThemeInfo.info_info_text` +* :class:`bpy.types.ThemeInfo.info_selected` +* :class:`bpy.types.ThemeInfo.info_selected_text` +* :class:`bpy.types.ThemeInfo.info_warning` +* :class:`bpy.types.ThemeInfo.info_warning_text` + +bpy.types.ThemeNLAEditor +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.ThemeNLAEditor.keyframe_border` +* :class:`bpy.types.ThemeNLAEditor.keyframe_border_selected` + +bpy.types.ThemeNodeEditor +------------------------- + +Removed +^^^^^^^ + +* **in_out_node** + +Renamed +^^^^^^^ + +* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.color_node` +* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.filter_node` +* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.input_node` +* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.layout_node` +* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.output_node` +* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.pattern_node` +* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.script_node` +* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.shader_node` +* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.texture_node` +* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.vector_node` + +bpy.types.ThemeSpaceGeneric +--------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeSpaceGeneric.tab_active` +* :class:`bpy.types.ThemeSpaceGeneric.tab_back` +* :class:`bpy.types.ThemeSpaceGeneric.tab_inactive` +* :class:`bpy.types.ThemeSpaceGeneric.tab_outline` + +bpy.types.ThemeSpaceGradient +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeSpaceGradient.tab_active` +* :class:`bpy.types.ThemeSpaceGradient.tab_back` +* :class:`bpy.types.ThemeSpaceGradient.tab_inactive` +* :class:`bpy.types.ThemeSpaceGradient.tab_outline` + +bpy.types.TimelineMarkers +------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.TimelineMarkers.new` (name, frame), *was (name)* + +bpy.types.UILayout +------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.UILayout.prop` (data, property, text, text_ctxt, translate, icon, expand, slider, toggle, icon_only, event, full_event, emboss, index, icon_value), *was (data, property, text, text_ctxt, translate, icon, expand, slider, toggle, icon_only, event, full_event, emboss, index)* +* :class:`bpy.types.UILayout.template_header` (), *was (menus)* + +bpy.types.UserPreferencesEdit +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesEdit.grease_pencil_default_color` + +bpy.types.UserPreferencesInput +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesInput.navigation_mode` +* :class:`bpy.types.UserPreferencesInput.ndof_pan_yz_swap_axis` +* :class:`bpy.types.UserPreferencesInput.ndof_rotx_invert_axis` +* :class:`bpy.types.UserPreferencesInput.ndof_roty_invert_axis` +* :class:`bpy.types.UserPreferencesInput.ndof_rotz_invert_axis` +* :class:`bpy.types.UserPreferencesInput.ndof_view_navigate_method` +* :class:`bpy.types.UserPreferencesInput.walk_navigation` + +Removed +^^^^^^^ + +* **ndof_roll_invert_axis** +* **ndof_rotate_invert_axis** +* **ndof_tilt_invert_axis** +* **ndof_zoom_updown** + +2.70 to 2.71 +============ + +bpy.types.Actuator +------------------ + +Added +^^^^^ + +* :class:`bpy.types.Actuator.active` + +bpy.types.BlendDataLineStyles +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.BlendDataLineStyles.is_updated` + +bpy.types.TransformConstraint +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.TransformConstraint.from_max_x_rot` +* :class:`bpy.types.TransformConstraint.from_max_x_scale` +* :class:`bpy.types.TransformConstraint.from_max_y_rot` +* :class:`bpy.types.TransformConstraint.from_max_y_scale` +* :class:`bpy.types.TransformConstraint.from_max_z_rot` +* :class:`bpy.types.TransformConstraint.from_max_z_scale` +* :class:`bpy.types.TransformConstraint.from_min_x_rot` +* :class:`bpy.types.TransformConstraint.from_min_x_scale` +* :class:`bpy.types.TransformConstraint.from_min_y_rot` +* :class:`bpy.types.TransformConstraint.from_min_y_scale` +* :class:`bpy.types.TransformConstraint.from_min_z_rot` +* :class:`bpy.types.TransformConstraint.from_min_z_scale` +* :class:`bpy.types.TransformConstraint.to_max_x_rot` +* :class:`bpy.types.TransformConstraint.to_max_x_scale` +* :class:`bpy.types.TransformConstraint.to_max_y_rot` +* :class:`bpy.types.TransformConstraint.to_max_y_scale` +* :class:`bpy.types.TransformConstraint.to_max_z_rot` +* :class:`bpy.types.TransformConstraint.to_max_z_scale` +* :class:`bpy.types.TransformConstraint.to_min_x_rot` +* :class:`bpy.types.TransformConstraint.to_min_x_scale` +* :class:`bpy.types.TransformConstraint.to_min_y_rot` +* :class:`bpy.types.TransformConstraint.to_min_y_scale` +* :class:`bpy.types.TransformConstraint.to_min_z_rot` +* :class:`bpy.types.TransformConstraint.to_min_z_scale` + +bpy.types.Controller +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.Controller.active` + +bpy.types.FCurve +---------------- + +Added +^^^^^ + +* :class:`bpy.types.FCurve.update` + +bpy.types.Brush +--------------- + +Removed +^^^^^^^ + +* **sculpt_stroke_method** + +bpy.types.Curve +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Curve.bevel_factor_mapping_end` +* :class:`bpy.types.Curve.bevel_factor_mapping_start` + +bpy.types.FreestyleLineStyle +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.FreestyleLineStyle.active_texture` +* :class:`bpy.types.FreestyleLineStyle.active_texture_index` +* :class:`bpy.types.FreestyleLineStyle.integration_type` +* :class:`bpy.types.FreestyleLineStyle.node_tree` +* :class:`bpy.types.FreestyleLineStyle.sort_key` +* :class:`bpy.types.FreestyleLineStyle.sort_order` +* :class:`bpy.types.FreestyleLineStyle.texture_slots` +* :class:`bpy.types.FreestyleLineStyle.texture_spacing` +* :class:`bpy.types.FreestyleLineStyle.use_nodes` +* :class:`bpy.types.FreestyleLineStyle.use_sorting` +* :class:`bpy.types.FreestyleLineStyle.use_texture` + +bpy.types.Material +------------------ + +Added +^^^^^ + +* :class:`bpy.types.Material.use_cast_shadows` + +bpy.types.Mesh +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Mesh.show_normal_loop` + +bpy.types.Object +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Object.cycles` + +bpy.types.Scene +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Scene.show_keys_from_selected_only` + +bpy.types.Speaker +----------------- + +Added +^^^^^ + +* :class:`bpy.types.Speaker.relative` + +bpy.types.Keyframe +------------------ + +Added +^^^^^ + +* :class:`bpy.types.Keyframe.amplitude` +* :class:`bpy.types.Keyframe.back` +* :class:`bpy.types.Keyframe.easing` +* :class:`bpy.types.Keyframe.period` + +bpy.types.Linesets +------------------ + +Added +^^^^^ + +* :class:`bpy.types.Linesets.new` +* :class:`bpy.types.Linesets.remove` + +bpy.types.MaskSplinePoint +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.MaskSplinePoint.handle_left_type` +* :class:`bpy.types.MaskSplinePoint.handle_right_type` +* :class:`bpy.types.MaskSplinePoint.weight` + +bpy.types.MeshEdge +------------------ + +Added +^^^^^ + +* :class:`bpy.types.MeshEdge.use_freestyle_mark` + +bpy.types.MeshPolygon +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.MeshPolygon.use_freestyle_mark` + +bpy.types.MeshTessFace +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.MeshTessFace.split_normals` + +bpy.types.MovieTrackingCamera +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.MovieTrackingCamera.distortion_model` +* :class:`bpy.types.MovieTrackingCamera.division_k1` +* :class:`bpy.types.MovieTrackingCamera.division_k2` + +bpy.types.ShaderNodeTexImage +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeTexImage.interpolation` + +bpy.types.PackedFile +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.PackedFile.data` + +bpy.types.Sculpt +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Sculpt.constant_detail` +* :class:`bpy.types.Sculpt.detail_type_method` + +bpy.types.CyclesRenderSettings +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.CyclesRenderSettings.bake_type` +* :class:`bpy.types.CyclesRenderSettings.sample_all_lights_direct` +* :class:`bpy.types.CyclesRenderSettings.sample_all_lights_indirect` + +bpy.types.RenderEngine +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderEngine.bake` +* :class:`bpy.types.RenderEngine.frame_set` + +bpy.types.CYCLES +---------------- + +Added +^^^^^ + +* :class:`bpy.types.CYCLES.bake` + +bpy.types.RenderSettings +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.RenderSettings.bake` + +bpy.types.Sensor +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Sensor.active` + +bpy.types.SequenceElements +-------------------------- + +Renamed +^^^^^^^ + +* **push** -> :class:`bpy.types.SequenceElements.append` + +bpy.types.SmokeDomainSettings +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SmokeDomainSettings.color_grid` +* :class:`bpy.types.SmokeDomainSettings.density_grid` +* :class:`bpy.types.SmokeDomainSettings.flame_grid` + +Removed +^^^^^^^ + +* **density** + +bpy.types.Space +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Space.show_locked_time` + +bpy.types.SpaceTimeline +----------------------- + +Removed +^^^^^^^ + +* **show_only_selected** + +bpy.types.SpaceView3D +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceView3D.region_quadviews` + +Removed +^^^^^^^ + +* **region_quadview** + +bpy.types.SpaceNodeEditorPath +----------------------------- + +Renamed +^^^^^^^ + +* **push** -> :class:`bpy.types.SpaceNodeEditorPath.append` + +bpy.types.ThemeClipEditor +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeClipEditor.handle_align` +* :class:`bpy.types.ThemeClipEditor.handle_auto` +* :class:`bpy.types.ThemeClipEditor.handle_auto_clamped` +* :class:`bpy.types.ThemeClipEditor.handle_free` +* :class:`bpy.types.ThemeClipEditor.handle_sel_align` +* :class:`bpy.types.ThemeClipEditor.handle_sel_auto` +* :class:`bpy.types.ThemeClipEditor.handle_sel_auto_clamped` +* :class:`bpy.types.ThemeClipEditor.handle_sel_free` + +bpy.types.ThemeImageEditor +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeImageEditor.frame_current` +* :class:`bpy.types.ThemeImageEditor.handle_align` +* :class:`bpy.types.ThemeImageEditor.handle_auto` +* :class:`bpy.types.ThemeImageEditor.handle_auto_clamped` +* :class:`bpy.types.ThemeImageEditor.handle_free` +* :class:`bpy.types.ThemeImageEditor.handle_sel_align` +* :class:`bpy.types.ThemeImageEditor.handle_sel_auto` +* :class:`bpy.types.ThemeImageEditor.handle_sel_auto_clamped` +* :class:`bpy.types.ThemeImageEditor.handle_sel_free` + +bpy.types.ThemeView3D +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeView3D.view_overlay` + +bpy.types.UILayout +------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.UILayout.template_preview` (id, show_buttons, parent, slot, preview_id), *was (id, show_buttons, parent, slot)* + +2.71 to 2.72 +============ + +bpy.types.EditObjectActuator +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.EditObjectActuator.track_axis` +* :class:`bpy.types.EditObjectActuator.up_axis` + +bpy.types.BlendData +------------------- + +Added +^^^^^ + +* :class:`bpy.types.BlendData.version` + +bpy.types.BoneGroups +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.BoneGroups.new` +* :class:`bpy.types.BoneGroups.remove` + +bpy.types.BrushCapabilities +--------------------------- + +Added +^^^^^ + +* :class:`bpy.types.BrushCapabilities.has_smooth_stroke` + +bpy.types.ColorRamp +------------------- + +Added +^^^^^ + +* :class:`bpy.types.ColorRamp.color_mode` +* :class:`bpy.types.ColorRamp.hue_interpolation` + +bpy.types.ColorRampElement +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ColorRampElement.alpha` + +bpy.types.FollowTrackConstraint +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.FollowTrackConstraint.use_undistorted_position` + +bpy.types.Event +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Event.is_tablet` +* :class:`bpy.types.Event.pressure` +* :class:`bpy.types.Event.tilt` + +bpy.types.Brush +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Brush.blur_kernel_radius` +* :class:`bpy.types.Brush.blur_mode` +* :class:`bpy.types.Brush.fill_threshold` +* :class:`bpy.types.Brush.grad_spacing` +* :class:`bpy.types.Brush.gradient` +* :class:`bpy.types.Brush.gradient_fill_mode` +* :class:`bpy.types.Brush.gradient_stroke_mode` +* :class:`bpy.types.Brush.image_paint_capabilities` +* :class:`bpy.types.Brush.paint_curve` +* :class:`bpy.types.Brush.secondary_color` +* :class:`bpy.types.Brush.sharp_threshold` +* :class:`bpy.types.Brush.use_curve` +* :class:`bpy.types.Brush.use_gradient` +* :class:`bpy.types.Brush.use_line` +* :class:`bpy.types.Brush.use_pressure_masking` + +Renamed +^^^^^^^ + +* **use_drag_dot** -> :class:`bpy.types.Brush.use_restore_mesh` + +bpy.types.Curve +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Curve.validate_material_indices` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Curve.transform` (matrix, shape_keys), *was (matrix)* + +bpy.types.Lattice +----------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Lattice.transform` (matrix, shape_keys), *was (matrix)* + +bpy.types.Library +----------------- + +Added +^^^^^ + +* :class:`bpy.types.Library.packed_file` + +bpy.types.Material +------------------ + +Added +^^^^^ + +* :class:`bpy.types.Material.line_color` +* :class:`bpy.types.Material.line_priority` +* :class:`bpy.types.Material.paint_active_slot` +* :class:`bpy.types.Material.paint_clone_slot` +* :class:`bpy.types.Material.texture_paint_images` +* :class:`bpy.types.Material.texture_paint_slots` + +bpy.types.Mesh +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Mesh.validate_material_indices` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Mesh.transform` (matrix, shape_keys), *was (matrix)* + +bpy.types.WindowManager +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.WindowManager.piemenu_begin__internal` +* :class:`bpy.types.WindowManager.piemenu_end__internal` +* :class:`bpy.types.WindowManager.popup_menu_pie` + +bpy.types.BevelModifier +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.BevelModifier.material` + +bpy.types.HookModifier +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.HookModifier.center` + +bpy.types.SolidifyModifier +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SolidifyModifier.use_rim_only` + +bpy.types.ShaderNodeBsdfAnisotropic +----------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeBsdfAnisotropic.distribution` + +bpy.types.Paint +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Paint.palette` + +bpy.types.ImagePaint +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.ImagePaint.canvas` +* :class:`bpy.types.ImagePaint.clone_image` +* :class:`bpy.types.ImagePaint.detect_data` +* :class:`bpy.types.ImagePaint.missing_materials` +* :class:`bpy.types.ImagePaint.missing_stencil` +* :class:`bpy.types.ImagePaint.missing_texture` +* :class:`bpy.types.ImagePaint.missing_uvs` +* :class:`bpy.types.ImagePaint.mode` +* :class:`bpy.types.ImagePaint.stencil_color` +* :class:`bpy.types.ImagePaint.stencil_image` + +bpy.types.IMAGE_UV_sculpt +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.IMAGE_UV_sculpt.prop_unified_color` +* :class:`bpy.types.IMAGE_UV_sculpt.prop_unified_color_picker` + +bpy.types.CyclesCameraSettings +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.CyclesCameraSettings.aperture_ratio` + +bpy.types.CyclesMaterialSettings +-------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CyclesMaterialSettings.volume_sampling` + +bpy.types.CyclesRenderSettings +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.CyclesRenderSettings.caustics_reflective` +* :class:`bpy.types.CyclesRenderSettings.caustics_refractive` + +Removed +^^^^^^^ + +* **no_caustics** +* **volume_homogeneous_sampling** + +bpy.types.CyclesVisibilitySettings +---------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CyclesVisibilitySettings.scatter` + +bpy.types.CyclesWorldSettings +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CyclesWorldSettings.volume_sampling` + +bpy.types.OperatorStrokeElement +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.OperatorStrokeElement.size` + +bpy.types.RenderEngine +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderEngine.bl_use_texture_preview` +* :class:`bpy.types.RenderEngine.layer_override` + +bpy.types.RenderSettings +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.RenderSettings.preview_start_resolution` +* :class:`bpy.types.RenderSettings.use_render_cache` + +bpy.types.MouseSensor +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.MouseSensor.material` +* :class:`bpy.types.MouseSensor.property` +* :class:`bpy.types.MouseSensor.use_material` +* :class:`bpy.types.MouseSensor.use_x_ray` + +bpy.types.SpaceUVEditor +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceUVEditor.show_texpaint` + +bpy.types.ThemeImageEditor +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeImageEditor.handle_vertex` +* :class:`bpy.types.ThemeImageEditor.handle_vertex_select` +* :class:`bpy.types.ThemeImageEditor.handle_vertex_size` +* :class:`bpy.types.ThemeImageEditor.paint_curve_handle` +* :class:`bpy.types.ThemeImageEditor.paint_curve_pivot` + +bpy.types.ThemeUserInterface +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeUserInterface.wcol_pie_menu` + +bpy.types.ThemeView3D +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeView3D.paint_curve_handle` +* :class:`bpy.types.ThemeView3D.paint_curve_pivot` +* :class:`bpy.types.ThemeView3D.split_normal` + +bpy.types.UILayout +------------------ + +Added +^^^^^ + +* :class:`bpy.types.UILayout.menu_pie` +* :class:`bpy.types.UILayout.template_palette` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.UILayout.template_curve_mapping` (data, property, type, levels, brush, use_negative_slope), *was (data, property, type, levels, brush)* + +bpy.types.UnifiedPaintSettings +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.UnifiedPaintSettings.color` +* :class:`bpy.types.UnifiedPaintSettings.secondary_color` +* :class:`bpy.types.UnifiedPaintSettings.use_unified_color` + +bpy.types.UserPreferencesFilePaths +---------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesFilePaths.render_cache_directory` + +bpy.types.UserPreferencesSystem +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesSystem.font_path_ui` +* :class:`bpy.types.UserPreferencesSystem.is_occlusion_query_supported` +* :class:`bpy.types.UserPreferencesSystem.select_method` + +bpy.types.UserPreferencesView +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesView.pie_animation_timeout` +* :class:`bpy.types.UserPreferencesView.pie_initial_timeout` +* :class:`bpy.types.UserPreferencesView.pie_menu_radius` +* :class:`bpy.types.UserPreferencesView.pie_menu_threshold` + +2.72 to 2.73 +============ + +bpy.types.ActionGroup +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.ActionGroup.is_custom_color_set` + +bpy.types.BoneGroup +------------------- + +Added +^^^^^ + +* :class:`bpy.types.BoneGroup.is_custom_color_set` + +bpy.types.StretchToConstraint +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.StretchToConstraint.bulge_max` +* :class:`bpy.types.StretchToConstraint.bulge_min` +* :class:`bpy.types.StretchToConstraint.bulge_smooth` +* :class:`bpy.types.StretchToConstraint.use_bulge_max` +* :class:`bpy.types.StretchToConstraint.use_bulge_min` + +bpy.types.DopeSheet +------------------- + +Added +^^^^^ + +* :class:`bpy.types.DopeSheet.show_gpencil` + +bpy.types.FreestyleSettings +--------------------------- + +Added +^^^^^ + +* :class:`bpy.types.FreestyleSettings.use_view_map_cache` + +bpy.types.GPencilLayer +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPencilLayer.after_color` +* :class:`bpy.types.GPencilLayer.before_color` +* :class:`bpy.types.GPencilLayer.fill_alpha` +* :class:`bpy.types.GPencilLayer.fill_color` +* :class:`bpy.types.GPencilLayer.ghost_after_range` +* :class:`bpy.types.GPencilLayer.ghost_before_range` +* :class:`bpy.types.GPencilLayer.use_ghost_custom_colors` +* :class:`bpy.types.GPencilLayer.use_volumetric_strokes` + +Removed +^^^^^^^ + +* **ghost_range_max** + +bpy.types.GPencilStroke +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPencilStroke.select` + +bpy.types.GPencilStrokePoint +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPencilStrokePoint.select` + +bpy.types.GreasePencilLayers +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GreasePencilLayers.active_index` + +bpy.types.FreestyleLineStyle +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.FreestyleLineStyle.chain_count` +* :class:`bpy.types.FreestyleLineStyle.use_chain_count` + +bpy.types.GreasePencil +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.GreasePencil.animation_data` +* :class:`bpy.types.GreasePencil.use_stroke_edit_mode` + +bpy.types.Image +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Image.generated_color` +* :class:`bpy.types.Image.render_slots` + +Removed +^^^^^^^ + +* **render_slot** + +bpy.types.Scene +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Scene.uvedit_aspect` + +bpy.types.CyclesLampSettings +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CyclesLampSettings.max_bounces` + +bpy.types.CyclesMaterialSettings +-------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CyclesMaterialSettings.volume_interpolation` + +bpy.types.CyclesWorldSettings +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CyclesWorldSettings.volume_interpolation` + +bpy.types.RenderEngine +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderEngine.error_set` + +bpy.types.RenderPass +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderPass.debug_type` + +bpy.types.SculptToolCapabilities +-------------------------------- + +Renamed +^^^^^^^ + +* **has_strength** -> :class:`bpy.types.SculptToolCapabilities.has_strength_pressure` + +bpy.types.SceneSequence +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.SceneSequence.use_grease_pencil` + +bpy.types.SpaceSequenceEditor +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceSequenceEditor.show_backdrop` +* :class:`bpy.types.SpaceSequenceEditor.show_strip_offset` +* :class:`bpy.types.SpaceSequenceEditor.waveform_draw_type` + +bpy.types.SpaceView3D +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceView3D.show_world` + +bpy.types.ThemeClipEditor +------------------------- + +Removed +^^^^^^^ + +* **grid** + +bpy.types.ThemeNodeEditor +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeNodeEditor.wire_inner` + +bpy.types.ThemeUserInterface +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeUserInterface.widget_emboss` + +bpy.types.ToolSettings +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.ToolSettings.grease_pencil_source` + +bpy.types.UILayout +------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.UILayout.operator` (operator, text, text_ctxt, translate, icon, emboss, icon_value), *was (operator, text, text_ctxt, translate, icon, emboss)* + +bpy.types.UserPreferencesSystem +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesSystem.virtual_pixel_mode` + +bpy.types.UserPreferencesView +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesView.pie_menu_confirm` + +2.73 to 2.74 +============ + +bpy.types.SteeringActuator +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SteeringActuator.lock_z_velocity` + +bpy.types.BackgroundImage +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.BackgroundImage.rotation` +* :class:`bpy.types.BackgroundImage.use_flip_x` +* :class:`bpy.types.BackgroundImage.use_flip_y` + +bpy.types.BrushCapabilities +--------------------------- + +Removed +^^^^^^^ + +* **has_texture_angle** +* **has_texture_angle_source** + +bpy.types.ClothCollisionSettings +-------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ClothCollisionSettings.damping` + +bpy.types.ClothSettings +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.ClothSettings.bending_damping` +* :class:`bpy.types.ClothSettings.density_strength` +* :class:`bpy.types.ClothSettings.density_target` +* :class:`bpy.types.ClothSettings.voxel_cell_size` + +Removed +^^^^^^^ + +* **pre_roll** + +bpy.types.SplineIKConstraint +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SplineIKConstraint.bulge` +* :class:`bpy.types.SplineIKConstraint.bulge_max` +* :class:`bpy.types.SplineIKConstraint.bulge_min` +* :class:`bpy.types.SplineIKConstraint.bulge_smooth` +* :class:`bpy.types.SplineIKConstraint.use_bulge_max` +* :class:`bpy.types.SplineIKConstraint.use_bulge_min` + +bpy.types.FCurve +---------------- + +Added +^^^^^ + +* :class:`bpy.types.FCurve.convert_to_keyframes` +* :class:`bpy.types.FCurve.convert_to_samples` + +bpy.types.FileSelectParams +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.FileSelectParams.filter_search` + +bpy.types.GPencilLayer +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPencilLayer.is_fill_visible` +* :class:`bpy.types.GPencilLayer.is_stroke_visible` + +bpy.types.Brush +--------------- + +Removed +^^^^^^^ + +* **texture_angle_source_no_random** +* **texture_angle_source_random** +* **use_rake** +* **use_random_rotation** + +bpy.types.Camera +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Camera.gpu_dof` +* :class:`bpy.types.Camera.show_safe_center` + +Renamed +^^^^^^^ + +* **show_title_safe** -> :class:`bpy.types.Camera.show_safe_areas` + +bpy.types.Image +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Image.use_deinterlace` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Image.pack` (as_png, data, data_len), *was (as_png)* + +bpy.types.Key +------------- + +Removed +^^^^^^^ + +* **slurph** + +bpy.types.Mesh +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Mesh.create_normals_split` +* :class:`bpy.types.Mesh.has_custom_normals` +* :class:`bpy.types.Mesh.normals_split_custom_set` +* :class:`bpy.types.Mesh.normals_split_custom_set_from_vertices` +* :class:`bpy.types.Mesh.vertex_layers_float` +* :class:`bpy.types.Mesh.vertex_layers_int` +* :class:`bpy.types.Mesh.vertex_layers_string` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Mesh.calc_normals_split` (), *was (split_angle)* +* :class:`bpy.types.Mesh.validate` (verbose, clean_customdata), *was (verbose)* + +bpy.types.Object +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Object.calc_matrix_camera` +* :class:`bpy.types.Object.camera_fit_coords` + +bpy.types.ParticleSettings +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ParticleSettings.bending_random` +* :class:`bpy.types.ParticleSettings.clump_curve` +* :class:`bpy.types.ParticleSettings.clump_noise_size` +* :class:`bpy.types.ParticleSettings.kink_amplitude_random` +* :class:`bpy.types.ParticleSettings.kink_axis_random` +* :class:`bpy.types.ParticleSettings.kink_extra_steps` +* :class:`bpy.types.ParticleSettings.roughness_curve` +* :class:`bpy.types.ParticleSettings.show_guide_hairs` +* :class:`bpy.types.ParticleSettings.show_hair_grid` +* :class:`bpy.types.ParticleSettings.use_clump_curve` +* :class:`bpy.types.ParticleSettings.use_clump_noise` +* :class:`bpy.types.ParticleSettings.use_roughness_curve` + +bpy.types.Scene +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Scene.safe_areas` + +bpy.types.Screen +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Screen.use_follow` + +bpy.types.Sound +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Sound.pack` +* :class:`bpy.types.Sound.unpack` + +bpy.types.VectorFont +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.VectorFont.pack` +* :class:`bpy.types.VectorFont.unpack` + +bpy.types.KeyingSet +------------------- + +Added +^^^^^ + +* :class:`bpy.types.KeyingSet.use_insertkey_needed` +* :class:`bpy.types.KeyingSet.use_insertkey_override_needed` +* :class:`bpy.types.KeyingSet.use_insertkey_override_visual` +* :class:`bpy.types.KeyingSet.use_insertkey_override_xyz_to_rgb` +* :class:`bpy.types.KeyingSet.use_insertkey_visual` +* :class:`bpy.types.KeyingSet.use_insertkey_xyz_to_rgb` + +Removed +^^^^^^^ + +* **bl_options** + +bpy.types.KeyingSetPath +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.KeyingSetPath.use_insertkey_needed` +* :class:`bpy.types.KeyingSetPath.use_insertkey_override_needed` +* :class:`bpy.types.KeyingSetPath.use_insertkey_override_visual` +* :class:`bpy.types.KeyingSetPath.use_insertkey_override_xyz_to_rgb` +* :class:`bpy.types.KeyingSetPath.use_insertkey_visual` +* :class:`bpy.types.KeyingSetPath.use_insertkey_xyz_to_rgb` + +Removed +^^^^^^^ + +* **bl_options** + +bpy.types.ClothModifier +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.ClothModifier.hair_grid_max` +* :class:`bpy.types.ClothModifier.hair_grid_min` +* :class:`bpy.types.ClothModifier.hair_grid_resolution` +* :class:`bpy.types.ClothModifier.solver_result` + +bpy.types.HookModifier +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.HookModifier.falloff_curve` +* :class:`bpy.types.HookModifier.falloff_type` +* :class:`bpy.types.HookModifier.use_falloff_uniform` + +Renamed +^^^^^^^ + +* **falloff** -> :class:`bpy.types.HookModifier.falloff_radius` +* **force** -> :class:`bpy.types.HookModifier.strength` + +bpy.types.Node +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Node.shading_compatibility` + +bpy.types.CompositorNodePlaneTrackDeform +---------------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CompositorNodePlaneTrackDeform.motion_blur_samples` +* :class:`bpy.types.CompositorNodePlaneTrackDeform.motion_blur_shutter` +* :class:`bpy.types.CompositorNodePlaneTrackDeform.use_motion_blur` + +bpy.types.NodeFrame +------------------- + +Added +^^^^^ + +* :class:`bpy.types.NodeFrame.text` + +bpy.types.ShaderNodeTexCoord +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeTexCoord.object` + +bpy.types.Paint +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Paint.cavity_curve` +* :class:`bpy.types.Paint.use_cavity` + +bpy.types.ImagePaint +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.ImagePaint.dither` + +bpy.types.ParticleEdit +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.ParticleEdit.shape_object` + +bpy.types.CyclesCameraSettings +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.CyclesCameraSettings.latitude_max` +* :class:`bpy.types.CyclesCameraSettings.latitude_min` +* :class:`bpy.types.CyclesCameraSettings.longitude_max` +* :class:`bpy.types.CyclesCameraSettings.longitude_min` + +bpy.types.RegionView3D +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.RegionView3D.window_matrix` + +bpy.types.SequenceProxy +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.SequenceProxy.use_overwrite` + +bpy.types.SpaceFileBrowser +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceFileBrowser.bookmarks` +* :class:`bpy.types.SpaceFileBrowser.bookmarks_active` +* :class:`bpy.types.SpaceFileBrowser.recent_folders` +* :class:`bpy.types.SpaceFileBrowser.recent_folders_active` +* :class:`bpy.types.SpaceFileBrowser.system_bookmarks` +* :class:`bpy.types.SpaceFileBrowser.system_bookmarks_active` +* :class:`bpy.types.SpaceFileBrowser.system_folders` +* :class:`bpy.types.SpaceFileBrowser.system_folders_active` + +bpy.types.SpaceOutliner +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceOutliner.use_sort_alpha` + +bpy.types.SpaceSequenceEditor +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceSequenceEditor.show_safe_areas` +* :class:`bpy.types.SpaceSequenceEditor.show_safe_center` + +Removed +^^^^^^^ + +* **show_safe_margin** + +bpy.types.SpaceTextEditor +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceTextEditor.region_location_from_cursor` + +bpy.types.SpaceView3D +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceView3D.fx_settings` + +bpy.types.BrushTextureSlot +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.BrushTextureSlot.has_random_texture_angle` +* :class:`bpy.types.BrushTextureSlot.has_texture_angle` +* :class:`bpy.types.BrushTextureSlot.has_texture_angle_source` +* :class:`bpy.types.BrushTextureSlot.random_angle` +* :class:`bpy.types.BrushTextureSlot.use_rake` +* :class:`bpy.types.BrushTextureSlot.use_random` + +bpy.types.ParticleSettingsTextureSlot +------------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ParticleSettingsTextureSlot.kink_amp_factor` +* :class:`bpy.types.ParticleSettingsTextureSlot.kink_freq_factor` +* :class:`bpy.types.ParticleSettingsTextureSlot.use_map_kink_amp` +* :class:`bpy.types.ParticleSettingsTextureSlot.use_map_kink_freq` + +Removed +^^^^^^^ + +* **kink_factor** +* **use_map_kink** + +bpy.types.ThemeClipEditor +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeClipEditor.gp_vertex` +* :class:`bpy.types.ThemeClipEditor.gp_vertex_select` +* :class:`bpy.types.ThemeClipEditor.gp_vertex_size` + +bpy.types.ThemeImageEditor +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeImageEditor.gp_vertex` +* :class:`bpy.types.ThemeImageEditor.gp_vertex_select` +* :class:`bpy.types.ThemeImageEditor.gp_vertex_size` + +bpy.types.ThemeNodeEditor +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeNodeEditor.gp_vertex` +* :class:`bpy.types.ThemeNodeEditor.gp_vertex_select` +* :class:`bpy.types.ThemeNodeEditor.gp_vertex_size` + +bpy.types.ThemeSequenceEditor +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeSequenceEditor.gp_vertex` +* :class:`bpy.types.ThemeSequenceEditor.gp_vertex_select` +* :class:`bpy.types.ThemeSequenceEditor.gp_vertex_size` + +bpy.types.ThemeTimeline +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeTimeline.time_grease_pencil` +* :class:`bpy.types.ThemeTimeline.time_keyframe` + +bpy.types.ThemeView3D +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeView3D.clipping_border_3d` +* :class:`bpy.types.ThemeView3D.gp_vertex` +* :class:`bpy.types.ThemeView3D.gp_vertex_select` +* :class:`bpy.types.ThemeView3D.gp_vertex_size` + +bpy.types.UILayout +------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.UILayout.template_list` (listtype_name, list_id, dataptr, propname, active_dataptr, active_propname, item_dyntip_propname, rows, maxrows, type, columns), *was (listtype_name, list_id, dataptr, propname, active_dataptr, active_propname, rows, maxrows, type, columns)* + +bpy.types.UserPreferencesSystem +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesSystem.pixel_size` + +bpy.types.UserPreferencesView +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesView.use_gl_warn_support` + +bpy.types.VoxelData +------------------- + +Added +^^^^^ + +* :class:`bpy.types.VoxelData.hair_data_type` + +2.74 to 2.75 +============ + +bpy.types.BakePixel +------------------- + +Added +^^^^^ + +* :class:`bpy.types.BakePixel.object_id` + +bpy.types.BlendData +------------------- + +Added +^^^^^ + +* :class:`bpy.types.BlendData.palettes` + +bpy.types.BlendDataImages +------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataImages.new` (name, width, height, alpha, float_buffer, stereo3d), *was (name, width, height, alpha, float_buffer)* + +bpy.types.BlendDataSounds +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.BlendDataSounds.load` +* :class:`bpy.types.BlendDataSounds.remove` + +bpy.types.DopeSheet +------------------- + +Added +^^^^^ + +* :class:`bpy.types.DopeSheet.filter_text` +* :class:`bpy.types.DopeSheet.use_filter_text` + +bpy.types.FileSelectParams +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.FileSelectParams.thumbnail_size` + +bpy.types.GPUDOFSettings +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.GPUDOFSettings.blades` +* :class:`bpy.types.GPUDOFSettings.is_hq_supported` +* :class:`bpy.types.GPUDOFSettings.use_high_quality` + +bpy.types.Camera +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Camera.stereo` + +bpy.types.Image +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Image.buffers_free` +* :class:`bpy.types.Image.is_multiview` +* :class:`bpy.types.Image.is_stereo_3d` +* :class:`bpy.types.Image.packed_files` +* :class:`bpy.types.Image.stereo_3d_format` +* :class:`bpy.types.Image.use_multiview` +* :class:`bpy.types.Image.views_format` + +bpy.types.SunLamp +----------------- + +Added +^^^^^ + +* :class:`bpy.types.SunLamp.show_shadow_box` + +bpy.types.Mesh +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Mesh.vertex_paint_masks` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Mesh.calc_tessface` (free_mpoly), *was ()* + +bpy.types.Object +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Object.cache_release` +* :class:`bpy.types.Object.shape_key_remove` + +bpy.types.Scene +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Scene.depsgraph` + +bpy.types.ImageFormatSettings +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ImageFormatSettings.stereo_3d_format` +* :class:`bpy.types.ImageFormatSettings.views_format` + +bpy.types.ImageUser +------------------- + +Added +^^^^^ + +* :class:`bpy.types.ImageUser.multilayer_view` + +Removed +^^^^^^^ + +* **multilayer_pass** + +bpy.types.LodLevel +------------------ + +Added +^^^^^ + +* :class:`bpy.types.LodLevel.object_hysteresis_percentage` +* :class:`bpy.types.LodLevel.use_object_hysteresis` + +bpy.types.DecimateModifier +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.DecimateModifier.vertex_group_factor` + +bpy.types.CompositorNodeImage +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CompositorNodeImage.has_layers` +* :class:`bpy.types.CompositorNodeImage.has_views` +* :class:`bpy.types.CompositorNodeImage.view` + +bpy.types.TextureNodeImage +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.TextureNodeImage.image_user` + +bpy.types.Operator +------------------ + +Added +^^^^^ + +* :class:`bpy.types.Operator.macros` +* :class:`bpy.types.Operator.options` + +bpy.types.Sculpt +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Sculpt.detail_percent` + +bpy.types.PointCache +-------------------- + +Renamed +^^^^^^^ + +* **frames_skipped** -> :class:`bpy.types.PointCache.is_frame_skip` + +bpy.types.CyclesLampSettings +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CyclesLampSettings.is_portal` + +bpy.types.CyclesRenderSettings +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.CyclesRenderSettings.use_animated_seed` + +bpy.types.Region +---------------- + +Removed +^^^^^^^ + +* **callback_add** + +bpy.types.RenderEngine +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderEngine.active_view_set` +* :class:`bpy.types.RenderEngine.bl_use_shading_nodes_custom` +* :class:`bpy.types.RenderEngine.camera_model_matrix` +* :class:`bpy.types.RenderEngine.camera_shift_x` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.RenderEngine.bake` (scene, object, pass_type, object_id, pixel_array, num_pixels, depth, result), *was (scene, object, pass_type, pixel_array, num_pixels, depth, result)* +* :class:`bpy.types.RenderEngine.begin_result` (x, y, w, h, layer, view), *was (x, y, w, h, layer)* + +bpy.types.CYCLES +---------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.CYCLES.bake` (self, scene, obj, pass_type, object_id, pixel_array, num_pixels, depth, result), *was (self, scene, obj, pass_type, pixel_array, num_pixels, depth, result)* + +bpy.types.RenderLayer +--------------------- + +Removed +^^^^^^^ + +* **rect** + +bpy.types.RenderPass +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderPass.view_id` + +bpy.types.RenderResult +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderResult.views` + +bpy.types.RenderSettings +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.RenderSettings.simplify_child_particles_render` +* :class:`bpy.types.RenderSettings.simplify_subdivision_render` +* :class:`bpy.types.RenderSettings.stereo_views` +* :class:`bpy.types.RenderSettings.use_multiview` +* :class:`bpy.types.RenderSettings.views` +* :class:`bpy.types.RenderSettings.views_format` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.RenderSettings.frame_path` (frame, preview, view), *was (frame)* + +bpy.types.SceneGameData +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.SceneGameData.scene_hysteresis_percentage` +* :class:`bpy.types.SceneGameData.use_scene_hysteresis` + +bpy.types.Sensor +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Sensor.tick_skip` + +Removed +^^^^^^^ + +* **frequency** + +bpy.types.EffectSequence +------------------------ + +Removed +^^^^^^^ + +* **use_proxy_custom_directory** +* **use_proxy_custom_file** + +bpy.types.ImageSequence +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.ImageSequence.stereo_3d_format` +* :class:`bpy.types.ImageSequence.use_multiview` +* :class:`bpy.types.ImageSequence.views_format` + +Removed +^^^^^^^ + +* **use_proxy_custom_directory** +* **use_proxy_custom_file** + +bpy.types.MetaSequence +---------------------- + +Removed +^^^^^^^ + +* **use_proxy_custom_directory** +* **use_proxy_custom_file** + +bpy.types.MovieSequence +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.MovieSequence.stereo_3d_format` +* :class:`bpy.types.MovieSequence.use_multiview` +* :class:`bpy.types.MovieSequence.views_format` + +Removed +^^^^^^^ + +* **use_proxy_custom_directory** +* **use_proxy_custom_file** + +bpy.types.SceneSequence +----------------------- + +Removed +^^^^^^^ + +* **use_proxy_custom_directory** +* **use_proxy_custom_file** + +bpy.types.SequenceEditor +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.SequenceEditor.proxy_dir` +* :class:`bpy.types.SequenceEditor.proxy_storage` + +bpy.types.SequenceProxy +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.SequenceProxy.use_proxy_custom_directory` +* :class:`bpy.types.SequenceProxy.use_proxy_custom_file` + +bpy.types.SpaceImageEditor +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceImageEditor.show_stereo_3d` + +bpy.types.SpaceSequenceEditor +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceSequenceEditor.show_metadata` + +bpy.types.SpaceView3D +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceView3D.show_stereo_3d_cameras` +* :class:`bpy.types.SpaceView3D.show_stereo_3d_convergence_plane` +* :class:`bpy.types.SpaceView3D.show_stereo_3d_volume` +* :class:`bpy.types.SpaceView3D.stereo_3d_camera` +* :class:`bpy.types.SpaceView3D.stereo_3d_convergence_plane_alpha` +* :class:`bpy.types.SpaceView3D.stereo_3d_eye` +* :class:`bpy.types.SpaceView3D.stereo_3d_volume_alpha` + +bpy.types.SpaceUVEditor +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceUVEditor.show_metadata` + +bpy.types.ThemeImageEditor +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeImageEditor.metadatabg` +* :class:`bpy.types.ThemeImageEditor.metadatatext` + +bpy.types.ThemeSequenceEditor +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeSequenceEditor.metadatabg` +* :class:`bpy.types.ThemeSequenceEditor.metadatatext` + +bpy.types.ToolSettings +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.ToolSettings.lock_markers` +* :class:`bpy.types.ToolSettings.use_proportional_action` +* :class:`bpy.types.ToolSettings.use_proportional_fcurve` + +bpy.types.UILayout +------------------ + +Added +^^^^^ + +* :class:`bpy.types.UILayout.template_image_stereo_3d` +* :class:`bpy.types.UILayout.template_image_views` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.UILayout.menu` (menu, text, text_ctxt, translate, icon, icon_value), *was (menu, text, text_ctxt, translate, icon)* +* :class:`bpy.types.UILayout.template_icon_view` (data, property, show_labels), *was (data, property)* +* :class:`bpy.types.UILayout.template_image` (data, property, image_user, compact, multiview), *was (data, property, image_user, compact)* + +bpy.types.UserPreferencesView +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesView.view_frame_keyframes` +* :class:`bpy.types.UserPreferencesView.view_frame_seconds` +* :class:`bpy.types.UserPreferencesView.view_frame_type` + +bpy.types.Window +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Window.stereo_3d_display` + +2.75 to 2.76 +============ + +bpy.types.ActionFCurves +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.ActionFCurves.find` + +bpy.types.BlendDataBrushes +-------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataBrushes.new` (name, mode), *was (name)* + +bpy.types.FileSelectParams +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.FileSelectParams.filter_id` +* :class:`bpy.types.FileSelectParams.filter_id_category` +* :class:`bpy.types.FileSelectParams.recursion_level` +* :class:`bpy.types.FileSelectParams.use_filter_blendid` +* :class:`bpy.types.FileSelectParams.use_library_browsing` + +bpy.types.GameObjectSettings +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GameObjectSettings.angular_velocity_max` +* :class:`bpy.types.GameObjectSettings.angular_velocity_min` + +bpy.types.ID +------------ + +Added +^^^^^ + +* :class:`bpy.types.ID.preview` + +bpy.types.Brush +--------------- + +Removed +^^^^^^^ + +* **use_wrap** + +bpy.types.ImagePreview +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.ImagePreview.icon_pixels_float` +* :class:`bpy.types.ImagePreview.image_pixels_float` + +bpy.types.ImageUser +------------------- + +Added +^^^^^ + +* :class:`bpy.types.ImageUser.multilayer_pass` + +bpy.types.BevelModifier +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.BevelModifier.loop_slide` + +bpy.types.SubsurfModifier +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SubsurfModifier.use_opensubdiv` + +bpy.types.ShaderNodeTexImage +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeTexImage.extension` + +bpy.types.Paint +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Paint.tile_offset` +* :class:`bpy.types.Paint.tile_x` +* :class:`bpy.types.Paint.tile_y` +* :class:`bpy.types.Paint.tile_z` + +bpy.types.CyclesObjectBlurSettings +---------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CyclesObjectBlurSettings.use_camera_cull` + +bpy.types.CyclesRenderSettings +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.CyclesRenderSettings.camera_cull_margin` +* :class:`bpy.types.CyclesRenderSettings.use_camera_cull` + +bpy.types.CyclesWorldSettings +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CyclesWorldSettings.max_bounces` + +bpy.types.RenderSettings +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.RenderSettings.use_stamp_strip_meta` + +bpy.types.SmokeDomainSettings +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SmokeDomainSettings.velocity_grid` + +bpy.types.SpaceClipEditor +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceClipEditor.show_metadata` + +bpy.types.SpaceNodeEditor +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceNodeEditor.insert_offset_direction` +* :class:`bpy.types.SpaceNodeEditor.use_insert_offset` + +bpy.types.ToolSettings +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.ToolSettings.use_snap_grid_absolute` + +bpy.types.UILayout +------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.UILayout.template_icon_view` (data, property, show_labels, scale), *was (data, property, show_labels)* + +bpy.types.UserPreferencesEdit +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesEdit.node_margin` + +bpy.types.UserPreferencesInput +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesInput.ndof_deadzone` + +bpy.types.UserPreferencesSystem +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesSystem.opensubdiv_compute_type` + +2.76 to 2.77 +============ + +bpy.types.AnimDataDrivers +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.AnimDataDrivers.find` + +bpy.types.BakeSettings +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.BakeSettings.pass_filter` +* :class:`bpy.types.BakeSettings.use_pass_ambient_occlusion` +* :class:`bpy.types.BakeSettings.use_pass_color` +* :class:`bpy.types.BakeSettings.use_pass_diffuse` +* :class:`bpy.types.BakeSettings.use_pass_direct` +* :class:`bpy.types.BakeSettings.use_pass_emit` +* :class:`bpy.types.BakeSettings.use_pass_glossy` +* :class:`bpy.types.BakeSettings.use_pass_indirect` +* :class:`bpy.types.BakeSettings.use_pass_subsurface` +* :class:`bpy.types.BakeSettings.use_pass_transmission` + +bpy.types.BlendData +------------------- + +Removed +^^^^^^^ + +* **scripts** + +bpy.types.BlendDataFonts +------------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataFonts.load` (filepath, check_existing), *was (filepath)* + +bpy.types.BlendDataImages +------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataImages.load` (filepath, check_existing), *was (filepath)* + +bpy.types.BlendDataMasks +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.BlendDataMasks.is_updated` + +bpy.types.BlendDataMovieClips +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.BlendDataMovieClips.is_updated` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataMovieClips.load` (filepath, check_existing), *was (filepath)* + +bpy.types.BlendDataSounds +------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataSounds.load` (filepath, check_existing), *was (filepath)* + +bpy.types.DopeSheet +------------------- + +Added +^^^^^ + +* :class:`bpy.types.DopeSheet.show_gpencil_3d_only` + +bpy.types.FileSelectParams +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.FileSelectParams.display_size` + +Removed +^^^^^^^ + +* **thumbnail_size** + +bpy.types.GameObjectSettings +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GameObjectSettings.jump_max` + +bpy.types.ID +------------ + +Added +^^^^^ + +* :class:`bpy.types.ID.user_of_id` + +bpy.types.Brush +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Brush.rake_factor` + +bpy.types.FreestyleLineStyle +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.FreestyleLineStyle.animation_data` + +bpy.types.GreasePencil +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.GreasePencil.use_onion_skinning` + +Removed +^^^^^^^ + +* **draw_mode** +* **use_stroke_endpoints** + +bpy.types.Object +---------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Object.closest_point_on_mesh` (origin, distance), *was (point, max_dist)* +* :class:`bpy.types.Object.ray_cast` (origin, direction, distance), *was (start, end)* + +bpy.types.Scene +--------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Scene.ray_cast` (origin, direction, distance), *was (start, end)* + +bpy.types.ImageFormatSettings +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ImageFormatSettings.tiff_codec` + +bpy.types.ImagePackedFile +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ImagePackedFile.save` + +bpy.types.DataTransferModifier +------------------------------ + +Removed +^^^^^^^ + +* **data_types_loops_uv** +* **data_types_loops_vcol** +* **data_types_verts_vgroup** + +bpy.types.DecimateModifier +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.DecimateModifier.symmetry_axis` +* :class:`bpy.types.DecimateModifier.use_symmetry` + +bpy.types.Node +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Node.insert_link` + +bpy.types.CompositorNodeBlur +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CompositorNodeBlur.use_extended_bounds` + +bpy.types.CompositorNodeBokehBlur +--------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CompositorNodeBokehBlur.use_extended_bounds` + +bpy.types.CompositorNodeStabilize +--------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CompositorNodeStabilize.invert` + +bpy.types.ShaderNodeTexEnvironment +---------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeTexEnvironment.interpolation` + +bpy.types.ShaderNodeTexPointDensity +----------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeTexPointDensity.cache_point_density` +* :class:`bpy.types.ShaderNodeTexPointDensity.calc_point_density_minmax` + +bpy.types.ShaderNodeTexWave +--------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeTexWave.wave_profile` + +bpy.types.PoseBone +------------------ + +Added +^^^^^ + +* :class:`bpy.types.PoseBone.custom_shape_scale` +* :class:`bpy.types.PoseBone.use_custom_shape_bone_size` + +bpy.types.EnumProperty +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.EnumProperty.enum_items_static` + +bpy.types.CyclesRenderSettings +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.CyclesRenderSettings.debug_opencl_device_type` +* :class:`bpy.types.CyclesRenderSettings.debug_opencl_kernel_type` +* :class:`bpy.types.CyclesRenderSettings.debug_use_cpu_avx` +* :class:`bpy.types.CyclesRenderSettings.debug_use_cpu_avx2` +* :class:`bpy.types.CyclesRenderSettings.debug_use_cpu_sse2` +* :class:`bpy.types.CyclesRenderSettings.debug_use_cpu_sse3` +* :class:`bpy.types.CyclesRenderSettings.debug_use_cpu_sse41` +* :class:`bpy.types.CyclesRenderSettings.debug_use_opencl_debug` +* :class:`bpy.types.CyclesRenderSettings.debug_use_qbvh` +* :class:`bpy.types.CyclesRenderSettings.motion_blur_position` +* :class:`bpy.types.CyclesRenderSettings.pixel_filter_type` +* :class:`bpy.types.CyclesRenderSettings.rolling_shutter_duration` +* :class:`bpy.types.CyclesRenderSettings.rolling_shutter_type` + +Removed +^^^^^^^ + +* **use_cache** + +bpy.types.RenderEngine +---------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.RenderEngine.bake` (scene, object, pass_type, pass_filter, object_id, pixel_array, num_pixels, depth, result), *was (scene, object, pass_type, object_id, pixel_array, num_pixels, depth, result)* + +bpy.types.CYCLES +---------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.CYCLES.bake` (self, scene, obj, pass_type, pass_filter, object_id, pixel_array, num_pixels, depth, result), *was (self, scene, obj, pass_type, object_id, pixel_array, num_pixels, depth, result)* + +bpy.types.RenderLayer +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderLayer.use_ao` + +bpy.types.RenderSettings +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.RenderSettings.motion_blur_shutter_curve` + +Removed +^^^^^^^ + +* **use_free_unused_nodes** + +bpy.types.SceneRenderLayer +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SceneRenderLayer.use_ao` + +bpy.types.SculptToolCapabilities +-------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SculptToolCapabilities.has_rake_factor` + +bpy.types.TextSequence +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.TextSequence.align_y` +* :class:`bpy.types.TextSequence.wrap_width` + +Renamed +^^^^^^^ + +* **align** -> :class:`bpy.types.TextSequence.align_x` + +bpy.types.WipeSequence +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.WipeSequence.input_2` + +bpy.types.SceneSequence +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.SceneSequence.use_sequence` + +bpy.types.SoundSequence +----------------------- + +Removed +^^^^^^^ + +* **filepath** + +bpy.types.SequenceModifier +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SequenceModifier.mask_time` + +bpy.types.ShapeKey +------------------ + +Added +^^^^^ + +* :class:`bpy.types.ShapeKey.normals_polygon_get` +* :class:`bpy.types.ShapeKey.normals_split_get` +* :class:`bpy.types.ShapeKey.normals_vertex_get` + +bpy.types.SmokeDomainSettings +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SmokeDomainSettings.cache_file_format` +* :class:`bpy.types.SmokeDomainSettings.data_depth` +* :class:`bpy.types.SmokeDomainSettings.openvdb_cache_compress_type` + +bpy.types.SpaceGraphEditor +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceGraphEditor.cursor_position_x` + +bpy.types.ThemeSequenceEditor +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeSequenceEditor.text_strip` + +bpy.types.ThemeView3D +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeView3D.text_grease_pencil` +* :class:`bpy.types.ThemeView3D.text_keyframe` + +bpy.types.ToolSettings +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.ToolSettings.gpencil_sculpt` +* :class:`bpy.types.ToolSettings.gpencil_stroke_placement_image_editor` +* :class:`bpy.types.ToolSettings.gpencil_stroke_placement_sequencer_preview` +* :class:`bpy.types.ToolSettings.gpencil_stroke_placement_view2d` +* :class:`bpy.types.ToolSettings.gpencil_stroke_placement_view3d` +* :class:`bpy.types.ToolSettings.use_gpencil_additive_drawing` +* :class:`bpy.types.ToolSettings.use_gpencil_stroke_endpoints` + +Renamed +^^^^^^^ + +* **use_grease_pencil_sessions** -> :class:`bpy.types.ToolSettings.use_gpencil_continuous_drawing` + +bpy.types.UserPreferencesSystem +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesSystem.font_path_ui_mono` + +Removed +^^^^^^^ + +* **is_occlusion_query_supported** +* **use_vertex_buffer_objects** + +bpy.types.UserPreferencesView +----------------------------- + +Removed +^^^^^^^ + +* **use_gl_warn_support** + +2.77 to 2.78 +============ + +bpy.types.AnimData +------------------ + +Added +^^^^^ + +* :class:`bpy.types.AnimData.use_tweak_mode` + +bpy.types.BlendData +------------------- + +Added +^^^^^ + +* :class:`bpy.types.BlendData.cache_files` +* :class:`bpy.types.BlendData.paint_curves` + +bpy.types.BlendDataActions +-------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataActions.remove` (action, do_unlink), *was (action)* + +bpy.types.BlendDataArmatures +---------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataArmatures.remove` (armature, do_unlink), *was (armature)* + +bpy.types.BlendDataBrushes +-------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataBrushes.remove` (brush, do_unlink), *was (brush)* + +bpy.types.BlendDataCameras +-------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataCameras.remove` (camera, do_unlink), *was (camera)* + +bpy.types.BlendDataCurves +------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataCurves.remove` (curve, do_unlink), *was (curve)* + +bpy.types.BlendDataFonts +------------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataFonts.remove` (vfont, do_unlink), *was (vfont)* + +bpy.types.BlendDataGreasePencils +-------------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataGreasePencils.remove` (grease_pencil, do_unlink), *was (grease_pencil)* + +bpy.types.BlendDataGroups +------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataGroups.remove` (group, do_unlink), *was (group)* + +bpy.types.BlendDataImages +------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataImages.remove` (image, do_unlink), *was (image)* + +bpy.types.BlendDataLamps +------------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataLamps.remove` (lamp, do_unlink), *was (lamp)* + +bpy.types.BlendDataLattices +--------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataLattices.remove` (lattice, do_unlink), *was (lattice)* + +bpy.types.BlendDataLineStyles +----------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataLineStyles.remove` (linestyle, do_unlink), *was (linestyle)* + +bpy.types.BlendDataMasks +------------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataMasks.remove` (mask, do_unlink), *was (mask)* + +bpy.types.BlendDataMaterials +---------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataMaterials.remove` (material, do_unlink), *was (material)* + +bpy.types.BlendDataMeshes +------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataMeshes.remove` (mesh, do_unlink), *was (mesh)* + +bpy.types.BlendDataMetaBalls +---------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataMetaBalls.remove` (metaball, do_unlink), *was (metaball)* + +bpy.types.BlendDataMovieClips +----------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataMovieClips.remove` (clip, do_unlink), *was (clip)* + +bpy.types.BlendDataNodeTrees +---------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataNodeTrees.remove` (tree, do_unlink), *was (tree)* + +bpy.types.BlendDataObjects +-------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataObjects.remove` (object, do_unlink), *was (object)* + +bpy.types.BlendDataPalettes +--------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataPalettes.remove` (palette, do_unlink), *was (palette)* + +bpy.types.BlendDataParticles +---------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataParticles.remove` (particle, do_unlink), *was (particle)* + +bpy.types.BlendDataScenes +------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataScenes.remove` (scene, do_unlink), *was (scene)* + +bpy.types.BlendDataSounds +------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataSounds.remove` (sound, do_unlink), *was (sound)* + +bpy.types.BlendDataSpeakers +--------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataSpeakers.remove` (speaker, do_unlink), *was (speaker)* + +bpy.types.BlendDataTexts +------------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataTexts.remove` (text, do_unlink), *was (text)* + +bpy.types.BlendDataTextures +--------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataTextures.remove` (texture, do_unlink), *was (texture)* + +bpy.types.BlendDataWorlds +------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.BlendDataWorlds.remove` (world, do_unlink), *was (world)* + +bpy.types.Bone +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Bone.bbone_curveinx` +* :class:`bpy.types.Bone.bbone_curveiny` +* :class:`bpy.types.Bone.bbone_curveoutx` +* :class:`bpy.types.Bone.bbone_curveouty` +* :class:`bpy.types.Bone.bbone_rollin` +* :class:`bpy.types.Bone.bbone_rollout` +* :class:`bpy.types.Bone.bbone_scalein` +* :class:`bpy.types.Bone.bbone_scaleout` +* :class:`bpy.types.Bone.use_endroll_as_inroll` + +bpy.types.CameraStereoData +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CameraStereoData.pole_merge_angle_from` +* :class:`bpy.types.CameraStereoData.pole_merge_angle_to` +* :class:`bpy.types.CameraStereoData.use_pole_merge` +* :class:`bpy.types.CameraStereoData.use_spherical_stereo` + +bpy.types.ClothSettings +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.ClothSettings.time_scale` +* :class:`bpy.types.ClothSettings.use_dynamic_mesh` + +bpy.types.CopyLocationConstraint +-------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CopyLocationConstraint.use_bbone_shape` + +bpy.types.CopyTransformsConstraint +---------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CopyTransformsConstraint.use_bbone_shape` + +bpy.types.DampedTrackConstraint +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.DampedTrackConstraint.use_bbone_shape` + +bpy.types.LimitDistanceConstraint +--------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.LimitDistanceConstraint.use_bbone_shape` + +bpy.types.LockedTrackConstraint +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.LockedTrackConstraint.use_bbone_shape` + +bpy.types.PivotConstraint +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.PivotConstraint.use_bbone_shape` + +bpy.types.StretchToConstraint +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.StretchToConstraint.use_bbone_shape` + +bpy.types.TrackToConstraint +--------------------------- + +Added +^^^^^ + +* :class:`bpy.types.TrackToConstraint.use_bbone_shape` + +bpy.types.DopeSheet +------------------- + +Added +^^^^^ + +* :class:`bpy.types.DopeSheet.use_datablock_sort` +* :class:`bpy.types.DopeSheet.use_multi_word_filter` + +bpy.types.Driver +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Driver.use_self` + +bpy.types.DriverVariable +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.DriverVariable.is_name_valid` + +bpy.types.EditBone +------------------ + +Added +^^^^^ + +* :class:`bpy.types.EditBone.bbone_curveinx` +* :class:`bpy.types.EditBone.bbone_curveiny` +* :class:`bpy.types.EditBone.bbone_curveoutx` +* :class:`bpy.types.EditBone.bbone_curveouty` +* :class:`bpy.types.EditBone.bbone_rollin` +* :class:`bpy.types.EditBone.bbone_rollout` +* :class:`bpy.types.EditBone.bbone_scalein` +* :class:`bpy.types.EditBone.bbone_scaleout` +* :class:`bpy.types.EditBone.use_endroll_as_inroll` + +bpy.types.FCurveKeyframePoints +------------------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.FCurveKeyframePoints.insert` (frame, value, options, keyframe_type), *was (frame, value, options)* + +bpy.types.GPencilLayer +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPencilLayer.is_parented` +* :class:`bpy.types.GPencilLayer.matrix_inverse` +* :class:`bpy.types.GPencilLayer.parent` +* :class:`bpy.types.GPencilLayer.parent_bone` +* :class:`bpy.types.GPencilLayer.parent_type` +* :class:`bpy.types.GPencilLayer.tint_color` +* :class:`bpy.types.GPencilLayer.tint_factor` +* :class:`bpy.types.GPencilLayer.unlock_color` + +Removed +^^^^^^^ + +* **color** +* **fill_alpha** +* **fill_color** +* **is_fill_visible** +* **is_stroke_visible** + +Renamed +^^^^^^^ + +* **alpha** -> :class:`bpy.types.GPencilLayer.opacity` +* **line_width** -> :class:`bpy.types.GPencilLayer.line_change` + +bpy.types.GPencilSculptSettings +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPencilSculptSettings.affect_position` +* :class:`bpy.types.GPencilSculptSettings.affect_strength` +* :class:`bpy.types.GPencilSculptSettings.affect_thickness` +* :class:`bpy.types.GPencilSculptSettings.selection_alpha` + +bpy.types.GPencilStroke +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPencilStroke.color` +* :class:`bpy.types.GPencilStroke.colorname` +* :class:`bpy.types.GPencilStroke.draw_cyclic` +* :class:`bpy.types.GPencilStroke.line_width` +* :class:`bpy.types.GPencilStroke.triangles` + +bpy.types.GPencilStrokePoint +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPencilStrokePoint.strength` + +bpy.types.GPencilStrokePoints +----------------------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.GPencilStrokePoints.add` (count, pressure, strength), *was (count)* + +bpy.types.GPencilStrokes +------------------------ + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.GPencilStrokes.new` (colorname), *was ()* + +bpy.types.ID +------------ + +Added +^^^^^ + +* :class:`bpy.types.ID.user_remap` + +bpy.types.TextCurve +------------------- + +Added +^^^^^ + +* :class:`bpy.types.TextCurve.align_x` +* :class:`bpy.types.TextCurve.align_y` + +Removed +^^^^^^^ + +* **align** + +bpy.types.GreasePencil +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.GreasePencil.palettes` +* :class:`bpy.types.GreasePencil.show_stroke_direction` + +bpy.types.PointLamp +------------------- + +Added +^^^^^ + +* :class:`bpy.types.PointLamp.constant_coefficient` +* :class:`bpy.types.PointLamp.linear_coefficient` +* :class:`bpy.types.PointLamp.quadratic_coefficient` + +bpy.types.SpotLamp +------------------ + +Added +^^^^^ + +* :class:`bpy.types.SpotLamp.constant_coefficient` +* :class:`bpy.types.SpotLamp.linear_coefficient` +* :class:`bpy.types.SpotLamp.quadratic_coefficient` + +bpy.types.Library +----------------- + +Added +^^^^^ + +* :class:`bpy.types.Library.reload` + +bpy.types.Mesh +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Mesh.flip_normals` +* :class:`bpy.types.Mesh.split_faces` + +bpy.types.MovieClip +------------------- + +Added +^^^^^ + +* :class:`bpy.types.MovieClip.animation_data` + +bpy.types.ParticleSettings +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ParticleSettings.collision_group` + +bpy.types.Scene +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Scene.alembic_export` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Scene.collada_export` (filepath, apply_modifiers, export_mesh_type, selected, include_children, include_armatures, include_shapekeys, deform_bones_only, active_uv_only, include_uv_textures, include_material_textures, use_texture_copies, use_ngons, use_object_instantiation, use_blender_profile, sort_by_name, open_sim, export_transformation_type), *was (filepath, apply_modifiers, export_mesh_type, selected, include_children, include_armatures, include_shapekeys, deform_bones_only, active_uv_only, include_uv_textures, include_material_textures, use_texture_copies, use_ngons, use_object_instantiation, sort_by_name, open_sim, export_transformation_type)* + +bpy.types.WholeCharacter +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.WholeCharacter.doBBone` + +bpy.types.MeshPolygon +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.MeshPolygon.flip` + +bpy.types.BooleanModifier +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.BooleanModifier.double_threshold` +* :class:`bpy.types.BooleanModifier.solver` + +bpy.types.HookModifier +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.HookModifier.matrix_inverse` + +bpy.types.NormalEditModifier +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.NormalEditModifier.mix_limit` + +bpy.types.ShrinkwrapModifier +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShrinkwrapModifier.invert_vertex_group` + +bpy.types.SimpleDeformModifier +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.SimpleDeformModifier.invert_vertex_group` + +bpy.types.MovieTrackingStabilization +------------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.MovieTrackingStabilization.active_rotation_track_index` +* :class:`bpy.types.MovieTrackingStabilization.anchor_frame` +* :class:`bpy.types.MovieTrackingStabilization.rotation_tracks` +* :class:`bpy.types.MovieTrackingStabilization.show_tracks_expanded` +* :class:`bpy.types.MovieTrackingStabilization.target_position` +* :class:`bpy.types.MovieTrackingStabilization.target_rotation` +* :class:`bpy.types.MovieTrackingStabilization.target_scale` +* :class:`bpy.types.MovieTrackingStabilization.use_stabilize_scale` + +Removed +^^^^^^^ + +* **rotation_track** + +bpy.types.MovieTrackingTrack +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.MovieTrackingTrack.weight_stab` + +bpy.types.CompositorNodeColorBalance +------------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.CompositorNodeColorBalance.offset_basis` + +bpy.types.ShaderNodeTexPointDensity +----------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ShaderNodeTexPointDensity.vertex_attribute_name` + +Renamed +^^^^^^^ + +* **color_source** -> :class:`bpy.types.ShaderNodeTexPointDensity.particle_color_source` +* **color_source** -> :class:`bpy.types.ShaderNodeTexPointDensity.vertex_color_source` + +bpy.types.PointDensity +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.PointDensity.vertex_attribute_name` + +Renamed +^^^^^^^ + +* **color_source** -> :class:`bpy.types.PointDensity.particle_color_source` +* **color_source** -> :class:`bpy.types.PointDensity.vertex_color_source` + +bpy.types.PoseBone +------------------ + +Added +^^^^^ + +* :class:`bpy.types.PoseBone.bbone_curveinx` +* :class:`bpy.types.PoseBone.bbone_curveiny` +* :class:`bpy.types.PoseBone.bbone_curveoutx` +* :class:`bpy.types.PoseBone.bbone_curveouty` +* :class:`bpy.types.PoseBone.bbone_custom_handle_end` +* :class:`bpy.types.PoseBone.bbone_custom_handle_start` +* :class:`bpy.types.PoseBone.bbone_rollin` +* :class:`bpy.types.PoseBone.bbone_rollout` +* :class:`bpy.types.PoseBone.bbone_scalein` +* :class:`bpy.types.PoseBone.bbone_scaleout` +* :class:`bpy.types.PoseBone.use_bbone_custom_handles` +* :class:`bpy.types.PoseBone.use_bbone_relative_end_handle` +* :class:`bpy.types.PoseBone.use_bbone_relative_start_handle` + +bpy.types.BoolProperty +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.BoolProperty.is_array` + +bpy.types.FloatProperty +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.FloatProperty.is_array` + +bpy.types.IntProperty +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.IntProperty.is_array` + +bpy.types.CyclesMaterialSettings +-------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CyclesMaterialSettings.displacement_method` + +bpy.types.CyclesMeshSettings +---------------------------- + +Removed +^^^^^^^ + +* **dicing_rate** +* **displacement_method** +* **use_subdivision** + +bpy.types.CyclesRenderSettings +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.CyclesRenderSettings.debug_bvh_time_steps` +* :class:`bpy.types.CyclesRenderSettings.debug_use_cuda_adaptive_compile` +* :class:`bpy.types.CyclesRenderSettings.debug_use_hair_bvh` +* :class:`bpy.types.CyclesRenderSettings.dicing_rate` +* :class:`bpy.types.CyclesRenderSettings.distance_cull_margin` +* :class:`bpy.types.CyclesRenderSettings.light_sampling_threshold` +* :class:`bpy.types.CyclesRenderSettings.max_subdivisions` +* :class:`bpy.types.CyclesRenderSettings.preview_dicing_rate` +* :class:`bpy.types.CyclesRenderSettings.texture_limit` +* :class:`bpy.types.CyclesRenderSettings.texture_limit_render` +* :class:`bpy.types.CyclesRenderSettings.use_distance_cull` + +bpy.types.RenderEngine +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderEngine.active_view_get` +* :class:`bpy.types.RenderEngine.bl_use_spherical_stereo` +* :class:`bpy.types.RenderEngine.use_spherical_stereo` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.RenderEngine.camera_model_matrix` (camera, use_spherical_stereo, r_model_matrix), *was (camera, r_model_matrix)* +* :class:`bpy.types.RenderEngine.camera_shift_x` (camera, use_spherical_stereo), *was (camera)* + +bpy.types.RenderSettings +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.RenderSettings.use_spherical_stereo` +* :class:`bpy.types.RenderSettings.use_stamp_labels` +* :class:`bpy.types.RenderSettings.use_stamp_memory` +* :class:`bpy.types.RenderSettings.use_world_space_shading` + +bpy.types.SceneGameData +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.SceneGameData.use_glsl_environment_lighting` + +bpy.types.SceneGameRecastData +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SceneGameRecastData.partitioning` + +bpy.types.TextSequence +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.TextSequence.color` +* :class:`bpy.types.TextSequence.shadow_color` + +bpy.types.SmokeDomainSettings +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SmokeDomainSettings.heat_grid` + +bpy.types.SoftBodySettings +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SoftBodySettings.collision_group` + +bpy.types.SpaceNLA +------------------ + +Added +^^^^^ + +* :class:`bpy.types.SpaceNLA.show_local_markers` + +bpy.types.ThemeDopeSheet +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.ThemeDopeSheet.keyframe_scale_factor` + +bpy.types.ThemeFileBrowser +-------------------------- + +Removed +^^^^^^^ + +* **active_file** +* **active_file_text** +* **scroll_handle** +* **scrollbar** +* **space_list** + +bpy.types.ToolSettings +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.ToolSettings.curve_paint_settings` +* :class:`bpy.types.ToolSettings.gpencil_brushes` +* :class:`bpy.types.ToolSettings.keyframe_type` +* :class:`bpy.types.ToolSettings.use_gpencil_draw_onback` + +bpy.types.UILayout +------------------ + +Added +^^^^^ + +* :class:`bpy.types.UILayout.template_cache_file` + +bpy.types.UserPreferences +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferences.version` + +bpy.types.UserPreferencesEdit +----------------------------- + +Removed +^^^^^^^ + +* **use_grease_pencil_smooth_stroke** + +bpy.types.UserPreferencesInput +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesInput.use_ndof` + +bpy.types.UserPreferencesSystem +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesSystem.legacy_compute_device_type` + +Removed +^^^^^^^ + +* **compute_device** +* **compute_device_type** + +2.78 to 2.79 +============ + +bpy.types.DupliObject +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.DupliObject.random_id` + +bpy.types.FFmpegSettings +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.FFmpegSettings.constant_rate_factor` +* :class:`bpy.types.FFmpegSettings.ffmpeg_preset` +* :class:`bpy.types.FFmpegSettings.max_b_frames` +* :class:`bpy.types.FFmpegSettings.use_max_b_frames` + +bpy.types.FieldSettings +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.FieldSettings.use_gravity_falloff` + +bpy.types.GPencilLayer +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPencilLayer.use_ghosts_always` + +bpy.types.GPencilSculptSettings +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPencilSculptSettings.lockaxis` + +bpy.types.Header +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Header.is_extended` + +bpy.types.ID +------------ + +Added +^^^^^ + +* :class:`bpy.types.ID.make_local` + +bpy.types.Mesh +-------------- + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Mesh.split_faces` (free_loop_normals), *was ()* + +bpy.types.Scene +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Scene.frame_float` +* :class:`bpy.types.Scene.show_subframe` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Scene.alembic_export` (filepath, frame_start, frame_end, xform_samples, geom_samples, shutter_open, shutter_close, selected_only, uvs, normals, vcolors, apply_subdiv, flatten, visible_layers_only, renderable_only, face_sets, subdiv_schema, export_hair, export_particles, compression_type, packuv, scale, triangulate, quad_method, ngon_method), *was (filepath, frame_start, frame_end, xform_samples, geom_samples, shutter_open, shutter_close, selected_only, uvs, normals, vcolors, apply_subdiv, flatten, visible_layers_only, renderable_only, face_sets, subdiv_schema, compression_type, packuv, scale)* +* :class:`bpy.types.Scene.collada_export` (filepath, apply_modifiers, export_mesh_type, selected, include_children, include_armatures, include_shapekeys, deform_bones_only, active_uv_only, export_texture_type, use_texture_copies, triangulate, use_object_instantiation, use_blender_profile, sort_by_name, export_transformation_type, open_sim, limit_precision, keep_bind_info), *was (filepath, apply_modifiers, export_mesh_type, selected, include_children, include_armatures, include_shapekeys, deform_bones_only, active_uv_only, include_uv_textures, include_material_textures, use_texture_copies, use_ngons, use_object_instantiation, use_blender_profile, sort_by_name, open_sim, export_transformation_type)* + +bpy.types.Macro +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Macro.bl_undo_group` + +bpy.types.Menu +-------------- + +Added +^^^^^ + +* :class:`bpy.types.Menu.is_extended` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.Menu.path_menu` (self, searchpaths, operator), *was (self, searchpaths, operator, props_default, filter_ext)* + +bpy.types.GPENCIL_PIE_sculpt +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPENCIL_PIE_sculpt.is_extended` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.GPENCIL_PIE_sculpt.path_menu` (self, searchpaths, operator), *was (self, searchpaths, operator, props_default, filter_ext)* + +bpy.types.GPENCIL_PIE_settings_palette +-------------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPENCIL_PIE_settings_palette.is_extended` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.GPENCIL_PIE_settings_palette.path_menu` (self, searchpaths, operator), *was (self, searchpaths, operator, props_default, filter_ext)* + +bpy.types.GPENCIL_PIE_tool_palette +---------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPENCIL_PIE_tool_palette.is_extended` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.GPENCIL_PIE_tool_palette.path_menu` (self, searchpaths, operator), *was (self, searchpaths, operator, props_default, filter_ext)* + +bpy.types.GPENCIL_PIE_tools_more +-------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPENCIL_PIE_tools_more.is_extended` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.GPENCIL_PIE_tools_more.path_menu` (self, searchpaths, operator), *was (self, searchpaths, operator, props_default, filter_ext)* + +bpy.types.DisplaceModifier +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.DisplaceModifier.space` + +bpy.types.MirrorModifier +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.MirrorModifier.mirror_offset_u` +* :class:`bpy.types.MirrorModifier.mirror_offset_v` + +bpy.types.ScrewModifier +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.ScrewModifier.merge_threshold` +* :class:`bpy.types.ScrewModifier.use_merge_vertices` + +bpy.types.MotionPath +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.MotionPath.color` +* :class:`bpy.types.MotionPath.line_thickness` +* :class:`bpy.types.MotionPath.lines` +* :class:`bpy.types.MotionPath.use_custom_color` + +bpy.types.CompositorNodeBrightContrast +-------------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CompositorNodeBrightContrast.use_premultiply` + +bpy.types.CompositorNodeHueSat +------------------------------ + +Removed +^^^^^^^ + +* **color_hue** +* **color_saturation** +* **color_value** + +bpy.types.CompositorNodeSwitchView +---------------------------------- + +Removed +^^^^^^^ + +* **check** + +bpy.types.Operator +------------------ + +Added +^^^^^ + +* :class:`bpy.types.Operator.bl_undo_group` +* :class:`bpy.types.Operator.is_repeat` + +bpy.types.Sculpt +---------------- + +Added +^^^^^ + +* :class:`bpy.types.Sculpt.constant_detail_resolution` + +Removed +^^^^^^^ + +* **constant_detail** + +bpy.types.Panel +--------------- + +Added +^^^^^ + +* :class:`bpy.types.Panel.is_extended` + +bpy.types.IMAGE_UV_sculpt +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.IMAGE_UV_sculpt.is_extended` + +bpy.types.IMAGE_UV_sculpt_curve +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.IMAGE_UV_sculpt_curve.is_extended` + +bpy.types.CyclesObjectSettings +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.CyclesObjectSettings.is_shadow_catcher` + +bpy.types.CyclesRenderSettings +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.CyclesRenderSettings.ao_bounces` +* :class:`bpy.types.CyclesRenderSettings.ao_bounces_render` +* :class:`bpy.types.CyclesRenderSettings.debug_opencl_kernel_single_program` +* :class:`bpy.types.CyclesRenderSettings.debug_opencl_mem_limit` +* :class:`bpy.types.CyclesRenderSettings.debug_use_cpu_split_kernel` +* :class:`bpy.types.CyclesRenderSettings.debug_use_cuda_split_kernel` + +bpy.types.PropertyGroupItem +--------------------------- + +Added +^^^^^ + +* :class:`bpy.types.PropertyGroupItem.id` + +bpy.types.RenderEngine +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderEngine.add_pass` +* :class:`bpy.types.RenderEngine.register_pass` +* :class:`bpy.types.RenderEngine.update_render_passes` + +Function Arguments +^^^^^^^^^^^^^^^^^^ + +* :class:`bpy.types.RenderEngine.end_result` (result, cancel, highlight, do_merge_results), *was (result, cancel, do_merge_results)* + +bpy.types.CYCLES +---------------- + +Added +^^^^^ + +* :class:`bpy.types.CYCLES.update_render_passes` + +bpy.types.RenderPass +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderPass.fullname` + +Removed +^^^^^^^ + +* **debug_type** +* **type** + +bpy.types.RenderPasses +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.RenderPasses.find_by_name` + +bpy.types.RenderSettings +------------------------ + +Removed +^^^^^^^ + +* **sequencer_gl_render** +* **use_sequencer_gl_preview** + +bpy.types.RigidBodyConstraint +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.RigidBodyConstraint.spring_damping_ang_x` +* :class:`bpy.types.RigidBodyConstraint.spring_damping_ang_y` +* :class:`bpy.types.RigidBodyConstraint.spring_damping_ang_z` +* :class:`bpy.types.RigidBodyConstraint.spring_stiffness_ang_x` +* :class:`bpy.types.RigidBodyConstraint.spring_stiffness_ang_y` +* :class:`bpy.types.RigidBodyConstraint.spring_stiffness_ang_z` +* :class:`bpy.types.RigidBodyConstraint.use_spring_ang_x` +* :class:`bpy.types.RigidBodyConstraint.use_spring_ang_y` +* :class:`bpy.types.RigidBodyConstraint.use_spring_ang_z` + +bpy.types.SceneRenderLayer +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SceneRenderLayer.cycles` +* :class:`bpy.types.SceneRenderLayer.update_render_passes` + +bpy.types.SmokeDomainSettings +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SmokeDomainSettings.axis_slice_method` +* :class:`bpy.types.SmokeDomainSettings.coba_field` +* :class:`bpy.types.SmokeDomainSettings.color_ramp` +* :class:`bpy.types.SmokeDomainSettings.display_thickness` +* :class:`bpy.types.SmokeDomainSettings.draw_velocity` +* :class:`bpy.types.SmokeDomainSettings.slice_axis` +* :class:`bpy.types.SmokeDomainSettings.slice_depth` +* :class:`bpy.types.SmokeDomainSettings.slice_method` +* :class:`bpy.types.SmokeDomainSettings.slice_per_voxel` +* :class:`bpy.types.SmokeDomainSettings.use_color_ramp` +* :class:`bpy.types.SmokeDomainSettings.vector_draw_type` +* :class:`bpy.types.SmokeDomainSettings.vector_scale` + +bpy.types.SpaceNodeEditor +------------------------- + +Removed +^^^^^^^ + +* **show_highlight** + +bpy.types.SpaceView3D +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceView3D.active_layer` + +bpy.types.SpaceUVEditor +----------------------- + +Added +^^^^^ + +* :class:`bpy.types.SpaceUVEditor.other_uv_filter` + +bpy.types.ThemeGraphEditor +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeGraphEditor.vertex_bevel` + +bpy.types.ThemeImageEditor +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeImageEditor.vertex_bevel` + +bpy.types.ThemeView3D +--------------------- + +Added +^^^^^ + +* :class:`bpy.types.ThemeView3D.edge_bevel` +* :class:`bpy.types.ThemeView3D.vertex_bevel` + +bpy.types.ToolSettings +---------------------- + +Added +^^^^^ + +* :class:`bpy.types.ToolSettings.gpencil_interpolate` + +bpy.types.UIList +---------------- + +Added +^^^^^ + +* :class:`bpy.types.UIList.is_extended` + +bpy.types.CLIP_UL_tracking_objects +---------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.CLIP_UL_tracking_objects.is_extended` + +bpy.types.FILEBROWSER_UL_dir +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.FILEBROWSER_UL_dir.is_extended` + +bpy.types.GPENCIL_UL_brush +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPENCIL_UL_brush.is_extended` + +bpy.types.GPENCIL_UL_layer +-------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPENCIL_UL_layer.is_extended` + +bpy.types.GPENCIL_UL_palettecolor +--------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.GPENCIL_UL_palettecolor.is_extended` + +bpy.types.MASK_UL_layers +------------------------ + +Added +^^^^^ + +* :class:`bpy.types.MASK_UL_layers.is_extended` + +bpy.types.MATERIAL_UL_matslots +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.MATERIAL_UL_matslots.is_extended` + +bpy.types.MESH_UL_shape_keys +---------------------------- + +Added +^^^^^ + +* :class:`bpy.types.MESH_UL_shape_keys.is_extended` + +bpy.types.MESH_UL_uvmaps_vcols +------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.MESH_UL_uvmaps_vcols.is_extended` + +bpy.types.MESH_UL_vgroups +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.MESH_UL_vgroups.is_extended` + +bpy.types.NODE_UL_interface_sockets +----------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.NODE_UL_interface_sockets.is_extended` + +bpy.types.PARTICLE_UL_particle_systems +-------------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.PARTICLE_UL_particle_systems.is_extended` + +bpy.types.PHYSICS_UL_dynapaint_surfaces +--------------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.PHYSICS_UL_dynapaint_surfaces.is_extended` + +bpy.types.RENDERLAYER_UL_linesets +--------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.RENDERLAYER_UL_linesets.is_extended` + +bpy.types.RENDERLAYER_UL_renderlayers +------------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.RENDERLAYER_UL_renderlayers.is_extended` + +bpy.types.RENDERLAYER_UL_renderviews +------------------------------------ + +Added +^^^^^ + +* :class:`bpy.types.RENDERLAYER_UL_renderviews.is_extended` + +bpy.types.SCENE_UL_keying_set_paths +----------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.SCENE_UL_keying_set_paths.is_extended` + +bpy.types.TEXTURE_UL_texpaintslots +---------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.TEXTURE_UL_texpaintslots.is_extended` + +bpy.types.TEXTURE_UL_texslots +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.TEXTURE_UL_texslots.is_extended` + +bpy.types.UI_UL_list +-------------------- + +Added +^^^^^ + +* :class:`bpy.types.UI_UL_list.is_extended` + +bpy.types.UserPreferences +------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferences.app_template` + +bpy.types.UserPreferencesSystem +------------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesSystem.use_select_pick_depth` + +Removed +^^^^^^^ + +* **use_textured_fonts** +* **virtual_pixel_mode** + +bpy.types.UserPreferencesView +----------------------------- + +Added +^^^^^ + +* :class:`bpy.types.UserPreferencesView.ui_line_width` +* :class:`bpy.types.UserPreferencesView.ui_scale` +* :class:`bpy.types.UserPreferencesView.use_cursor_lock_adjust` diff --git a/doc/python_api/rst/gpu.rst b/doc/python_api/rst/gpu.rst index 6c38122a573..cf639357a31 100644 --- a/doc/python_api/rst/gpu.rst +++ b/doc/python_api/rst/gpu.rst @@ -6,6 +6,13 @@ GPU functions (gpu) This module provides access to materials GLSL shaders. +Submodules: + +.. toctree:: + :maxdepth: 1 + + gpu.offscreen.rst + Intro ===== @@ -24,7 +31,6 @@ and in the game engine. Constants ========= - GLSL Data Type -------------- diff --git a/doc/python_api/rst/include__bmesh.rst b/doc/python_api/rst/include__bmesh.rst index 83e3e73cea4..bed374bf7b6 100644 --- a/doc/python_api/rst/include__bmesh.rst +++ b/doc/python_api/rst/include__bmesh.rst @@ -7,14 +7,17 @@ Submodules: -* :mod:`bmesh.ops` -* :mod:`bmesh.types` -* :mod:`bmesh.utils` -* :mod:`bmesh.geometry` +.. toctree:: + :maxdepth: 1 + bmesh.ops.rst + bmesh.types.rst + bmesh.utils.rst + bmesh.geometry.rst -Intro ------ + +Introduction +------------ This API gives access the blenders internal mesh editing api, featuring geometry connectivity data and access to editing operations such as split, separate, collapse and dissolve. diff --git a/doc/python_api/rst/info_api_reference.rst b/doc/python_api/rst/info_api_reference.rst index 43469fc0cb7..5ef5866c44a 100644 --- a/doc/python_api/rst/info_api_reference.rst +++ b/doc/python_api/rst/info_api_reference.rst @@ -204,7 +204,7 @@ Lets say we want to access the texture of a brush via Python, to adjust its ``co - Start in the default scene and enable 'Sculpt' mode from the 3D-View header. - From the toolbar expand the **Texture** panel and add a new texture. - *Notice the texture button its self doesn't have very useful links (you can check the tool-tips).* + *Notice the texture button its self doesn't have very useful links (you can check the tooltips).* - The contrast setting isn't exposed in the sculpt toolbar, so view the texture in the properties panel... - In the properties button select the Texture context. diff --git a/doc/python_api/rst/info_overview.rst b/doc/python_api/rst/info_overview.rst index b4ae906277d..721374cd472 100644 --- a/doc/python_api/rst/info_overview.rst +++ b/doc/python_api/rst/info_overview.rst @@ -5,23 +5,25 @@ Python API Overview ******************* -This document is to give an understanding of how Python and Blender fit together, -covering some of the functionality that isn't obvious from reading the API reference and example scripts. +The purpose of this document is to explain how Python and Blender fit together, +covering some of the functionality that may not be obvious from reading the API +references and example scripts. Python in Blender ================= -Blender embeds a Python interpreter which is started with Blender and stays active. -This interpreter runs scripts to draw the user interface and is used for some of Blender's internal tools too. +Blender has an embedded Python interpreter which is loaded when Blender is started and stays +active while Blender is running. This interpreter runs scripts to draw the user interface +and is used for some of Blender’s internal tools as well. -This is a typical Python environment so tutorials on how to write Python scripts -will work running the scripts in Blender too. -Blender provides the :mod:`bpy` module to the Python interpreter. -This module can be imported in a script and gives access to Blender data, classes, and functions. -Scripts that deal with Blender data will need to import this module. +Blender's embedded interpreter provides a typical Python environment, so code from tutorials +on how to write Python scripts can also be run with Blender’s interpreter. Blender provides its +Python modules, such as :mod:`bpy` and :mod:`mathutils`, to the embedded interpreter so they can +be imported into a script and give access to Blender's data, classes, and functions. Scripts that +deal with Blender data will need to import the modules to work. -Here is a simple example of moving a vertex of the object named **Cube**: +Here is a simple example which moves a vertex attached to an object named **Cube**: .. code-block:: python @@ -49,15 +51,17 @@ See the :ref:`directory layout docs <blender_manual:getting-started_installing-c Script Loading ============== -This may seem obvious but it's important to note the difference -between executing a script directly or importing it as a module. +This may seem obvious, but it is important to note the difference between +executing a script directly and importing a script as a module. -Scripts that extend Blender - define classes that exist beyond the scripts execution, -this makes future access to these classes (to unregister for example) -more difficult than importing as a module where class instance is kept -in the module and can be accessed by importing that module later on. +Extending Blender by executing a script directly means the classes that the script +defines remain available inside Blender after the script finishes execution. +Using scripts this way makes future access to their classes +(to unregister them for example) more difficult compared to importing the scripts as modules. +When a script is imported as a module, its class instances will remain +inside the module and can be accessed later on by importing that module again. -For this reason it's preferable to only use directly execute scripts that don't extend Blender by registering classes. +For this reason it is preferable to avoid directly executing scripts that extend Blender by registering classes. Here are some ways to run scripts directly in Blender. @@ -80,7 +84,7 @@ To run as modules: Add-ons ------- +------- Some of Blenders functionality is best kept optional, alongside scripts loaded at startup we have add-ons which are kept in their own directory ``scripts/addons``, @@ -213,7 +217,7 @@ A simple Blender/Python module can look like this: bpy.utils.register_class(SimpleOperator) def unregister(): - bpy.utils.unregister_class(SimpleOperator) + bpy.utils.unregister_class(SimpleOperator) if __name__ == "__main__": register() @@ -327,7 +331,7 @@ Say you want to store material settings for a custom engine. .. note:: *The class must be registered before being used in a property, failing to do so will raise an error:* - + ``ValueError: bpy_struct "Material" registration error: my_custom_props could not register`` @@ -396,8 +400,8 @@ This works just as well for PropertyGroup subclasses you define yourself. Dynamic Defined-Classes (Advanced) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -In some cases the specifier for data may not be in Blender, -renderman shader definitions for example and it may be useful to define types and remove them on the fly. +In some cases the specifier for data may not be in Blender, renderman shader definitions +for example, and it may be useful to define them as types and remove them on the fly. .. code-block:: python @@ -420,7 +424,7 @@ renderman shader definitions for example and it may be useful to define types an This is an alternative syntax for class creation in Python, better suited to constructing classes dynamically. -Calling these operators: +To call the operators from the previous example: >>> bpy.ops.object.operator_1() Hello World OBJECT_OT_operator_1 @@ -429,4 +433,3 @@ Calling these operators: >>> bpy.ops.object.operator_2() Hello World OBJECT_OT_operator_2 {'FINISHED'} - diff --git a/doc/python_api/rst/info_tutorial_addon.rst b/doc/python_api/rst/info_tutorial_addon.rst deleted file mode 100644 index 92fbf9b8787..00000000000 --- a/doc/python_api/rst/info_tutorial_addon.rst +++ /dev/null @@ -1,635 +0,0 @@ - -Add-on Tutorial -############### - -************ -Introduction -************ - - -Intended Audience -================= - -This tutorial is designed to help technical artists or developers learn to extend Blender. -An understanding of the basics of Python is expected for those working through this tutorial. - - -Prerequisites -------------- - -Before going through the tutorial you should... - -- Familiarity with the basics of working in Blender. -- Know how to run a script in Blender's text editor (as documented in the quick-start) -- Have an understanding of Python primitive types (int, boolean, string, list, tuple, dictionary, and set). -- Be familiar with the concept of Python modules. -- Basic understanding of classes (object orientation) in Python. - - -Suggested reading before starting this tutorial. - -- `Dive Into Python <http://getpython3.com/diveintopython3/index.html>`_ sections (1, 2, 3, 4, and 7). -- :ref:`Blender API Quickstart <info_quickstart>` - to help become familiar with Blender/Python basics. - - -To best troubleshoot any error message Python prints while writing scripts you run blender with from a terminal, -see :ref:`Use The Terminal <use_the_terminal>`. - - -Documentation Links -=================== - -While going through the tutorial you may want to look into our reference documentation. - -- :ref:`Blender API Overview <info_overview>`. - - *This document is rather detailed but helpful if you want to know more on a topic.* -- :mod:`bpy.context` api reference. - - *Handy to have a list of available items your script may operate on.* -- :class:`bpy.types.Operator`. - - *The following add-ons define operators, these docs give details and more examples of operators.* - - -******* -Add-ons -******* - -What is an Add-on? -================== - -An add-on is simply a Python module with some additional requirements so Blender can display it in a list with useful -information. - -To give an example, here is the simplest possible add-on. - -.. code-block:: python - - bl_info = {"name": "My Test Add-on", "category": "Object"} - def register(): - print("Hello World") - def unregister(): - print("Goodbye World") - - -- ``bl_info`` is a dictionary containing add-on metadata such as the title, - version and author to be displayed in the user preferences add-on list. -- ``register`` is a function which only runs when enabling the add-on, - this means the module can be loaded without activating the add-on. -- ``unregister`` is a function to unload anything setup by ``register``, this is called when the add-on is disabled. - - -Notice this add-on does not do anything related to Blender, (the :mod:`bpy` module is not imported for example). - -This is a contrived example of an add-on that serves to illustrate the point -that the base requirements of an add-on are simple. - -An add-on will typically register operators, panels, menu items etc, but its worth noting that _any_ script can do this, -when executed from the text editor or even the interactive console - there is nothing inherently different about an -add-on that allows it to integrate with Blender, such functionality is just provided by the :mod:`bpy` module for any -script to access. - -So an add-on is just a way to encapsulate a Python module in a way a user can easily utilize. - -.. note:: - - Running this script within the text editor won't print anything, - to see the output it must be installed through the user preferences. - Messages will be printed when enabling and disabling. - - -Your First Add-on -================= - -The simplest possible add-on above is useful as an example but not much else. -This next add-on is simple but shows how to integrate a script into Blender using an ``Operator`` -which is the typical way to define a tool accessed from menus, buttons and keyboard shortcuts. - -For the first example we will make a script that simply moves all objects in a scene. - - -Write The Script ----------------- - -Add the following script to the text editor in Blender. - -.. code-block:: python - - import bpy - - scene = bpy.context.scene - for obj in scene.objects: - obj.location.x += 1.0 - - -Click the :ref:`Run Script button <blender_manual:editors-text-run-script>`, -all objects in the active scene are moved by 1.0 Blender unit. - - -Write the Add-on (Simple) -------------------------- - -This add-on takes the body of the script above, and adds them to an operator's ``execute()`` function. - - -.. code-block:: python - - bl_info = { - "name": "Move X Axis", - "category": "Object", - } - - import bpy - - - class ObjectMoveX(bpy.types.Operator): - """My Object Moving Script""" # blender will use this as a tooltip for menu items and buttons. - bl_idname = "object.move_x" # unique identifier for buttons and menu items to reference. - bl_label = "Move X by One" # display name in the interface. - bl_options = {'REGISTER', 'UNDO'} # enable undo for the operator. - - def execute(self, context): # execute() is called by blender when running the operator. - - # The original script - scene = context.scene - for obj in scene.objects: - obj.location.x += 1.0 - - return {'FINISHED'} # this lets blender know the operator finished successfully. - - def register(): - bpy.utils.register_class(ObjectMoveX) - - - def unregister(): - bpy.utils.unregister_class(ObjectMoveX) - - - # This allows you to run the script directly from blenders text editor - # to test the add-on without having to install it. - if __name__ == "__main__": - register() - - -.. note:: - - ``bl_info`` is split across multiple lines, this is just a style convention used to more easily add items. - -.. note:: - - Rather than using ``bpy.context.scene``, we use the ``context.scene`` argument passed to ``execute()``. - In most cases these will be the same however in some cases operators will be passed a custom context - so script authors should prefer the ``context`` argument passed to operators. - -To test the script you can copy and paste this into Blender text editor and run it, this will execute the script -directly and call register immediately. - -However running the script wont move any objects, for this you need to execute the newly registered operator. - -.. image:: spacebar.png - :width: 924px - :align: center - :height: 574px - :alt: Spacebar - -Do this by pressing :kbd:`Spacebar` to bring up the operator search dialog and type in -"Move X by One" (the ``bl_label``), then :kbd:`Enter`. - - - -The objects should move as before. - -*Keep this add-on open in Blender for the next step - Installing.* - - -Install The Add-on ------------------- - -Once you have your add-on within in Blender's text editor, -you will want to be able to install it so it can be enabled in the user preferences to load on startup. - -Even though the add-on above is a test, lets go through the steps anyway so you know how to do it for later. - -To install the Blender text as an add-on you will first have to save it to disk, take care to obey the naming -restrictions that apply to Python modules and end with a ``.py`` extension. - -Once the file is on disk, you can install it as you would for an add-on downloaded online. - -Open the user :menuselection:`File --> User Preferences`, -Select the *Add-on* section, press *Install Add-on...* and select the file. - -Now the add-on will be listed and you can enable it by pressing the check-box, -if you want it to be enabled on restart, press *Save as Default*. - -.. note:: - - The destination of the add-on depends on your Blender configuration. - When installing an add-on the source and destination path are printed in the console. - You can also find add-on path locations by running this in the Python console. - - .. code-block:: python - - import addon_utils - print(addon_utils.paths()) - - More is written on this topic here: - :ref:`Directory Layout <blender_manual:getting-started_installing-config-directories>`. - - -Your Second Add-on -================== - -For our second add-on, we will focus on object instancing - this is - to make linked copies of an object in a -similar way to what you may have seen with the array modifier. - - -Write The Script ----------------- - -As before, first we will start with a script, develop it, then convert into an add-on. - -.. code-block:: python - - import bpy - from bpy import context - - # Get the current scene - scene = context.scene - - # Get the 3D cursor - cursor = scene.cursor_location - - # Get the active object (assume we have one) - obj = scene.objects.active - - # Now make a copy of the object - obj_new = obj.copy() - - # The object won't automatically get into a new scene - scene.objects.link(obj_new) - - # Now we can place the object - obj_new.location = cursor - - -Now try copy this script into Blender and run it on the default cube. -Make sure you click to move the 3D cursor before running as the duplicate will appear at the cursor's location. - - -... go off and test ... - - -After running, notice that when you go into edit-mode to change the cube - all of the copies change, -in Blender this is known as *Linked-Duplicates*. - - -Next, we're going to do this in a loop, to make an array of objects between the active object and the cursor. - - -.. code-block:: python - - import bpy - from bpy import context - - scene = context.scene - cursor = scene.cursor_location - obj = scene.objects.active - - # Use a fixed value for now, eventually make this user adjustable - total = 10 - - # Add 'total' objects into the scene - for i in range(total): - obj_new = obj.copy() - scene.objects.link(obj_new) - - # Now place the object in between the cursor - # and the active object based on 'i' - factor = i / total - obj_new.location = (obj.location * factor) + (cursor * (1.0 - factor)) - - -Try run this script with with the active object and the cursor spaced apart to see the result. - -With this script you'll notice we're doing some math with the object location and cursor, this works because both are -3D :class:`mathutils.Vector` instances, a convenient class provided by the :mod:`mathutils` module and -allows vectors to be multiplied by numbers and matrices. - -If you are interested in this area, read into :class:`mathutils.Vector` - there are many handy utility functions -such as getting the angle between vectors, cross product, dot products -as well as more advanced functions in :mod:`mathutils.geometry` such as Bézier Spline interpolation and -ray-triangle intersection. - -For now we will focus on making this script an add-on, but its good to know that this 3D math module is available and -can help you with more advanced functionality later on. - - -Write the Add-on ----------------- - -The first step is to convert the script as-is into an add-on. - - -.. code-block:: python - - bl_info = { - "name": "Cursor Array", - "category": "Object", - } - - import bpy - - - class ObjectCursorArray(bpy.types.Operator): - """Object Cursor Array""" - bl_idname = "object.cursor_array" - bl_label = "Cursor Array" - bl_options = {'REGISTER', 'UNDO'} - - def execute(self, context): - scene = context.scene - cursor = scene.cursor_location - obj = scene.objects.active - - total = 10 - - for i in range(total): - obj_new = obj.copy() - scene.objects.link(obj_new) - - factor = i / total - obj_new.location = (obj.location * factor) + (cursor * (1.0 - factor)) - - return {'FINISHED'} - - def register(): - bpy.utils.register_class(ObjectCursorArray) - - - def unregister(): - bpy.utils.unregister_class(ObjectCursorArray) - - - if __name__ == "__main__": - register() - - -Everything here has been covered in the previous steps, you may want to try run the add-on still -and consider what could be done to make it more useful. - - -... go off and test ... - - -The two of the most obvious missing things are - having the total fixed at 10, and having to access the operator from -space-bar is not very convenient. - -Both these additions are explained next, with the final script afterwards. - - -Operator Property -^^^^^^^^^^^^^^^^^ - -There are a variety of property types that are used for tool settings, common property types include: -int, float, vector, color, boolean and string. - -These properties are handled differently to typical Python class attributes -because Blender needs to be display them in the interface, -store their settings in key-maps and keep settings for re-use. - -While this is handled in a fairly Pythonic way, be mindful that you are in fact defining tool settings that -are loaded into Blender and accessed by other parts of Blender, outside of Python. - - -To get rid of the literal 10 for `total`, we'll us an operator property. -Operator properties are defined via bpy.props module, this is added to the class body. - -.. code-block:: python - - # moved assignment from execute() to the body of the class... - total = bpy.props.IntProperty(name="Steps", default=2, min=1, max=100) - - # and this is accessed on the class - # instance within the execute() function as... - self.total - - -These properties from :mod:`bpy.props` are handled specially by Blender when the class is registered -so they display as buttons in the user interface. -There are many arguments you can pass to properties to set limits, change the default and display a tooltip. - -.. seealso:: :mod:`bpy.props.IntProperty` - -This document doesn't go into details about using other property types, -however the link above includes examples of more advanced property usage. - - -Menu Item -^^^^^^^^^ - -Add-ons can add to the user interface of existing panels, headers and menus defined in Python. - -For this example we'll add to an existing menu. - -.. image:: menu_id.png - :width: 334px - :align: center - :height: 128px - :alt: Menu Identifier - -To find the identifier of a menu you can hover your mouse over the menu item and the identifier is displayed. - -The method used for adding a menu item is to append a draw function into an existing class. - - -.. code-block:: python - - def menu_func(self, context): - self.layout.operator(ObjectCursorArray.bl_idname) - - def register(): - bpy.types.VIEW3D_MT_object.append(menu_func) - - -For docs on extending menus see: :doc:`bpy.types.Menu`. - - -Keymap -^^^^^^ - -In Blender, add-ons have their own keymaps so as not to interfere with Blenders built in key-maps. - -In the example below, a new object-mode :class:`bpy.types.KeyMap` is added, -then a :class:`bpy.types.KeyMapItem` is added to the key-map which references our newly added operator, -using :kbd:`Ctrl-Shift-Space` as the key shortcut to activate it. - - -.. code-block:: python - - # store keymaps here to access after registration - addon_keymaps = [] - - def register(): - - # handle the keymap - wm = bpy.context.window_manager - km = wm.keyconfigs.addon.keymaps.new(name='Object Mode', space_type='EMPTY') - - kmi = km.keymap_items.new(ObjectCursorArray.bl_idname, 'SPACE', 'PRESS', ctrl=True, shift=True) - kmi.properties.total = 4 - - addon_keymaps.append((km, kmi)) - - - def unregister(): - - # handle the keymap - for km, kmi in addon_keymaps: - km.keymap_items.remove(kmi) - addon_keymaps.clear() - - -Notice how the key-map item can have a different ``total`` setting then the default set by the operator, -this allows you to have multiple keys accessing the same operator with different settings. - - -.. note:: - - While :kbd:`Ctrl-Shift-Space` isn't a default Blender key shortcut, its hard to make sure add-ons won't - overwrite each others keymaps, At least take care when assigning keys that they don't - conflict with important functionality within Blender. - -For API documentation on the functions listed above, see: -:class:`bpy.types.KeyMaps.new`, -:class:`bpy.types.KeyMap`, -:class:`bpy.types.KeyMapItems.new`, -:class:`bpy.types.KeyMapItem`. - - -Bringing it all together -^^^^^^^^^^^^^^^^^^^^^^^^ - -.. code-block:: python - - bl_info = { - "name": "Cursor Array", - "category": "Object", - } - - import bpy - - - class ObjectCursorArray(bpy.types.Operator): - """Object Cursor Array""" - bl_idname = "object.cursor_array" - bl_label = "Cursor Array" - bl_options = {'REGISTER', 'UNDO'} - - total = bpy.props.IntProperty(name="Steps", default=2, min=1, max=100) - - def execute(self, context): - scene = context.scene - cursor = scene.cursor_location - obj = scene.objects.active - - for i in range(self.total): - obj_new = obj.copy() - scene.objects.link(obj_new) - - factor = i / self.total - obj_new.location = (obj.location * factor) + (cursor * (1.0 - factor)) - - return {'FINISHED'} - - - def menu_func(self, context): - self.layout.operator(ObjectCursorArray.bl_idname) - - # store keymaps here to access after registration - addon_keymaps = [] - - - def register(): - bpy.utils.register_class(ObjectCursorArray) - bpy.types.VIEW3D_MT_object.append(menu_func) - - # handle the keymap - wm = bpy.context.window_manager - # Note that in background mode (no GUI available), keyconfigs are not available either, so we have to check this - # to avoid nasty errors in background case. - kc = wm.keyconfigs.addon - if kc: - km = wm.keyconfigs.addon.keymaps.new(name='Object Mode', space_type='EMPTY') - kmi = km.keymap_items.new(ObjectCursorArray.bl_idname, 'SPACE', 'PRESS', ctrl=True, shift=True) - kmi.properties.total = 4 - addon_keymaps.append((km, kmi)) - - def unregister(): - # Note: when unregistering, it's usually good practice to do it in reverse order you registered. - # Can avoid strange issues like keymap still referring to operators already unregistered... - # handle the keymap - for km, kmi in addon_keymaps: - km.keymap_items.remove(kmi) - addon_keymaps.clear() - - bpy.utils.unregister_class(ObjectCursorArray) - bpy.types.VIEW3D_MT_object.remove(menu_func) - - - if __name__ == "__main__": - register() - -.. image:: in_menu.png - :width: 591px - :align: center - :height: 649px - :alt: In the menu - -Run the script (or save it and add it through the Preferences like before) and it will appear in the menu. - -.. image:: op_prop.png - :width: 669px - :align: center - :height: 644px - :alt: Operator Property - -After selecting it from the menu, you can choose how many instance of the cube you want created. - - -.. note:: - - Directly executing the script multiple times will add the menu each time too. - While not useful behavior, theres nothing to worry about since add-ons won't register them selves multiple - times when enabled through the user preferences. - - -Conclusions -=========== - -Add-ons can encapsulate certain functionality neatly for writing tools to improve your work-flow or for writing utilities -for others to use. - -While there are limits to what Python can do within Blender, there is certainly a lot that can be achieved without -having to dive into Blender's C/C++ code. - -The example given in the tutorial is limited, but shows the Blender API used for common tasks that you can expand on -to write your own tools. - - -Further Reading ---------------- - -Blender comes commented templates which are accessible from the text editor header, if you have specific areas -you want to see example code for, this is a good place to start. - - -Here are some sites you might like to check on after completing this tutorial. - -- :ref:`Blender/Python API Overview <info_overview>` - - *For more background details on Blender/Python integration.* -- `How to Think Like a Computer Scientist <http://interactivepython.org/courselib/static/thinkcspy/index.html>`_ - - *Great info for those who are still learning Python.* -- `Blender Development (Wiki) <https://wiki.blender.org/index.php/Dev:Contents>`_ - - *Blender Development, general information and helpful links.* -- `Blender Artists (Coding Section) <https://blenderartists.org/forum/forumdisplay.php?47-Coding>`_ - - *forum where people ask Python development questions* - diff --git a/doc/python_api/rst_from_bmesh_opdefines.py b/doc/python_api/rst_from_bmesh_opdefines.py index cdbed88cc88..d3e4b2a0cfd 100644 --- a/doc/python_api/rst_from_bmesh_opdefines.py +++ b/doc/python_api/rst_from_bmesh_opdefines.py @@ -22,7 +22,7 @@ # 'bmesh_opdefines.c' in order to avoid having to add a lot of introspection # data access into the api. # -# The script is stupid becase it makes assumptions about formatting... +# The script is stupid because it makes assumptions about formatting... # that each arg has its own line, that comments above or directly after will be __doc__ etc... # # We may want to replace this script with something else one day but for now its good enough. diff --git a/doc/python_api/sphinx_doc_gen.py b/doc/python_api/sphinx_doc_gen.py index 432cceece1c..08c3e729ed9 100644 --- a/doc/python_api/sphinx_doc_gen.py +++ b/doc/python_api/sphinx_doc_gen.py @@ -341,6 +341,8 @@ EXTRA_SOURCE_FILES = ( "../examples/bge.texture.py", "../examples/bmesh.ops.1.py", "../examples/bpy.app.translations.py", + "../static/favicon.ico", + "../static/blender_logo.svg", ) @@ -362,8 +364,6 @@ INFO_DOCS = ( "Blender/Python Quickstart: new to Blender/scripting and want to get your feet wet?"), ("info_overview.rst", "Blender/Python API Overview: a more complete explanation of Python integration"), - ("info_tutorial_addon.rst", - "Blender/Python Add-on Tutorial: a step by step guide on how to write an add-on from scratch"), ("info_api_reference.rst", "Blender/Python API Reference Usage: examples of how to use the API reference docs"), ("info_best_practice.rst", @@ -427,9 +427,9 @@ if BLENDER_REVISION != "Unknown": BLENDER_VERSION_DOTS += " " + BLENDER_REVISION # '2.62.1 SHA1' BLENDER_VERSION_PATH = "_".join(blender_version_strings) # '2_62_1' -if bpy.app.version_cycle == "release": - BLENDER_VERSION_PATH = "%s%s_release" % ("_".join(blender_version_strings[:2]), - bpy.app.version_char) # '2_62_release' +if bpy.app.version_cycle in {"rc", "release"}: + # '2_62a_release' + BLENDER_VERSION_PATH = "%s%s_release" % ("_".join(blender_version_strings[:2]), bpy.app.version_char) # --------------------------DOWNLOADABLE FILES---------------------------------- @@ -1010,9 +1010,9 @@ def pymodule2sphinx(basepath, module_name, module, title): context_type_map = { "active_base": ("ObjectBase", False), "active_bone": ("EditBone", False), + "active_gpencil_brush": ("GPencilSculptBrush", False), "active_gpencil_frame": ("GreasePencilLayer", True), "active_gpencil_layer": ("GPencilLayer", True), - "active_gpencil_brush": ("GPencilSculptBrush", False), "active_gpencil_palette": ("GPencilPalette", True), "active_gpencil_palettecolor": ("GPencilPaletteColor", True), "active_node": ("Node", False), @@ -1063,6 +1063,7 @@ context_type_map = { "selected_bones": ("EditBone", True), "selected_editable_bases": ("ObjectBase", True), "selected_editable_bones": ("EditBone", True), + "selected_editable_fcurves": ("FCurce", True), "selected_editable_objects": ("Object", True), "selected_editable_sequences": ("Sequence", True), "selected_nodes": ("Node", True), @@ -1565,9 +1566,9 @@ def pyrna2sphinx(basepath): # operators def write_ops(): - API_BASEURL = "https://developer.blender.org/diffusion/B/browse/master/release/scripts/ " - API_BASEURL_ADDON = "https://developer.blender.org/diffusion/BA/" - API_BASEURL_ADDON_CONTRIB = "https://developer.blender.org/diffusion/BAC/" + API_BASEURL = "https://developer.blender.org/diffusion/B/browse/master/release/scripts " + API_BASEURL_ADDON = "https://developer.blender.org/diffusion/BA" + API_BASEURL_ADDON_CONTRIB = "https://developer.blender.org/diffusion/BAC" op_modules = {} for op in ops.values(): @@ -1613,10 +1614,8 @@ def pyrna2sphinx(basepath): else: url_base = API_BASEURL - fw(" :file: `%s <%s/%s>`_:%d\n\n" % (location[0], - url_base, - location[0], - location[1])) + fw(" :file: `%s\\:%d <%s/%s$%d>`_\n\n" % + (location[0], location[1], url_base, location[0], location[1])) file.close() @@ -1632,35 +1631,58 @@ def write_sphinx_conf_py(basepath): file = open(filepath, "w", encoding="utf-8") fw = file.write - fw("import sys, os\n") - fw("\n") - fw("extensions = ['sphinx.ext.intersphinx']\n") - fw("\n") - fw("intersphinx_mapping = {'blender_manual': ('https://www.blender.org/manual/', None)}\n") - fw("\n") - + fw("import sys, os\n\n") + fw("extensions = ['sphinx.ext.intersphinx']\n\n") + fw("intersphinx_mapping = {'blender_manual': ('https://docs.blender.org/manual/en/dev/', None)}\n\n") fw("project = 'Blender'\n") # fw("master_doc = 'index'\n") fw("copyright = u'Blender Foundation'\n") fw("version = '%s - API'\n" % BLENDER_VERSION_DOTS) fw("release = '%s - API'\n" % BLENDER_VERSION_DOTS) + # Quiet file not in table-of-contents warnings. + fw("exclude_patterns = [\n") + fw(" 'include__bmesh.rst',\n") + fw("]\n\n") + if ARGS.sphinx_theme != 'default': fw("html_theme = '%s'\n" % ARGS.sphinx_theme) if ARGS.sphinx_theme == "blender-org": fw("html_theme_path = ['../']\n") - # copied with the theme, exclude else we get an error [T28873] - fw("html_favicon = 'favicon.ico'\n") # in <theme>/static/ # not helpful since the source is generated, adds to upload size. fw("html_copy_source = False\n") + fw("html_show_sphinx = False\n") fw("html_split_index = True\n") - fw("\n") + fw("html_extra_path = ['__/static/favicon.ico', '__/static/blender_logo.svg']\n") + fw("html_favicon = '__/static/favicon.ico'\n") + fw("html_logo = '__/static/blender_logo.svg'\n\n") # needed for latex, pdf gen + fw("latex_elements = {\n") + fw(" 'papersize': 'a4paper',\n") + fw("}\n\n") + fw("latex_documents = [ ('contents', 'contents.tex', 'Blender Index', 'Blender Foundation', 'manual'), ]\n") - fw("latex_paper_size = 'a4paper'\n") + + # Workaround for useless links leading to compile errors + # See https://github.com/sphinx-doc/sphinx/issues/3866 + fw(r""" +from sphinx.domains.python import PythonDomain + +class PatchedPythonDomain(PythonDomain): + def resolve_xref(self, env, fromdocname, builder, typ, target, node, contnode): + if 'refspecific' in node: + del node['refspecific'] + return super(PatchedPythonDomain, self).resolve_xref( + env, fromdocname, builder, typ, target, node, contnode) + +def setup(sphinx): + sphinx.override_domain(PatchedPythonDomain) +""") + # end workaround + file.close() @@ -1715,8 +1737,6 @@ def write_rst_contents(basepath): "bpy.utils.previews", "bpy.path", "bpy.app", - "bpy.app.handlers", - "bpy.app.translations", # C modules "bpy.props", @@ -1731,19 +1751,9 @@ def write_rst_contents(basepath): fw(" :maxdepth: 1\n\n") standalone_modules = ( - # mathutils - "mathutils", - "mathutils.geometry", - "mathutils.bvhtree", "mathutils.kdtree", - "mathutils.interpolate", - "mathutils.noise", - # misc - "freestyle", "bgl", "blf", - "gpu", "gpu.offscreen", - "aud", "bpy_extras", - "idprop.types", - # bmesh, submodules are in own page - "bmesh", + # submodules are added in parent page + "mathutils", "freestyle", "bgl", "blf", "gpu", + "aud", "bpy_extras", "idprop.types", "bmesh", ) for mod in standalone_modules: diff --git a/doc/python_api/sphinx_doc_update.py b/doc/python_api/sphinx_doc_update.py index c7f0367a2a0..561e58dec66 100755 --- a/doc/python_api/sphinx_doc_update.py +++ b/doc/python_api/sphinx_doc_update.py @@ -41,9 +41,9 @@ import tempfile import zipfile -DEFAULT_RSYNC_SERVER = "www.blender.org" +DEFAULT_RSYNC_SERVER = "docs.blender.org" DEFAULT_RSYNC_ROOT = "/api/" -DEFAULT_SYMLINK_ROOT = "/data/www/vhosts/www.blender.org/api" +DEFAULT_SYMLINK_ROOT = "/data/www/vhosts/docs.blender.org/api" def argparse_create(): @@ -96,6 +96,11 @@ def main(): rsync_base = "rsync://%s@%s:%s" % (args.user, args.rsync_server, args.rsync_root) + blenver = blenver_zip = "" + api_name = "" + branch = "" + is_release = False + # I) Update local mirror using rsync. rsync_mirror_cmd = ("rsync", "--delete-after", "-avzz", rsync_base, args.mirror_dir) subprocess.run(rsync_mirror_cmd, env=dict(os.environ, RSYNC_PASSWORD=args.password)) @@ -108,19 +113,24 @@ def main(): subprocess.run(doc_gen_cmd) # III) Get Blender version info. - blenver = blenver_zip = "" getver_file = os.path.join(tmp_dir, "blendver.txt") getver_script = ("" "import sys, bpy\n" "with open(sys.argv[-1], 'w') as f:\n" - " f.write('%d_%d%s_release\\n' % (bpy.app.version[0], bpy.app.version[1], bpy.app.version_char)\n" - " if bpy.app.version_cycle in {'rc', 'release'} else '%d_%d_%d\\n' % bpy.app.version)\n" - " f.write('%d_%d_%d' % bpy.app.version)\n") + " is_release = bpy.app.version_cycle in {'rc', 'release'}\n" + " branch = bpy.app.build_branch.split()[0].decode()\n" + " f.write('%d\\n' % is_release)\n" + " f.write('%s\\n' % branch)\n" + " f.write('%d.%d%s\\n' % (bpy.app.version[0], bpy.app.version[1], bpy.app.version_char)\n" + " if is_release else '%s\\n' % branch)\n" + " f.write('%d_%d%s_release' % (bpy.app.version[0], bpy.app.version[1], bpy.app.version_char)\n" + " if is_release else '%d_%d_%d' % bpy.app.version)\n") get_ver_cmd = (args.blender, "--background", "-noaudio", "--factory-startup", "--python-exit-code", "1", "--python-expr", getver_script, "--", getver_file) subprocess.run(get_ver_cmd) with open(getver_file) as f: - blenver, blenver_zip = f.read().split("\n") + is_release, branch, blenver, blenver_zip = f.read().split("\n") + is_release = bool(int(is_release)) os.remove(getver_file) # IV) Build doc. @@ -132,7 +142,7 @@ def main(): os.chdir(curr_dir) # V) Cleanup existing matching dir in server mirror (if any), and copy new doc. - api_name = "blender_python_api_%s" % blenver + api_name = blenver api_dir = os.path.join(args.mirror_dir, api_name) if os.path.exists(api_dir): shutil.rmtree(api_dir) @@ -150,19 +160,15 @@ def main(): os.rename(zip_path, os.path.join(api_dir, "%s.zip" % zip_name)) # VII) Create symlinks and html redirects. - #~ os.symlink(os.path.join(DEFAULT_SYMLINK_ROOT, api_name, "contents.html"), os.path.join(api_dir, "index.html")) os.symlink("./contents.html", os.path.join(api_dir, "index.html")) - if blenver.endswith("release"): - symlink = os.path.join(args.mirror_dir, "blender_python_api_current") + if is_release: + symlink = os.path.join(args.mirror_dir, "current") os.remove(symlink) os.symlink("./%s" % api_name, symlink) with open(os.path.join(args.mirror_dir, "250PythonDoc/index.html"), 'w') as f: f.write("<html><head><title>Redirecting...</title><meta http-equiv=\"REFRESH\"" "content=\"0;url=../%s/\"></head><body>Redirecting...</body></html>" % api_name) - else: - symlink = os.path.join(args.mirror_dir, "blender_python_api_master") - os.remove(symlink) - os.symlink("./%s" % api_name, symlink) + elif branch == "master": with open(os.path.join(args.mirror_dir, "blender_python_api/index.html"), 'w') as f: f.write("<html><head><title>Redirecting...</title><meta http-equiv=\"REFRESH\"" "content=\"0;url=../%s/\"></head><body>Redirecting...</body></html>" % api_name) diff --git a/doc/python_api/static/blender_logo.svg b/doc/python_api/static/blender_logo.svg new file mode 100644 index 00000000000..bbf446c9bec --- /dev/null +++ b/doc/python_api/static/blender_logo.svg @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + id="svg8" + version="1.1" + viewBox="0 0 55.032989 15.935012" + height="60.226818" + width="207.9987"> + <defs + id="defs2"> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath3020"> + <path + style="stroke-width:1.06666672" + d="M 0,0 H 211.2 V 61.866667 H 0 Z" + id="path3022" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath3020-8"> + <path + style="stroke-width:1.06666672" + d="M 0,0 H 211.2 V 61.866667 H 0 Z" + id="path3022-1" /> + </clipPath> + </defs> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:creator> + <cc:Agent> + <dc:title>Blender Logo</dc:title> + </cc:Agent> + </dc:creator> + <dc:source>https://www.blender.org/about/logo/</dc:source> + <cc:license + rdf:resource="(c) Blender Foundation" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + transform="translate(42.023693,-77.734934)" + id="layer1"> + <g + transform="matrix(0.26259939,0,0,-0.26259939,-42.237694,93.888967)" + id="g3012" + style="stroke-width:7.2904439"> + <g + id="g3014" + style="stroke-width:7.2904439" /> + <g + id="g3016" + style="stroke-width:7.2904439"> + <g + clip-path="url(#clipPath3020-8)" + id="g3018" + style="stroke-width:7.2904439"> + <path + id="path3024" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352" + d="m 192.54827,44.510933 c 0,0 -125.158403,0 -128.688003,0 -0.07893,0.06187 -0.1504,0.1344 -0.2272,0.193067 -0.01813,0.0192 -18.9312,14.548267 -19.5008,14.986667 -0.032,0.0256 -0.06507,0.04907 -0.06507,0.04907 -3.029333,2.321067 -7.531733,2.369067 -10.721067,0.133334 -1.9968,-1.396267 -3.194666,-3.508267 -3.285333,-5.792 -0.0021,-0.09173 -0.0064,-0.1824 -0.0064,-0.2752 0,-1.185067 0.314667,-2.3296 0.8832,-3.357867 -5.857067,-0.0053 -11.746133,-0.0128 -11.746133,-0.0128 -4.3936,-0.0021 -8.3648,-2.965333 -9.2725337,-6.8928 C 9.7898667,42.9792 9.7248,42.411733 9.7248,41.8496 c 0,-1.643733 0.546133,-3.236267 1.5808,-4.542933 1.162667,-1.463467 2.842667,-2.448 4.7584,-2.832 C 10.530133,30.2272 5.0016,25.984 4.9973333,25.979733 4.9578667,25.949867 4.9248,25.924267 4.8970667,25.905067 c -2.2176,-1.703467 -3.68,-4.1728 -4.0106667,-6.770134 -0.0490667,-0.381866 -0.0714667,-0.7584 -0.0714667,-1.133866 0,-1.870934 0.5962667,-3.650134 1.7301334,-5.102934 1.3781333,-1.764266 3.4144,-2.884266 5.7322666,-3.147733 2.6549337,-0.3072 5.4495997,0.542933 7.6607997,2.330667 0.01493,0.01173 2.753067,2.256 5.639467,4.6176 1.060267,-2.555734 2.545067,-4.926934 4.465067,-7.0453337 2.4704,-2.7306666 5.473066,-4.8864 8.919466,-6.4128 C 38.5856,1.6352 42.466133,0.82453333 46.501333,0.83413333 50.5376,0.8416 54.417067,1.6629333 58.0352,3.2768 c 3.453867,1.5466667 6.449067,3.7109333 8.910933,6.4352 0.360534,0.4032 0.693334,0.8288 1.0272,1.2544 4.885334,0 124.574937,0 124.574937,0 9.84,0 17.8368,7.5232 17.8368,16.7712 0,9.248 -7.9968,16.773333 -17.8368,16.773333" /> + <path + id="path3026" + style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352" + d="m 38.538667,28.497067 c 0.113066,2.016 1.101866,3.793066 2.590933,5.0528 1.4624,1.237333 3.428267,1.9936 5.575467,1.9936 2.144,0 4.110933,-0.756267 5.572266,-1.9936 1.490134,-1.259734 2.4768,-3.0368 2.590934,-5.050667 0.113066,-2.0736 -0.718934,-3.997867 -2.181334,-5.425067 C 51.1968,21.6224 49.0784,20.7104 46.705067,20.7104 c -2.3744,0 -4.497067,0.912 -5.9872,2.363733 -1.461334,1.4272 -2.292267,3.351467 -2.1792,5.422934" /> + <path + id="path3028" + style="fill:#f5792a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352" + d="m 25.536,24.421333 c 0.01387,-0.7904 0.2656,-2.3232 0.6432,-3.521066 C 26.9728,18.3648 28.318933,16.0192 30.193067,13.950933 32.1152,11.8272 34.482133,10.119467 37.216,8.9088 c 2.872533,-1.2736 5.986133,-1.9210667 9.220267,-1.9157333 3.229866,0.00427 6.3424,0.6656 9.216,1.9477333 2.733866,1.2224 5.098666,2.9376 7.018666,5.063467 1.870934,2.074666 3.216,4.424533 4.010667,6.96 0.401067,1.282133 0.6528,2.581333 0.754133,3.886933 0.100267,1.285333 0.0576,2.571733 -0.1248,3.858133 -0.356266,2.507734 -1.223466,4.858667 -2.557866,7.002667 -1.2224,1.970133 -2.7968,3.696 -4.6688,5.147733 l 0.0053,0.0021 -18.8928,14.506666 c -0.016,0.0128 -0.02987,0.02667 -0.048,0.03733 -1.240533,0.952533 -3.3248,0.948266 -4.686933,-0.0053 -1.3792,-0.9632 -1.536,-2.557866 -0.3104,-3.5648 l -0.0043,-0.0043 7.8784,-6.407467 -24.016,-0.02667 c -0.01173,0 -0.0224,0 -0.032,0 -1.985067,-0.0011 -3.893333,-1.303466 -4.269867,-2.9504 -0.389333,-1.6768 0.958934,-3.067733 3.022934,-3.074133 l -0.0021,-0.0075 L 30.900267,39.3888 9.1786667,22.715733 c -0.026667,-0.02133 -0.0576,-0.0416 -0.0832,-0.06293 -2.0490667,-1.568 -2.7104,-4.178133 -1.4197334,-5.828267 1.3088,-1.68 4.0949337,-1.6832 6.1653337,-0.0096 L 25.696,26.516267 c 0,0 -0.173867,-1.3088 -0.16,-2.094934 z M 56,20.034133 c -2.443733,-2.488533 -5.8624,-3.899733 -9.563733,-3.9072 -3.7056,-0.0064 -7.124267,1.393067 -9.568,3.877334 -1.1936,1.210666 -2.0704,2.602666 -2.6112,4.087466 -0.529067,1.457067 -0.736,3.0048 -0.599467,4.5664 0.130133,1.527467 0.583467,2.9824 1.309867,4.3008 0.712533,1.293867 1.6928,2.465067 2.9056,3.454934 2.373333,1.934933 5.396266,2.981333 8.558933,2.9856 3.1648,0.0053 6.1856,-1.0336 8.561067,-2.961067 1.2096,-0.9856 2.190933,-2.151467 2.903466,-3.445333 0.728534,-1.316267 1.179734,-2.765867 1.314134,-4.2976 C 59.344,27.136 59.138133,25.5904 58.609067,24.1312 58.0672,22.6432 57.1936,21.2512 56,20.034133" /> + <path + id="path3030" + style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352" + d="m 167.96587,28.529067 c 0.1824,2.0352 1.75466,3.325866 4.15786,3.325866 2.4064,0 3.97974,-1.290666 4.16214,-3.325866 z M 176.0384,23.504 c -0.61547,-1.508267 -2.06507,-2.401067 -4.03627,-2.401067 -2.46613,0 -4.12693,1.540267 -4.1952,3.9744 h 14.18347 c 0,0.251734 0,0.462934 0,0.715734 0,6.094933 -3.57653,9.518933 -9.98827,9.518933 -6.22506,0 -9.98826,-3.457067 -9.98826,-8.878933 0,-5.454934 3.82293,-8.9056 9.98826,-8.9056 3.70134,0 6.5696,1.2672 8.33814,3.4976 L 176.0384,23.504" /> + <path + id="path3032" + style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352" + d="m 105.0336,28.519467 c 0.18667,2.036266 1.76,3.326933 4.16533,3.326933 2.40214,0 3.97547,-1.290667 4.15894,-3.326933 z m 8.07787,-5.025067 c -0.61547,-1.512533 -2.06614,-2.404267 -4.03947,-2.404267 -2.464,0 -4.12907,1.544534 -4.19413,3.9776 h 14.18026 c 0,0.2496 0,0.4608 0,0.712534 0,6.098133 -3.57546,9.524266 -9.98613,9.524266 -6.22933,0 -9.986133,-3.458133 -9.986133,-8.88 0,-5.456 3.821863,-8.906666 9.986133,-8.906666 3.6992,0 6.5696,1.262933 8.34133,3.495466 l -4.30186,2.481067" /> + <path + id="path3034" + style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352" + d="m 92.701867,38.997333 h 5.114666 v -20.9248 h -5.114666 z" /> + <path + id="path3036" + style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352" + d="m 120.33067,33.438933 h 5.14453 v -1.245866 c 1.8208,1.9424 4.00747,2.9248 6.47253,2.9248 2.84054,0 4.992,-0.9824 6.1024,-2.653867 0.92587,-1.381333 0.98774,-3.0496 0.98774,-5.239467 v -9.152 h -5.15094 v 8.040534 c 0,3.336533 -0.67093,4.877866 -3.6,4.877866 -2.96106,0 -4.81173,-1.764266 -4.81173,-4.724266 v -8.194134 h -5.14453 v 15.3664" /> + <path + id="path3038" + style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352" + d="m 155.60107,26.173867 c 0,-2.864 -1.9136,-4.741334 -4.8736,-4.741334 -2.96427,0 -4.87787,1.813334 -4.87787,4.709334 0,2.9376 1.88907,4.750933 4.87787,4.750933 2.96,0 4.8736,-1.8464 4.8736,-4.718933 z m 0,6.568533 c -1.30027,1.393067 -3.1808,2.157867 -5.79734,2.157867 -5.64266,0 -9.49546,-3.479467 -9.49546,-8.6944 0,-5.112534 3.82613,-8.688 9.40266,-8.688 2.5568,0 4.4352,0.645333 5.89014,2.096 v -1.541334 h 5.14666 v 22.2528 l -5.14666,-1.328 V 32.7424" /> + <path + id="path3040" + style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352" + d="m 81.010133,30.8928 c 2.990934,0 4.871467,-1.813333 4.871467,-4.750933 0,-2.896 -1.9104,-4.709334 -4.871467,-4.709334 -2.958933,0 -4.869333,1.877334 -4.869333,4.741334 0,2.872533 1.9104,4.718933 4.869333,4.718933 z m -4.869333,8.104533 -5.1488,1.328 v -22.2528 h 5.1488 v 1.541334 c 1.448533,-1.450667 3.329067,-2.096 5.886933,-2.096 5.579734,0 9.4016,3.575466 9.4016,8.688 0,5.214933 -3.853866,8.6944 -9.493333,8.6944 -2.621867,0 -4.5024,-0.7648 -5.7952,-2.157867 v 6.254933" /> + <path + id="path3042" + style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352" + d="m 183.2608,18.072533 v 15.3664 h 5.14667 v -0.9504 c 1.54026,1.857067 3.1712,2.7808 5.0272,2.7808 0.368,0 0.82986,-0.05973 1.44533,-0.1216 V 30.768 c -0.496,0.064 -1.04747,0.064 -1.6352,0.064 -2.992,0 -4.83733,-1.972267 -4.83733,-5.329067 v -7.4304 h -5.14667" /> + <path + id="path3044" + style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352" + d="m 201.55307,35.252267 h -0.39467 l 0.0139,1.409066 0.0203,0.466134 -0.1056,-0.384 -0.46826,-1.4912 h -0.36054 l -0.45866,1.4912 -0.1152,0.376533 0.0277,-0.458667 0.0139,-1.409066 h -0.38614 v 2.282666 h 0.54187 l 0.57067,-1.8016 0.5568,1.8016 h 0.544 z m -3.12747,0 h -0.39787 V 37.1968 h -0.7328 v 0.338133 h 1.85067 V 37.1968 h -0.72 v -1.944533" /> + </g> + </g> + </g> + </g> +</svg> diff --git a/doc/python_api/blender-org/static/favicon.ico b/doc/python_api/static/favicon.ico Binary files differindex f125d24dcb6..f125d24dcb6 100644 --- a/doc/python_api/blender-org/static/favicon.ico +++ b/doc/python_api/static/favicon.ico |