[Bf-committers] An easy to use damped spline

Campbell Barton ideasman42 at gmail.com
Mon Dec 29 01:47:31 CET 2014


Heres a patch on Blender,
Removed the restriction of power-of-2 curve resolution.
https://developer.blender.org/P183

However I don't see any significant advantage this offers over
existing nurbs calculation method, even though its quite efficient, it
would need to be extended to support different orders (currently
hard-coded to order-4), cyclic curves, nurbs weights etc...

Just posting the patch for reference if anyone likes to check on the code.

On Mon, Dec 29, 2014 at 8:03 AM, Campbell Barton <ideasman42 at gmail.com> wrote:
> Its available here:
> http://download.blender.org/ftp/ton/dspline.pdf
>
> On Mon, Dec 29, 2014 at 7:28 AM, joe <joeedh at gmail.com> wrote:
>> Do you have a link to a paper?
>> On Sep 28, 2014 10:45 AM, "Fred" <f.harthoorn at ziggo.nl> wrote:
>>
>>> Hi Campbell Barton,
>>>
>>> The amount of interpolation dots is 2^i, at the start of the demo  i =
>>> 4    (16 dots)
>>> if you change i = 7 (the limit in the demo) than there are 128
>>> interpolation dots.
>>>
>>> if I had set the limit in the demo to 10 then 1024 interpolation dots
>>> was possible.
>>>
>>> If the spline is used in a 3 dimensional space,
>>> to compute an interpolated dot position takes:  dim * 10  clock cycles =
>>> 30 clock cycles.
>>> I hope that it is fast enough.
>>>
>>> If you like to have a curve to the last plotted dot you have to put two
>>> dots on each other at the end.
>>> You will see that it is symmetrical again.
>>>
>>> Please change the number to 7 in the demo and you see a curved line in
>>> stead of dots.
>>>
>>> Much more is possible with this spline because the first, second and
>>> third derivative (parameterized ) of the curve
>>> is available in real time.
>>>
>>> I think that much more can be invented with this spline technique.
>>> I think that with some research tangent handles can be constructed as
>>> well (if you like them?).
>>> What I did in the demo was the most simple way of using it.
>>>
>>> The essence is: a 3th degree curve in two (x,y) or more directions is
>>> differentiated three times, and then again integrated 3 times.
>>> With floating point this is impossible , because it is not exact, the
>>> curve runs away.
>>> But with integer computing it is exact and the spline exact a 3th degree
>>> curve.
>>>
>>> It can also be used in ten or more directions, but more then 3
>>> dimensions (x,y,z) is not  practical.
>>>
>>> Fred.
>>> --------------------------------------
>>> Fred schreef op 28-9-2014 om 18:30:
>>> > That is in the demo the case, because I programmed that  the first plot
>>> > point is actually two points.
>>> > the spline uses 4 points p0, p1, p2, p3  and the interpolation is
>>> > between p1 and p2.
>>> >
>>> > Campbell Barton schreef op 28-9-2014 om 17:42:
>>> >> Checked the test application, and not sure if this is intended but a
>>> >> simple triangle has uneven distribution.
>>> >>
>>> >> see: http://www.graphicall.org/ftp/ideasman42/fred_curve.png
>>> >>
>>> >> On Mon, Sep 29, 2014 at 1:32 AM, Dan McGrath <danmcgrath.ca at gmail.com>
>>> wrote:
>>> >>> Cool, got them. Will take a look later. o/
>>> >>>
>>> >>> Dan
>>> >>>
>>> >>> On Sun, Sep 28, 2014 at 11:28 AM, Fred <f.harthoorn at ziggo.nl> wrote:
>>> >>>
>>> >>>> Ok, It is uploaded to the directory incoming
>>> >>>>
>>> >>>> Dan schreef op 28-9-2014 om 17:15:
>>> >>>>> You could always upload it to our anonymous ftp via
>>> download.blender.org
>>> >>>>> (or ftp.blender.org) and put it into the incoming directory (use
>>> passive
>>> >>>>> mode). From there was can fetch the files via
>>> >>>>> http://download.blender.org/ftp/incoming/
>>> >>>>>
>>> >>>>> Dan
>>> >>>>>
>>> >>>>> On Sun, Sep 28, 2014 at 11:05 AM, Fred <f.harthoorn at ziggo.nl> wrote:
>>> >>>>>
>>> >>>>>> Campbell Barton
>>> >>>>>>
>>> >>>>>> I have tried to send it but it is rejected. So send me an addres for
>>> >>>>>> upload.
>>> >>>>>>
>>> >>>>>> fred
>>> >>>>>>
>>> >>>>>>
>>> >>>>>> Campbell Barton schreef op 28-9-2014 om 16:51:
>>> >>>>>>> Could the project files be posted to a public URL?, Id like to be
>>> able
>>> >>>>>>> to look into this. but probably wont have time over the coming
>>> weeks.
>>> >>>>>>>
>>> >>>>>>> The main source file compiles for me with minor edits on
>>> >>>>>>> Linux/FreePascal, but the demo relies on `Window` unit, which I
>>> assume
>>> >>>>>>> is provided by delphi/windows.
>>> >>>>>>>
>>> >>>>>>> On Mon, Sep 29, 2014 at 12:36 AM, Dan McGrath <
>>> danmcgrath.ca at gmail.com
>>> >>>>>> wrote:
>>> >>>>>>>> Hey,
>>> >>>>>>>>
>>> >>>>>>>> Just save out the delphi project and zip it up and email it to me
>>> >>>> direct
>>> >>>>>>>> via email I guess (the mailing list wouldn't allow such a large
>>> >>>>>>>> attachement). I was attempting to compile it on linux, so the
>>> compiled
>>> >>>>>>>> dll's wouldn't be of much use to me unfortunately.
>>> >>>>>>>>
>>> >>>>>>>> Thanks!
>>> >>>>>>>>
>>> >>>>>>>>
>>> >>>>>>>> Dan
>>> >>>>>>>>
>>> >>>>>>>> On Sun, Sep 28, 2014 at 10:06 AM, Fred <f.harthoorn at ziggo.nl>
>>> wrote:
>>> >>>>>>>>
>>> >>>>>>>>> Hi Dan,
>>> >>>>>>>>>
>>> >>>>>>>>> Of course I can  send you the project.
>>> >>>>>>>>> I have made two versions:
>>> >>>>>>>>> 1) The spline is embedded in de demo:
>>> >>>>>>>>> 2) The spline is an external .dll, de demo calls PSpline.dll
>>> >>>>>>>>>
>>> >>>>>>>>> Which one do you prefer?
>>> >>>>>>>>>
>>> >>>>>>>>> Fred.
>>> >>>>>>>>> ----------------
>>> >>>>>>>>>
>>> >>>>>>>>>
>>> >>>>>>>>>
>>> >>>>>>>>> Dan McGrath schreef op 28-9-2014 om 15:42:
>>> >>>>>>>>>> So is/was Turbo Pascal (limited in features; eg: objects but no
>>> >>>>>> classes)
>>> >>>>>>>>>> and FreePascal+Lazarus (supports almost everything Delphi does
>>> >>>> still?
>>> >>>>>>>>>> http://wiki.freepascal.org/Lazarus_For_Delphi_Users).
>>> >>>>>>>>>>
>>> >>>>>>>>>> Anyway, just thought it was neat to see code in pascal (an
>>> elegant
>>> >>>>>>>>>> language, imho). Curious though, why not just give the whole
>>> delphi
>>> >>>>>>>>> project
>>> >>>>>>>>>> and resource files so your forms can be built etc.? The code
>>> seems
>>> >>>> to
>>> >>>>>>>>>> compile with some modifications here, but without the {$R *.DFM}
>>> >>>>>> (*.lfm
>>> >>>>>>>>> in
>>> >>>>>>>>>> fp), one would have to manually rebuild the form :(
>>> >>>>>>>>>>
>>> >>>>>>>>>>
>>> >>>>>>>>>>
>>> >>>>>>>>>> On Sun, Sep 28, 2014 at 8:55 AM, Fred <f.harthoorn at ziggo.nl>
>>> wrote:
>>> >>>>>>>>>>
>>> >>>>>>>>>>> It's true, but Delphi is object oriented.
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> Dan McGrath schreef op 28-9-2014 om 14:53:
>>> >>>>>>>>>>>> Standard Pascal, Turbo Pascal, Freepascal, Delphi; same
>>> language,
>>> >>>>>>>>>>> different
>>> >>>>>>>>>>>> dialect :)
>>> >>>>>>>>>>>>
>>> >>>>>>>>>>>> On Sun, Sep 28, 2014 at 8:43 AM, Fred <f.harthoorn at ziggo.nl>
>>> >>>> wrote:
>>> >>>>>>>>>>>>> Actually it is Delphi
>>> >>>>>>>>>>>>>
>>> >>>>>>>>>>>>>
>>> >>>>>>>>>>>>> Dan McGrath schreef op 28-9-2014 om 14:35:
>>> >>>>>>>>>>>>>> Pascal, with inline assembler to boot! \o/ :)
>>> >>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>> On Sun, Sep 28, 2014 at 6:46 AM, Ton Roosendaal <
>>> >>>> ton at blender.org>
>>> >>>>>>>>>>> wrote:
>>> >>>>>>>>>>>>>>> Hi,
>>> >>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>> Fred told me he's not interested in getting involved, or
>>> >>>> setting
>>> >>>>>> up
>>> >>>>>>>>> a
>>> >>>>>>>>>>>>>>> project for his work.
>>> >>>>>>>>>>>>>>> He's retired now and just thought we might be interested
>>> in a
>>> >>>>>>>>> research
>>> >>>>>>>>>>>>>>> topic he did.
>>> >>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>> I've copied files he sent to me here;
>>> >>>>>>>>>>>>>>> http://download.blender.org/ftp/ton/
>>> >>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>> It's a Dutch pdf and two pascal files.
>>> >>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>> -Ton-
>>> >>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>> --------------------------------------------------------
>>> >>>>>>>>>>>>>>> Ton Roosendaal  -  ton at blender.org   -   www.blender.org
>>> >>>>>>>>>>>>>>> Chairman Blender Foundation - Producer Blender Institute
>>> >>>>>>>>>>>>>>> Entrepotdok 57A  -  1018AD Amsterdam  -  The Netherlands
>>> >>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>> On 28 Sep, 2014, at 9:28, Aditia A. Pratama wrote:
>>> >>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>>> HI Fred,
>>> >>>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>>> Can you record a screencast/video demo to show how it
>>> works?
>>> >>>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>>> Regards,
>>> >>>>>>>>>>>>>>>> On Sep 28, 2014 2:14 PM, "Fred" <f.harthoorn at ziggo.nl>
>>> wrote:
>>> >>>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>>>> I forgot to say, I have a two dimensional demo but it is
>>> >>>>>> working
>>> >>>>>>>>> on
>>> >>>>>>>>>>> a
>>> >>>>>>>>>>>>>>>>> windows computer.
>>> >>>>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>>>> Jacob Merrill schreef op 28-9-2014 om 02:07:
>>> >>>>>>>>>>>>>>>>>> would this make it so you can record F-curves over time
>>> >>>>>> better?
>>> >>>>>>>>>>>>>>>>>> right now recording in the engine gets slower the
>>> longer it
>>> >>>>>> runs,
>>> >>>>>>>>>>>>>>>>>> _______________________________________________
>>> >>>>>>>>>>>>>>>>>> Bf-committers mailing list
>>> >>>>>>>>>>>>>>>>>> Bf-committers at blender.org
>>> >>>>>>>>>>>>>>>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>>>>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>>>> _______________________________________________
>>> >>>>>>>>>>>>>>>>> Bf-committers mailing list
>>> >>>>>>>>>>>>>>>>> Bf-committers at blender.org
>>> >>>>>>>>>>>>>>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>>>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>>>> _______________________________________________
>>> >>>>>>>>>>>>>>>> Bf-committers mailing list
>>> >>>>>>>>>>>>>>>> Bf-committers at blender.org
>>> >>>>>>>>>>>>>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>>>>>>>>>>>>>> _______________________________________________
>>> >>>>>>>>>>>>>>> Bf-committers mailing list
>>> >>>>>>>>>>>>>>> Bf-committers at blender.org
>>> >>>>>>>>>>>>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>>>>>>>>>>>>>>
>>> >>>>>>>>>>>>>> _______________________________________________
>>> >>>>>>>>>>>>>> Bf-committers mailing list
>>> >>>>>>>>>>>>>> Bf-committers at blender.org
>>> >>>>>>>>>>>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>>>>>>>>>>>>>
>>> >>>>>>>>>>>>> _______________________________________________
>>> >>>>>>>>>>>>> Bf-committers mailing list
>>> >>>>>>>>>>>>> Bf-committers at blender.org
>>> >>>>>>>>>>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>>>>>>>>>>>>
>>> >>>>>>>>>>>> _______________________________________________
>>> >>>>>>>>>>>> Bf-committers mailing list
>>> >>>>>>>>>>>> Bf-committers at blender.org
>>> >>>>>>>>>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>>>>>>>>>>>
>>> >>>>>>>>>>> _______________________________________________
>>> >>>>>>>>>>> Bf-committers mailing list
>>> >>>>>>>>>>> Bf-committers at blender.org
>>> >>>>>>>>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>>>>>>>>>>
>>> >>>>>>>>>> _______________________________________________
>>> >>>>>>>>>> Bf-committers mailing list
>>> >>>>>>>>>> Bf-committers at blender.org
>>> >>>>>>>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>>>>>>>>>
>>> >>>>>>>>> _______________________________________________
>>> >>>>>>>>> Bf-committers mailing list
>>> >>>>>>>>> Bf-committers at blender.org
>>> >>>>>>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>>>>>>>>
>>> >>>>>>>> _______________________________________________
>>> >>>>>>>> Bf-committers mailing list
>>> >>>>>>>> Bf-committers at blender.org
>>> >>>>>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>>>>> _______________________________________________
>>> >>>>>> Bf-committers mailing list
>>> >>>>>> Bf-committers at blender.org
>>> >>>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>>>>>
>>> >>>>> _______________________________________________
>>> >>>>> Bf-committers mailing list
>>> >>>>> Bf-committers at blender.org
>>> >>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>>>>
>>> >>>> _______________________________________________
>>> >>>> Bf-committers mailing list
>>> >>>> Bf-committers at blender.org
>>> >>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>>>
>>> >>> _______________________________________________
>>> >>> Bf-committers mailing list
>>> >>> Bf-committers at blender.org
>>> >>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> >>
>>> > _______________________________________________
>>> > Bf-committers mailing list
>>> > Bf-committers at blender.org
>>> > http://lists.blender.org/mailman/listinfo/bf-committers
>>> >
>>>
>>> _______________________________________________
>>> Bf-committers mailing list
>>> Bf-committers at blender.org
>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>>
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
>
>
>
> --
> - Campbell



-- 
- Campbell


More information about the Bf-committers mailing list