[Bf-python] IPO Exposure

Jacques Guignot guignot at wanadoo.fr
Fri Feb 6 21:02:10 CET 2004


Roland Hess wrote:

> I've just signed up for the bf-Python list for two reasons:
>
> 1. I found I was reading the logs frequently anyway via the .org website.
> 2. I've identified a (hopefully) simple and very useful expansion to 
> one of the modules.
>
> Here's a rundown of point 2. First note that I would attempt this 
> myself, but I have not been able to compile cvs after at least four 
> different clean attempts on various machines over the past several 
> months. Therefore, I have done what I think is good detective work 
> that could make this easier for someone who has the mad skillz(tm) 
> that I lack.
>
> The Problem: Currently, when using the Ipo module of the API, the 
> method addBezier of the IpoCurve class creates bezier points on the 
> curve object with necessarily poor handles.  Code here:
>
> bzt->vec[0][0] = x-1;
> bzt->vec[1][0] = x;
> bzt->vec[2][0] = x+1;
> bzt->vec[0][1] = y-1;
> bzt->vec[1][1] = y;
> bzt->vec[2][1] = y+1;
>
> In this sample from the addBezier definition in the python section of 
> the source, x and y are the coordinates passed to the method, and the 
> +-x and y assignments create handles one unit to the lower left and 
> upper right of the provided point. For smooth animation purposes, this 
> is worse than useless. If a Python scripter is dealing with only a few 
> IpoCurves, they have the option of selecting that curve, entering edit 
> mode and hitting SHIFT-H to make nice, smoothly aligned Bezier 
> handles. However, in my scripting project there might be hundreds, if 
> not thousands of Ipocurves, making that approach prohibitive.
>
> Once points are added via the addBezier method, there is no way to 
> alter the poor handles through the Python API.
>
> Suggested Solution: expose the functionality of the SHIFT-H editmode 
> command (and other related commands) to Python. The Blender code that 
> seems to handle this functionality is:
>
> sethandles_ipo_keys    found in
> blender/source/blender/src/editipo.c   and
>
> calchandles_ipocurve   found in
> blender/source/blender/blenkernel/intern ipo.c
>
> The method could be added to the IpoCurve class, with the format: 
> ipocurve.setHandlestyle(Style), with style names corresponding to the 
> available functions. This would complement the already existing 
> setExtrapolation() and setInterpolation() methods.
>
> Why Someone Should Do This: I have heard from one other Python writer 
> (eeshlo), who had to abandon a scripting project (updating the Icarus 
> script) because of this deficiency. That stinks. Anyone who animates 
> with Python needs this update. So, whoever makes this addition would 
> receive the undying gratitude of all Python scripters who would like 
> to generate and record animation with Python.
>
> Thanks. And by the way, if this request was completely inappropriate 
> here, please let me know and I will humbly skulk away.






More information about the Bf-python mailing list