[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31472] trunk/blender: rna data path names which are more likely to break animations.

Campbell Barton ideasman42 at gmail.com
Sat Aug 21 18:47:04 CEST 2010


When I started this project I mentioned I'd do a script to convert
animation paths (at least once at the Sunday meeting when discussing
it), but re-reading my mails I didn't add this to the original
proposal to the list, an oversight on my part.

Since we didn't do a stable release yet I think that strictly, we
don't have an obligation to provide a do-versions, however as blender
2.5 gets developed we will probably do refactors or smaller rewrites
which modify RNA so we will probably end up needing RNA animation path
updating sooner or later.

This isn't as simple as you might think, in a number of cases we have
the same variable name, renamed into different things depending on the
sub-type.

Real example of object data paths:
  modifier["BuildModifier"].length -> frame_duration
  modifier["ArrayModifier"].length -> fit_length

So to correctly convert these names we need to first resolve the path
and find the modifier type, then convert the name based on that.

For really correct operation we also need to look into each types
parent classes since the property renaming may happen in a parent
class too.

The python-script does this but takes advantage of a few python
features so it didn't end up being so hard to write but doing the same
thing in C is not trivial.

I could start to work on this on Monday, expect it will take between
1-3 days to complete, its tricky to say, and depends how smart we want
it to be, but If I do this would rather do it properly so future
changes can use these functions too.
To be clear, I would write a function for renaming rna paths for
fcurves and drivers, the lookup array of names would be stored
elsewhere.


some other things to consider...
- actions not attached to the ID or NLA directly wont be updated.
  ...as far as I know there is no way to associate an action with an
ID any other way.

- this may not break many existing animations - see the changes 672
out of over 4611 total rna properties in blender.
http://pastie.org/1106214

- could do a quick'n stupid find/replace which only deals with simple
string data this probably make up a majority of the changes but wont
correct all cases.


On Fri, Aug 20, 2010 at 9:22 PM, Martin Poirier <theeth at yahoo.com> wrote:
> Why isn't the fix taken care of by the versioning code?
>
> Martin
>
> --- On Fri, 8/20/10, Campbell Barton <ideasman42 at gmail.com> wrote:
>
>> From: Campbell Barton <ideasman42 at gmail.com>
>> Subject: [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31472] trunk/blender: rna data path names which are more likely to break animations.
>> To: bf-blender-cvs at blender.org
>> Received: Friday, August 20, 2010, 2:10 AM
>> Revision: 31472
>>           http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31472
>> Author:   campbellbarton
>> Date:     2010-08-20 08:09:58 +0200
>> (Fri, 20 Aug 2010)
>>
>> Log Message:
>> -----------
>> rna data path names which are more likely to break
>> animations.
>> Added an operator "Update Animation Data",
>> access from the search menu to update drivers and fcurves.
>>
>> Modified Paths:
>> --------------
>>
>> trunk/blender/release/scripts/io/export_fbx.py
>>
>> trunk/blender/release/scripts/io/export_obj.py
>>
>> trunk/blender/release/scripts/io/export_x3d.py
>>
>> trunk/blender/release/scripts/io/import_scene_obj.py
>>
>> trunk/blender/release/scripts/io/netrender/client.py
>>
>> trunk/blender/release/scripts/io/netrender/repath.py
>>
>> trunk/blender/release/scripts/io/netrender/slave.py
>>
>> trunk/blender/release/scripts/io/netrender/ui.py
>>
>> trunk/blender/release/scripts/modules/animsys_refactor.py
>>
>> trunk/blender/release/scripts/modules/bpy/__init__.py
>>
>> trunk/blender/release/scripts/modules/rigify/__init__.py
>>
>> trunk/blender/release/scripts/modules/rigify/arm_biped.py
>>
>> trunk/blender/release/scripts/modules/rigify/eye_balls.py
>>
>> trunk/blender/release/scripts/modules/rigify/eye_lid.py
>>
>> trunk/blender/release/scripts/modules/rigify/leg_biped.py
>>
>> trunk/blender/release/scripts/modules/rigify/leg_quadruped.py
>>
>> trunk/blender/release/scripts/modules/rigify/mouth.py
>>
>> trunk/blender/release/scripts/modules/rigify/stretch.py
>>
>> trunk/blender/release/scripts/modules/rigify/stretch_twist.py
>>
>> trunk/blender/release/scripts/modules/rigify_utils.py
>>     trunk/blender/release/scripts/op/presets.py
>>
>> trunk/blender/release/scripts/op/sequencer.py
>>
>> trunk/blender/release/scripts/ui/properties_animviz.py
>>
>> trunk/blender/release/scripts/ui/properties_data_armature.py
>>
>> trunk/blender/release/scripts/ui/properties_data_armature_rigify.py
>>
>> trunk/blender/release/scripts/ui/properties_data_bone.py
>>
>> trunk/blender/release/scripts/ui/properties_data_curve.py
>>
>> trunk/blender/release/scripts/ui/properties_data_lamp.py
>>
>> trunk/blender/release/scripts/ui/properties_data_mesh.py
>>
>> trunk/blender/release/scripts/ui/properties_data_modifier.py
>>
>> trunk/blender/release/scripts/ui/properties_game.py
>>
>> trunk/blender/release/scripts/ui/properties_material.py
>>
>> trunk/blender/release/scripts/ui/properties_object.py
>>
>> trunk/blender/release/scripts/ui/properties_object_constraint.py
>>
>> trunk/blender/release/scripts/ui/properties_particle.py
>>
>> trunk/blender/release/scripts/ui/properties_physics_cloth.py
>>
>> trunk/blender/release/scripts/ui/properties_physics_common.py
>>
>> trunk/blender/release/scripts/ui/properties_physics_field.py
>>
>> trunk/blender/release/scripts/ui/properties_physics_fluid.py
>>
>> trunk/blender/release/scripts/ui/properties_physics_smoke.py
>>
>> trunk/blender/release/scripts/ui/properties_physics_softbody.py
>>
>> trunk/blender/release/scripts/ui/properties_render.py
>>
>> trunk/blender/release/scripts/ui/properties_texture.py
>>
>> trunk/blender/release/scripts/ui/properties_world.py
>>
>> trunk/blender/release/scripts/ui/space_image.py
>>
>> trunk/blender/release/scripts/ui/space_info.py
>>
>> trunk/blender/release/scripts/ui/space_sequencer.py
>>
>> trunk/blender/release/scripts/ui/space_userpref_keymap.py
>>
>> trunk/blender/release/scripts/ui/space_view3d.py
>>
>> trunk/blender/release/scripts/ui/space_view3d_toolbar.py
>>
>> trunk/blender/source/blender/editors/mesh/editmesh_add.c
>>
>> trunk/blender/source/blender/editors/screen/screen_ops.c
>>
>> trunk/blender/source/blender/editors/space_image/image_buttons.c
>>
>> trunk/blender/source/blender/editors/space_nla/nla_buttons.c
>>
>> trunk/blender/source/blender/editors/space_node/drawnode.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_animviz.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_armature.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_cloth.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_constraint.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_curve.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_fluidsim.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_image.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_lamp.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_material.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_material_api.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_mesh.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_modifier.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_nla.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_object.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_object_force.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_particle.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_pose.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_scene.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_sculpt_paint.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_sequencer.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_smoke.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_texture.c
>>
>> trunk/blender/source/blender/makesrna/intern/rna_world.c
>>
>> trunk/blender/source/blender/makesrna/rna_cleanup/rna_properties.txt
>>
>> trunk/blender/source/gameengine/Converter/BL_ArmatureChannel.cpp
>>
>> trunk/blender/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
>>
>> trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
>>
>> trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp
>>
>> Added Paths:
>> -----------
>>
>> trunk/blender/release/scripts/op/animsys_update.py
>>
>> Modified: trunk/blender/release/scripts/io/export_fbx.py
>> ===================================================================
>> ---
>> trunk/blender/release/scripts/io/export_fbx.py
>> 2010-08-20 05:23:12 UTC (rev 31471)
>> +++
>> trunk/blender/release/scripts/io/export_fbx.py
>> 2010-08-20 06:09:58 UTC (rev 31472)
>> @@ -1082,7 +1082,7 @@
>>          else:
>>
>>    do_shadow = 0
>>
>> -        if light.only_shadow or (not
>> light.diffuse and not light.specular):
>> +        if light.use_only_shadow or
>> (not light.diffuse and not light.specular):
>>  #         if mode &
>> Blender.Lamp.Modes.OnlyShadow or (mode &
>> Blender.Lamp.Modes.NoDiffuse and mode &
>> Blender.Lamp.Modes.NoSpecular):
>>
>>    do_light = 0
>>          else:
>> @@ -1190,7 +1190,7 @@
>>  #
>> mat_spec = mat.spec/2.0
>>
>>    mat_alpha = mat.alpha
>>
>>    mat_emit = mat.emit
>> -            mat_shadeless =
>> mat.shadeless
>> +            mat_shadeless =
>> mat.use_shadeless
>>  #
>> mat_shadeless = mat.mode &
>> Blender.Material.Modes.SHADELESS
>>              if
>> mat_shadeless:
>>
>>    mat_shader = 'Lambert'
>> @@ -1327,9 +1327,9 @@
>>
>>    Property: "CurrentMappingType", "enum",
>> "",0
>>
>>    Property: "UVSwap", "bool", "",0''')
>>
>> -        file.write('\n\t\t\tProperty:
>> "WrapModeU", "enum", "",%i' % tex.clamp_x)
>> +        file.write('\n\t\t\tProperty:
>> "WrapModeU", "enum", "",%i' % tex.use_clamp_x)
>>  #
>> file.write('\n\t\t\tProperty: "WrapModeU", "enum", "",%i' %
>> tex.clampX)
>> -        file.write('\n\t\t\tProperty:
>> "WrapModeV", "enum", "",%i' % tex.clamp_y)
>> +        file.write('\n\t\t\tProperty:
>> "WrapModeV", "enum", "",%i' % tex.use_clamp_y)
>>  #
>> file.write('\n\t\t\tProperty: "WrapModeV", "enum", "",%i' %
>> tex.clampY)
>>
>>          file.write('''
>> @@ -1605,11 +1605,11 @@
>>          i=-1
>>          for ed in me.edges:
>>              if
>> i==-1:
>> -
>> file.write('%i' % (ed.use_sharp));    i=0
>> +
>> file.write('%i' % (ed.use_edge_sharp));
>> i=0
>>              else:
>>
>>    if i==54:
>>
>>      file.write('\n
>>
>>      ');    i=0
>> -
>> file.write(',%i' % (ed.use_sharp))
>> +
>> file.write(',%i' % (ed.use_edge_sharp))
>>              i+=1
>>
>>
>>    file.write('\n\t\t}')
>>
>> Modified: trunk/blender/release/scripts/io/export_obj.py
>> ===================================================================
>> ---
>> trunk/blender/release/scripts/io/export_obj.py
>> 2010-08-20 05:23:12 UTC (rev 31471)
>> +++
>> trunk/blender/release/scripts/io/export_obj.py
>> 2010-08-20 06:09:58 UTC (rev 31472)
>> @@ -93,7 +93,7 @@
>>
>>    file.write('d %.6f\n' % mat.alpha) # Alpha
>> (obj uses 'd' for dissolve)
>>
>>              # 0 to
>> disable lighting, 1 for ambient & diffuse only (specular
>> color set to black), 2 for full lighting.
>> -            if
>> mat.shadeless:
>> +            if
>> mat.use_shadeless:
>>
>>    file.write('illum 0\n') # ignore lighting
>>              elif
>> mat.specular_intensity == 0:
>>
>>    file.write('illum 1\n') # no specular.
>>
>> Modified: trunk/blender/release/scripts/io/export_x3d.py
>> ===================================================================
>> ---
>> trunk/blender/release/scripts/io/export_x3d.py
>> 2010-08-20 05:23:12 UTC (rev 31471)
>> +++
>> trunk/blender/release/scripts/io/export_x3d.py
>> 2010-08-20 06:09:58 UTC (rev 31472)
>> @@ -470,7 +470,7 @@
>>              if
>> len(maters) >= 1:
>>
>>    mat=maters[0]
>>
>>    # matFlags = mat.getMode()
>> -                if
>> not mat.face_texture:
>> +                if
>> not mat.use_face_texture:
>>
>>    # if not matFlags &
>> Blender.Material.Modes['TEXFACE']:
>>
>>      self.writeMaterial(mat,
>> self.cleanStr(mat.name,''), world)
>>
>>      # self.writeMaterial(mat,
>> self.cleanStr(maters[0].name,''), world)
>> @@ -520,7 +520,7 @@
>>
>>      is_smooth = True
>>
>>      break
>>              if
>> is_smooth == True:
>> -
>> creaseAngle=(mesh.autosmooth_angle)*(math.pi/180.0)
>> +
>> creaseAngle=(mesh.auto_smooth_angle)*(math.pi/180.0)
>>
>>    # creaseAngle=(mesh.degr)*(math.pi/180.0)
>>
>>    self.file.write("creaseAngle=\"%s\" " %
>> (round(creaseAngle,self.cp)))
>>
>> @@ -699,7 +699,7 @@
>>          # specB =
>> (mat.specCol[2]+0.001)/(1.25/(mat.spec+0.001))
>>          transp =
>> 1-mat.alpha
>>          # matFlags =
>> mat.getMode()
>> -        if mat.shadeless:
>> +        if mat.use_shadeless:
>>          # if matFlags &
>> Blender.Material.Modes['SHADELESS']:
>>            ambient = 1
>>            shine = 1
>> @@ -731,7 +731,7 @@
>>      def writeBackground(self, world,
>> alltextures):
>>          if
>> world:    worldname = world.name
>>
>>    else:
>> return
>> -        blending = (world.blend_sky,
>> world.paper_sky, world.real_sky)
>> +        blending = (world.blend_sky,
>> world.paper_sky, world.use_sky_real)
>>          # blending =
>> world.getSkytype()
>>          grd =
>> world.horizon_color
>>          # grd =
>> world.getHor()
>>
>> Modified:
>> trunk/blender/release/scripts/io/import_scene_obj.py
>> ===================================================================
>> ---
>> trunk/blender/release/scripts/io/import_scene_obj.py
>> 2010-08-20 05:23:12 UTC (rev 31471)
>> +++
>> trunk/blender/release/scripts/io/import_scene_obj.py
>> 2010-08-20 06:09:58 UTC (rev 31472)
>> @@ -379,7 +379,7 @@
>>
>>    texture.mipmap = True
>>
>>    texture.interpolation = True
>>
>>    texture.use_alpha = True
>> -
>> blender_material.transparency = True
>> +
>> blender_material.use_transparency = True
>>
>>    blender_material.alpha = 0.0
>>              else:
>>
>>    blender_material.add_texture(texture,
>> 'UV', 'COLOR')
>> @@ -806,7 +806,7 @@
>>  #         for sharp_edge in
>> sharp_edges.keys():
>>  #
>> for ed in me.edges:
>>  #
>>     if edges_match(sharp_edge, ed.vertices):
>> -#
>>         ed.use_sharp = True
>> +#
>>         ed.use_edge_sharp =
>> True
>>
>>  #     if unique_smooth_groups and
>> sharp_edges:
>>  #         SHARP=
>> Mesh.EdgeFlags.SHARP
>>
>> Modified:
>> trunk/blender/release/scripts/io/netrender/client.py
>> ===================================================================
>> ---
>> trunk/blender/release/scripts/io/netrender/client.py
>> 2010-08-20 05:23:12 UTC (rev 31471)
>> +++
>> trunk/blender/release/scripts/io/netrender/client.py
>> 2010-08-20 06:09:58 UTC (rev 31472)
>> @@ -146,7 +146,7 @@
>>
>>    addPointCache(job, object,
>> modifier.point_cache, default_path)
>>              elif
>> modifier.type == "SMOKE" and modifier.smoke_type ==
>> "TYPE_DOMAIN":
>>
>>    addPointCache(job, object,
>> modifier.domain_settings.point_cache_low, default_path)
>> -                if
>> modifier.domain_settings.highres:
>> +                if
>> modifier.domain_settings.use_high_resolution:
>>
>>      addPointCache(job, object,
>> modifier.domain_settings.point_cache_high, default_path)
>>              elif
>> modifier.type == "MULTIRES" and modifier.is_external:
>>
>>    file_path =
>> bpy.path.abspath(modifier.filepath)
>> @@ -210,7 +210,7 @@
>>
>>          address = "" if
>> netsettings.server_address == "[default]" else
>> netsettings.server_address
>>
>> -        master.runMaster((address,
>> netsettings.server_port), netsettings.master_broadcast,
>> netsettings.master_clear, netsettings.path,
>> self.update_stats, self.test_break)
>> +        master.runMaster((address,
>> netsettings.server_port), netsettings.master_broadcast,
>> netsettings.use_master_clear, netsettings.path,
>> self.update_stats, self.test_break)
>>
>>
>>      def render_slave(self, scene):
>>
>> Modified:
>> trunk/blender/release/scripts/io/netrender/repath.py
>> ===================================================================
>> ---
>> trunk/blender/release/scripts/io/netrender/repath.py
>> 2010-08-20 05:23:12 UTC (rev 31471)
>> +++
>> trunk/blender/release/scripts/io/netrender/repath.py
>> 2010-08-20 06:09:58 UTC (rev 31472)
>> @@ -121,7 +121,7 @@
>>
>>    processPointCache(modifier.point_cache)
>>              elif
>> modifier.type == "SMOKE" and modifier.smoke_type ==
>> "TYPE_DOMAIN":
>>
>>    processPointCache(modifier.domain_settings.point_cache_low)
>> -                if
>> modifier.domain_settings.highres:
>> +                if
>> modifier.domain_settings.use_high_resolution:
>>
>>
>>    processPointCache(modifier.domain_settings.point_cache_high)
>>              elif
>> modifier.type == "MULTIRES" and modifier.is_external:
>>
>>    file_path =
>> bpy.path.abspath(modifier.filepath)
>>
>> Modified:
>> trunk/blender/release/scripts/io/netrender/slave.py
>> ===================================================================
>> ---
>> trunk/blender/release/scripts/io/netrender/slave.py
>> 2010-08-20 05:23:12 UTC (rev 31471)
>> +++
>> trunk/blender/release/scripts/io/netrender/slave.py
>> 2010-08-20 06:09:58 UTC (rev 31472)
>> @@ -201,7 +201,7 @@
>>
>>
>>    response.read()
>>
>>
>>
>>              # Also
>> output on console
>> -
>>             if
>> netsettings.slave_outputlog:
>> +
>>             if
>> netsettings.use_slave_output_log:
>>
>>
>>    print(str(stdout, encoding='utf8'),
>> end="")
>>
>>
>>              stdout
>> = bytes()
>> @@ -225,7 +225,7 @@
>>
>>    # flush the rest of the logs
>>
>>    if stdout:
>>
>>      # Also output on console
>> -
>>     if netsettings.slave_thumb:
>> +
>>     if netsettings.use_slave_thumb:
>>
>>          print(str(stdout,
>> encoding='utf8'), end="")
>>
>>
>>
>>      # (only need to update on one
>> frame, they are linked
>> @@ -254,7 +254,7 @@
>>
>>
>>    filename = os.path.join(JOB_PREFIX,
>> "%06d.exr" % frame.number)
>>
>>
>>              #
>> thumbnail first
>> -
>>             if
>> netsettings.slave_thumb:
>> +
>>             if
>> netsettings.use_slave_thumb:
>>
>>
>>    thumbname = thumbnail(filename)
>>
>>
>>
>>    f = open(thumbname, 'rb')
>> @@ -294,7 +294,7 @@
>>
>>          conn.close()
>>
>> -        if netsettings.slave_clear:
>> +        if
>> netsettings.use_slave_clear:
>>
>>    clearSlave(NODE_PREFIX)
>>
>>  if __name__ == "__main__":
>>
>> Modified: trunk/blender/release/scripts/io/netrender/ui.py
>> ===================================================================
>> ---
>> trunk/blender/release/scripts/io/netrender/ui.py
>> 2010-08-20 05:23:12 UTC (rev 31471)
>> +++
>> trunk/blender/release/scripts/io/netrender/ui.py
>> 2010-08-20 06:09:58 UTC (rev 31472)
>> @@ -147,9 +147,9 @@
>>          rd = scene.render
>>          netsettings =
>> scene.network_render
>>
>> -        layout.prop(netsettings,
>> "slave_clear")
>> -        layout.prop(netsettings,
>> "slave_thumb")
>> -        layout.prop(netsettings,
>> "slave_outputlog")
>> +        layout.prop(netsettings,
>> "use_slave_clear")
>>
>> @@ Diff output truncated at 10240 characters. @@
>>
>> _______________________________________________
>> Bf-blender-cvs mailing list
>> Bf-blender-cvs at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>>
>
>
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>



-- 
- Campbell


More information about the Bf-committers mailing list