diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-12-15 14:23:33 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-12-31 18:40:22 +0300 |
commit | c81e6ffdf942a7e8ac58ef3a48ca1bcab78f01fd (patch) | |
tree | 29356854ccb93701edd3c6eaad62ea0b1206b9c8 /intern/cycles/blender/addon/version_update.py | |
parent | 70fa2f69c9609c811522b6e0675ba7d8a2a74c08 (diff) |
Fix T46915: Non-intuitive behavior of Vector Curve Mapping node
Vector mapping node was doing some weird mapping of both original and mapped
coordinates. Mapping of original coordinates was caused by the clamping nature
of the LUT generated from the node. Mapping of the mapped value again was quite
totally obscure -- one needed to constantly keep in mind that actual value will
be scaled up and moved down.
This commit makes it so values in the vector curve mapping are always absolute.
In fact, it is now behaving quite the same as RGB curve mapping node and the
code could be de-duplicated. Keeping the code duplicated for a bit so it's more
clear what exact parts of the node changed.
Reviewers: brecht
Subscribers: bassamk
Differential Revision: https://developer.blender.org/D1672
Diffstat (limited to 'intern/cycles/blender/addon/version_update.py')
-rw-r--r-- | intern/cycles/blender/addon/version_update.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/intern/cycles/blender/addon/version_update.py b/intern/cycles/blender/addon/version_update.py index 2fbb01ba5b8..eb6d5d957ad 100644 --- a/intern/cycles/blender/addon/version_update.py +++ b/intern/cycles/blender/addon/version_update.py @@ -100,6 +100,19 @@ def mapping_node_order_flip(node): node.rotation = quat.to_euler('XYZ') +def vector_curve_node_remap(node): + """ + Remap values of vector curve node from normalized to absolute values + """ + from mathutils import Vector + if node.bl_idname == 'ShaderNodeVectorCurve': + node.mapping.use_clip = False + for curve in node.mapping.curves: + for point in curve.points: + point.location.x = (point.location.x * 2.0) - 1.0 + point.location.y = (point.location.y - 0.5) * 2.0 + node.mapping.update() + @persistent def do_versions(self): # We don't modify startup file because it assumes to @@ -140,3 +153,6 @@ def do_versions(self): # Euler order was ZYX in previous versions. if bpy.data.version <= (2, 73, 4): foreach_cycles_node(mapping_node_order_flip) + + if bpy.data.version <= (2, 76, 5): + foreach_cycles_node(vector_curve_node_remap) |