﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Doc%3A2.6%2FManual%2FAnimation%2FBasics%2FDrivers</id>
	<title>Doc:2.6/Manual/Animation/Basics/Drivers - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Doc%3A2.6%2FManual%2FAnimation%2FBasics%2FDrivers"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Doc:2.6/Manual/Animation/Basics/Drivers&amp;action=history"/>
	<updated>2026-04-24T11:59:32Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Doc:2.6/Manual/Animation/Basics/Drivers&amp;diff=145385&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Doc:2.6/Manual/Animation/Basics/Drivers&amp;diff=145385&amp;oldid=prev"/>
		<updated>2018-06-28T21:06:11Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2018年6月28日 (木) 21:06時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Yamyam</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Doc:2.6/Manual/Animation/Basics/Drivers&amp;diff=145384&amp;oldid=prev</id>
		<title>wiki&gt;Mutantbob: intra-armature bone drivers</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Doc:2.6/Manual/Animation/Basics/Drivers&amp;diff=145384&amp;oldid=prev"/>
		<updated>2014-05-22T15:05:53Z</updated>

		<summary type="html">&lt;p&gt;intra-armature bone drivers&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Drivers =&lt;br /&gt;
&lt;br /&gt;
== Drivers ==&lt;br /&gt;
&lt;br /&gt;
[[File:Doc_Animation_Driver_FCurve.PNG|frame|Graph Editor: Driver example.]]&lt;br /&gt;
&lt;br /&gt;
Drivers can use properties, numbers, transformations, and scripts, to control the values of properties.&lt;br /&gt;
&lt;br /&gt;
Using a F-Curve, the driver reads the value of the Driver Value and sets the value of the selected property it was added to.&lt;br /&gt;
&lt;br /&gt;
So from this example, if the Driver Value is 2.0 the property will be 0.5.&lt;br /&gt;
&lt;br /&gt;
The Driver Value is determined by Driver Variables or a Scripted Expression.&lt;br /&gt;
&lt;br /&gt;
Most the settings for the drivers [[Doc:2.6/Manual/Animation/Editors/Graph/FCurves|F-Curves]] are found in the [[Doc:2.6/Manual/Animation/Editors/Graph|Graph Editor]].&lt;br /&gt;
&lt;br /&gt;
{{clr}}&lt;br /&gt;
&lt;br /&gt;
== Drivers Panel ==&lt;br /&gt;
&lt;br /&gt;
[[File:Doc_Animation_Panel_Drivers.PNG|frame|Graph Editor: Drivers: Drivers Panel.]]&lt;br /&gt;
&lt;br /&gt;
; This panel is located in the [[Doc:2.6/Manual/Animation/Editors/Graph|Graph Editor]] with the mode set to Drivers.&lt;br /&gt;
&lt;br /&gt;
; The drivers panel is for setting up ''Driver Variables'' or a ''Scripted Expression'' which will determine the value of the ''Driver Value''.&lt;br /&gt;
&lt;br /&gt;
==== Driver Settings ====&lt;br /&gt;
&lt;br /&gt;
;{{Literal|Update Dependencies}}: This will force an update for the Driver Value dependencies.&lt;br /&gt;
&lt;br /&gt;
;{{Literal|Remove Driver}}: Removes the driver from the object.&lt;br /&gt;
&lt;br /&gt;
;{{Literal|Type}}: The type of calculation to use on the set of Driver Variables.  (If you only have one driver variable there is no real difference between average, sum, minimum and maximum)&lt;br /&gt;
&lt;br /&gt;
:;{{Literal|Average Value}}: Uses the the average value of the referenced Driver Variables.&lt;br /&gt;
&lt;br /&gt;
:;{{Literal|Sum Values}}: Uses the the sum of the referenced Driver Variables.&lt;br /&gt;
&lt;br /&gt;
:;{{Literal|Scripted Expression}}: Uses a Scripted Expression. See Expr.&lt;br /&gt;
::;You must write a python expression which performs your own calculations on the Driver Variables.&lt;br /&gt;
&lt;br /&gt;
:;{{Literal|Minimum Value}}: Uses the lowest value from the referenced Driver Variables.&lt;br /&gt;
&lt;br /&gt;
:;{{Literal|Maximum Value}}: Uses the highest value from the referenced Driver Variables.&lt;br /&gt;
&lt;br /&gt;
;{{Literal|Expr}}: Scripted Expression.&lt;br /&gt;
:Here you can add real numbers, math operators, math functions, python properties, driver functions.&lt;br /&gt;
:See Driver Expression below for some examples.&lt;br /&gt;
&lt;br /&gt;
;{{Literal|Show Debug Info}}: Shows the Driver Value.&lt;br /&gt;
:;The current value of the variables or scripted expression.&lt;br /&gt;
&lt;br /&gt;
;{{Literal|Add Variable}}: Adds a new Driver Variable.&lt;br /&gt;
&lt;br /&gt;
[[File:Doc_Animation_Driver_Single_Property.PNG|frame|Setup of a Single Property.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Doc_Animation_Driver_Transform_Channel2.PNG|frame|Transform Channel setup.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Doc_Animation_Driver_Distance.PNG|frame|Distance setup.]]&lt;br /&gt;
&lt;br /&gt;
==== Driver Variables ====&lt;br /&gt;
&lt;br /&gt;
;{{Literal|Name}}: Name to use for scripted expressions/functions.&lt;br /&gt;
:; No spaces or dots are allowed and must start with a letter.&lt;br /&gt;
&lt;br /&gt;
;{{Literal|Variable Type}}: The type of variable to use.&lt;br /&gt;
&lt;br /&gt;
:;{{Literal|Single Property}}: Use the value from some RNA property.&lt;br /&gt;
::;For example, the Ambient shading color from a material.&lt;br /&gt;
::;First select the type of ID-block, then the ID of the ID-block, then copy and paste an RNA property (Ctrl+V).&lt;br /&gt;
&lt;br /&gt;
::;{{Literal|ID-Type}}: The ID-Block type, example, Key, Image, Object, Material.&lt;br /&gt;
&lt;br /&gt;
::;{{Literal|ID}}: The ID of the ID-Block type, example, Material.001.&lt;br /&gt;
&lt;br /&gt;
::;{{Literal|RNA Path}}: The RNA id name of the property, example, 'ambient' from material shading.&lt;br /&gt;
&lt;br /&gt;
:;{{Literal|Transform Channel}}: Use one of the Transform channels from an object or bone.&lt;br /&gt;
&lt;br /&gt;
::;{{Literal|ID}}: ID of the object, example, Cube, Armature, Camera.&lt;br /&gt;
&lt;br /&gt;
::;{{Literal|Bone}}: ID of the Armature bone, example, Bone, Bone.002, Arma.r.&lt;br /&gt;
:::; This option is for armatures.&lt;br /&gt;
&lt;br /&gt;
::;{{Literal|Type}}: Example, X Location, X Rotation, X Scale.&lt;br /&gt;
&lt;br /&gt;
::;{{Literal|Space}}: World Space, Transform Space, Local Space.&lt;br /&gt;
&lt;br /&gt;
:;{{Literal|Rotational Difference}}: Use the rotational difference between two objects or bones.&lt;br /&gt;
&lt;br /&gt;
:;{{Literal|Distance}}: Use the distance between two objects or bones.&lt;br /&gt;
&lt;br /&gt;
;{{Literal|Value}}: Shows the value of the variable.&lt;br /&gt;
&lt;br /&gt;
{{clr}}&lt;br /&gt;
&lt;br /&gt;
== Workflow ==&lt;br /&gt;
&lt;br /&gt;
==== Adding Drivers ====&lt;br /&gt;
&lt;br /&gt;
; To control a property with a driver, find the property you want to add driver to.&lt;br /&gt;
&lt;br /&gt;
; {{Shortcut/Mouse|rmb}} the property and select one of the following options.&lt;br /&gt;
&lt;br /&gt;
; {{Literal|Add Drivers}}&lt;br /&gt;
: This will add drivers to the set of properties related to the selected one.&lt;br /&gt;
: For example, it will add drivers to X, Y, and Z for Rotation.&lt;br /&gt;
&lt;br /&gt;
; {{Literal|Add Single Driver}}&lt;br /&gt;
: This will add a single driver to the selected property.&lt;br /&gt;
&lt;br /&gt;
[[File:Doc_Add_Driver2.PNG|center|frame|Add Single Driver.]]&lt;br /&gt;
&lt;br /&gt;
==== Transform Driver ====&lt;br /&gt;
&lt;br /&gt;
; This example shows you how rotate a cube mesh by moving another cube left or right in the 3D view.&lt;br /&gt;
; First make sure you are in the ''Front Orthographic View'' {{Shortcut|Num1}}, {{Shortcut|Num5}}.&lt;br /&gt;
&lt;br /&gt;
# In ''Object Mode'' select then ''Duplicate'' {{Shortcut|Shift|D}} the default Cube.&lt;br /&gt;
#: Move the cube to a new location. You should have two mesh objects, ''Cube'' and ''Cube.001''.&lt;br /&gt;
# With ''Cube.001'' selected as the active object, ''Add Single Driver'' to the ''Rotation Y'' property.&lt;br /&gt;
# Open the ''Graph Editor'', set the mode to ''Drivers''.&lt;br /&gt;
#: ''Show Only Selected'' is useful disabled for drivers, marked in green.&lt;br /&gt;
# Open the Properties Region {{Shortcut|N}}, go to the ''Drivers Panel''.&lt;br /&gt;
#: You may need to select the driver ''Y Euler Rotation'' {{Shortcut|LMB}} for the ''Drivers Panel'' to appear.&lt;br /&gt;
# Set the driver ''Type'' to ''Sum Values''.&lt;br /&gt;
# Set the driver variable ''var'' settings.&lt;br /&gt;
#: Set ''Type'' to ''Transform Channel''.&lt;br /&gt;
#: Set ''Ob/Bone ID-block'' to ''Cube''.&lt;br /&gt;
#: Set ''Transform Type'' to ''X Location''.&lt;br /&gt;
#: Set ''Transform Space'' to ''World Space''.&lt;br /&gt;
&lt;br /&gt;
[[File:Doc_Drivers_TD_Workflow.PNG|frame|center|Transform Driver workflow.]]&lt;br /&gt;
&lt;br /&gt;
; Now when you move the ''Cube'' left or right in the 3D View, ''Cube.001'' should rotate.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
Some Driver Examples.&lt;br /&gt;
&lt;br /&gt;
==== Driver Expression ====&lt;br /&gt;
&lt;br /&gt;
Here are some examples using the scripted expression Expr to set the Driver Value.&lt;br /&gt;
&lt;br /&gt;
[[File:Doc_Animation_Driver_Object_Rotation.PNG|frame|Object Rotation.]]&lt;br /&gt;
&lt;br /&gt;
===== Orbit a point =====&lt;br /&gt;
&lt;br /&gt;
Here two drivers have been added to the Cube, X Location and Y Location.&lt;br /&gt;
&lt;br /&gt;
The scripted expressions are being used to set the object location.&lt;br /&gt;
&lt;br /&gt;
;{{Literal|X Location Expr}}: '''0+(sin(frame/8)*4)'''&lt;br /&gt;
:: '''(frame/8)''': is the current frame of the animation, divided by 8 to slow the orbit down.&lt;br /&gt;
:: '''(sin( )*4)''': This returns the sine of (frame/8), then multiplies by 4 for a bigger circle.&lt;br /&gt;
:: '''0+''': is used to control the X Location offset of the orbit.&lt;br /&gt;
;{{Literal|Y Location Expr}}: '''0+(cos(frame/8)*4)'''&lt;br /&gt;
:: '''(frame/8)''': is the current frame of the animation, divided by 8 to slow the orbit down.&lt;br /&gt;
:: '''(cos( )*4)''': This returns the cosine of (frame/8), then multiplies by 4 for a bigger circle.&lt;br /&gt;
:: '''0+''': is used to control the Y Location offset of the orbit.&lt;br /&gt;
&lt;br /&gt;
'''frame''' is the same as bpy.context.scene.frame_current.&lt;br /&gt;
&lt;br /&gt;
===== Driver Namespace =====&lt;br /&gt;
&lt;br /&gt;
;There is a list of built in driver functions and properties.&lt;br /&gt;
;These can be displayed via the python console.&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&amp;gt;&amp;gt;&amp;gt; bpy.app.driver_namespace['&lt;br /&gt;
                              __builtins__']&lt;br /&gt;
                              __doc__']&lt;br /&gt;
                              __loader__']&lt;br /&gt;
                              __name__']&lt;br /&gt;
                              __package__']&lt;br /&gt;
                              acos']&lt;br /&gt;
                              acosh']&lt;br /&gt;
                              asin']&lt;br /&gt;
                              asinh']&lt;br /&gt;
                              atan']&lt;br /&gt;
                              atan2']&lt;br /&gt;
                              atanh']&lt;br /&gt;
                              bpy']&lt;br /&gt;
                              ceil']&lt;br /&gt;
                              copysign']&lt;br /&gt;
                              cos']&lt;br /&gt;
                              cosh']&lt;br /&gt;
                              ..&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;This script will add a function to the driver namespace, which can then be used in the expression '''driverFunc(frame)'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;import bpy&lt;br /&gt;
&lt;br /&gt;
def driverFunc(val):&lt;br /&gt;
&lt;br /&gt;
    return val * val    # return val squared&lt;br /&gt;
&lt;br /&gt;
bpy.app.driver_namespace['driverFunc'] = driverFunc    # add function to driver_namespace&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Shape Key Driver ====&lt;br /&gt;
&lt;br /&gt;
;This example is a Shape Key Driver. The driver was added to the shape key Value.&lt;br /&gt;
&lt;br /&gt;
[[File:Doc_Animation_Driver_Shape_Key.PNG|400px|center|Shape Key Driver. Click to enlarge.]]&lt;br /&gt;
&lt;br /&gt;
;This example uses the Armature Bone 'b' Z Rotation to control the Value of a Shape Key.&lt;br /&gt;
;The bone rotation mode is set to XYZ Euler.&lt;br /&gt;
&lt;br /&gt;
;The Driver F-Curve is mapped like so&lt;br /&gt;
:Bone Z Rotation 0.0(0.0): Shape Key value 0.0&lt;br /&gt;
:Bone Z Rotation -2.09(-120.0): Shape Key value 1.0&lt;br /&gt;
&lt;br /&gt;
;This kind of driver can also be setup with the Variable Type Rotational Difference.&lt;br /&gt;
&lt;br /&gt;
;See [[Doc:2.6/Manual/Animation/Basics/Shape_Keys|Shape Keys]] for more info.&lt;br /&gt;
&lt;br /&gt;
{{clr}}&lt;br /&gt;
&lt;br /&gt;
==Drivers And Multiple Relative Shape Keys==&lt;br /&gt;
&lt;br /&gt;
The following screenshots illustrate combining shape keys, bones, and&lt;br /&gt;
drivers to make multiple chained relative shape keys sharing a single&lt;br /&gt;
root.  While it lacks the convenience of the single Evaluation Time of&lt;br /&gt;
an absolute shape key, it allows you to have more complex&lt;br /&gt;
relationships between your shape keys.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Drivers and Multiple Shape Keys&amp;quot; widths=&amp;quot;120px&amp;quot; heights=&amp;quot;100px&amp;quot; perrow=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Image:Driver_For_Multiple_Shape_Keys_Key1.PNG|Key1 must handle conflicting values from the two bones&lt;br /&gt;
File:Driver_For_Multiple_Shape_Keys_Key2A.PNG|Key2A has different generator coefficients so it is activated in a different range of the bone's position.&lt;br /&gt;
File:Driver_For_Multiple_Shape_Keys_Key2B.PNG|Key2B is the same as Key2A, but is controlled by the second bone.&lt;br /&gt;
File:Driver_For_Multiple_Shape_Keys_Retracted.PNG||when both bones are low, Key2B and Key2A are deactivated and Key1 is at low influence.&lt;br /&gt;
File:Driver_For_Multiple_Shape_Keys_Extended.PNG&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
The Basis shape key has the stacks fully retracted.  Key1 has the base&lt;br /&gt;
fully extended.  Key2A has the left stack fully extended.  Key2B has&lt;br /&gt;
the right stack fully extended.  Key2A and Key2B are both relative to&lt;br /&gt;
Key1 (as you can see in the field in the bottom right of the Shape Keys&lt;br /&gt;
panel.&lt;br /&gt;
&lt;br /&gt;
The value of Key1 is bound to the position of bones by a driver with&lt;br /&gt;
two variables.  Each variable uses the world Z coordinate of a bone&lt;br /&gt;
and uses the maximum value to determine how much the base should be&lt;br /&gt;
extended.  The generator polynomial is crafted such that the top of&lt;br /&gt;
the dominant stack should line up with the bone for that stack.&lt;br /&gt;
&lt;br /&gt;
The value of Key2A is bound to the position of bone.L .  Its generator&lt;br /&gt;
parameters are crafted such that when Key1's value reaches 1, the&lt;br /&gt;
value of Key2A starts increasing beyond zero.  In this way the top of&lt;br /&gt;
the left stack will move with bone.L (mostly).&lt;br /&gt;
&lt;br /&gt;
The value of Key2B is bound to the position of bone.R .  Its generator&lt;br /&gt;
parameters are similar to Key2A so that the top of the right stack&lt;br /&gt;
will move with bone.R (mostly).&lt;br /&gt;
&lt;br /&gt;
Since it's quite easy for bone.L and bone.R to be in positions that&lt;br /&gt;
indicate conflicting values for Key1 there will be times when the&lt;br /&gt;
bones do not line up with the tops of their respective stacks.  If the&lt;br /&gt;
driver for Key1 were to use Average or Minimum instead of Maximum to&lt;br /&gt;
determine the value of the shape key then &amp;quot;conflicts&amp;quot; between bone.L&lt;br /&gt;
and bone.R would be resolved differently.  You will chose according to&lt;br /&gt;
the needs of your animation.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Some common problems people may run in to when using drivers.&lt;br /&gt;
&lt;br /&gt;
==== Scripted Expression ====&lt;br /&gt;
&lt;br /&gt;
[[File:Doc_Drivers_Auto_Run_B.PNG|frame|frame|Graph Editor &amp;gt; Properties &amp;gt; Drivers.]]&lt;br /&gt;
[[File:Doc_Drivers_Auto_Run_A.PNG|center|frame|Info Header.]]&lt;br /&gt;
&lt;br /&gt;
; By default blender will not auto run python scripts.&lt;br /&gt;
&lt;br /&gt;
; If using a ''Scripted Expression'' Driver Type, you will have to open the file as ''Trusted Source'', or set ''Auto Run Python Scripts'' in ''User Preferences &amp;gt; File &amp;gt; Auto Execution''.&lt;br /&gt;
&lt;br /&gt;
[[File:Doc_Drivers_Auto_Run_C.PNG|frame|File Browser.]]&lt;br /&gt;
[[File:Doc_Drivers_Auto_Run_D.PNG|center|frame|User Preference &amp;gt; File &amp;gt; Auto Execution.]]&lt;br /&gt;
&lt;br /&gt;
{{clr}}&lt;br /&gt;
&lt;br /&gt;
==== Rotational Properties are Radians ====&lt;br /&gt;
&lt;br /&gt;
Parts of the User Interface may use different units of measurements for angles, rotation.&lt;br /&gt;
In the Graph Editor while working with Drivers, all angles are Radians.&lt;br /&gt;
&lt;br /&gt;
==== Intra-armature Bone Drivers Can Misbehave ====&lt;br /&gt;
&lt;br /&gt;
There is a [https://developer.blender.org/T40301 well known limitation] with drivers on bones that refer to another bone in the same armature.  Their values can be incorrectly calculated based on the position of the other bone as it was ''before'' you adjust the current_frame.  This can lead to obvious shape glitches when the rendering of frames has  a jump in the frame number (either because the .blend file is currently on a different frame number or because you're skipping already-rendered frames).&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
*[[Doc:2.6/Manual#Animation|Animation]]&lt;br /&gt;
*[[Doc:2.6/Manual/Animation/Editors/Graph|Graph Editor]]&lt;br /&gt;
*[[Doc:2.6/Manual/Animation/Editors/Graph/FCurves|F-Curves]]&lt;br /&gt;
*[[Doc:2.6/Manual/Extensions/Python|Extending Blender with python]].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
*[http://www.python.org Python] and its [http://www.python.org/doc documentation].&lt;br /&gt;
*[http://functions.wolfram.com/ functions.wolfram.com]&lt;/div&gt;</summary>
		<author><name>wiki&gt;Mutantbob</name></author>
		
	</entry>
</feed>