Nice response man!

A good way to paste code safely is to highlight it first:
http://tohtml.com/python/

then copy from the browser and paste into Gmail while Rich Formatting
is enabled.


On Mon, Apr 30, 2012 at 2:19 PM, jo benayoun <jobenay...@gmail.com> wrote:
> Hi Ahmidou,
> looks quite nice ! :)
>
> For your problem, I would go in c by reproducing a kinda structure that
> mimic FCurves ones like the following.
>
> """
> struct bezfragments {
>     double cps[4][3];
>     uint_t interp;
> };
>
> struct motionpath {
>     constchar_t *source;
>     ushort_t color[3];
>     uint_t flags;
>     uint_t nbezfragments;
>     struct bezfragments *[1];
> };
> """
>
> A MotionPath as a FCurve is a fixed length array of bezier curves with some
> extra informations like the object which is the source, the color of the
> path and some other flags for ui convenience (selection mode, ...).
> You have the choice to represent your bezier segments by  pairing control
> points by 3 or by 4, I dont think it makes a huge difference.
> This system coupled with a "MotionPathManager" will avoid you to have to
> query the softimage API each time you need to redraw your viewport as your
> datas are cached in memory.
> Also, by subscripting to any event like "siOnValueChange", you will be able
> to rebuild a motion path targeting just what you need. Also a good point for
> perfs.
> Anyways .... Here is a little pysnippet (I dont have the possibility to
> write it in C right now) ! It should I hope answer to your first question !
> :)
>
> jo
>
>
> """
> # Im quite sure gmail will eat my indent efforts so take care about that !
> # Each key for each params must have a buddy on the others axes.
> # Create a cube, animate its pos's being sure a key is set at the same frame
> for the three axes.
> #
>
> import random
>
>
> class BezFragment(object):
>     cpoints = tuple()
>     interp = int()
>
> class MotionPath(object):
>     source = str()
>     color = tuple()
>     bezfragments = tuple()
>
>
> def build_axis_data(param):
>     keys = tuple(param.Source.Keys)
>     res = list()
>     bfrag = None
>     i = 0
>
>     while i < (len(keys)-1):
>             cp = list()
>
>             key = keys[i]
>             nextkey = keys[i+1]
>             cp.append(round(key.Value, 1))
>             cp.append(round(key.Time, 1))
>             cp.append(round(key.Value + key.LeftTanX, 1))
>             cp.append(round(key.Time + key.LeftTanY, 1))
>             cp.append(round(nextkey.Value - key.RightTanY, 1))
>             cp.append(round(nextkey.Time - key.RightTanX, 1))
>             cp.append(round(nextkey.Value, 1))
>             cp.append(round(nextkey.Time, 1))
>
>             bfrag = BezFragment()
>             res.append(bfrag)
>             bfrag.interp = key.Interpolation
>             bfrag.cpoints = tuple(cp)
>
>             i += 1
>
>     return tuple(res)
>
>
> def build_motion_path(siobj):
>     x = build_axis_data(siobj.Kinematics.Local.posx)
>     y = build_axis_data(siobj.Kinematics.Local.posy)
>     z = build_axis_data(siobj.Kinematics.Local.posz)
>
>     mp = MotionPath()
>     mp.source = siobj.FullName
>     mp.color = (random.randint(120, 255), random.randint(120, 255),
>                             random.randint(120, 255),
>                             )
>     mp.bezfragments = tuple(zip(x, y, z))
>     return mp
>
>
> def log_bezfragment(bfrag):
>     msg = "{0}:({1}, {2})---o ({3}, {4})  ({5}, {6})o---({7}, {8})\n" \
>                 "         \______________________________________/"
>     print msg.format("", *bfrag.cpoints)
>     return None
>
>
> def log_obj_motionpath():
>     for obj in Application.Selection:
>         mp = build_motion_path(obj)
>
>         print "source: {0}".format(mp.source)
>         print "mp-color: {0}".format(mp.color)
>         for bezf in mp.bezfragments:
>             print "\ncp"
>             for xyz in bezf:
>                 log_bezfragment(xyz)
>     return None
>
>
> log_obj_motionpath()
>
> """
>
>
>
>
>
>
>
>
>
>
>
>
> 2012/4/30 Ahmidou Lyazidi <ahmidou....@gmail.com>
>>
>> I think I got it :)
>>
>>
>> 2012/4/30 Halim Negadi <hneg...@gmail.com>
>>>
>>> Looks awesome Ahmidou, can't wait to play with it.
>>> Cheers,
>>> H.
>>>
>>>
>>> On Mon, Apr 30, 2012 at 4:44 PM, Ahmidou Lyazidi <ahmidou....@gmail.com>
>>> wrote:
>>>>
>>>> Well, as soon as I have resolved the tangent handle stuff :) I'm sure
>>>> it's simple, but I can't get it...
>>>>
>>>>
>>>> 2012/4/30 Philip Melancon <philip.melan...@modusfx.com>
>>>>>
>>>>> This is looking amazing, do you have an idea of when/how you plan to
>>>>> release this nice little piece of animation goodness? I know that the
>>>>> animators I work with would kill for something like this!
>>>>>
>>>>> Philip Melancon
>>>>> Lead Crowd TD
>>>>> Modus FX
>>>>>
>>>>>
>>>>> On 4/30/2012 10:30 AM, Xavier Lapointe wrote:
>>>>>
>>>>> Whoa, this is awesome.
>>>>>
>>>>> I feel some animators out there are probably jubilating right now :)
>>>>>
>>>>> No virus found in this message.
>>>>> Checked by AVG - www.avg.com
>>>>> Version: 2012.0.1913 / Virus Database: 2411/4969 - Release Date:
>>>>> 04/30/12
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Ahmidou Lyazidi
>>>> Director | TD | CG artist
>>>> http://vimeo.com/ahmidou/videos
>>>>
>>>
>>
>>
>>
>> --
>> Ahmidou Lyazidi
>> Director | TD | CG artist
>> http://vimeo.com/ahmidou/videos
>>
>

Reply via email to