[Plugin] SketchyFFD (Classic)
-
Here's what I get in the console on 7.1 running on XP Home...
WARNING: make_unique is a deprecated method of Sketchup:Group
Error: #<NoMethodError: undefined method `*' for nil:NilClass> -
I registered just to say thank you for this BRILLIANT plugin!
As a side note, I have Windows Vista and SU 7. No problems at all. The plugin is working fine for me. -
@cphillips said:
There is a problem with the script under 7.1 or just 7.0? Can you give me some idea how to reproduce the bug? If it starts misbehaving open up the ruby console and see if it is printing any errors.
Well, here, under 7.1 Mac, it still works but not as well as before. No matter where the group is located, the FFD dot matrix appears at the origin.
The console does provide a warning:
%(#0000BF)[onSelectionBulkChange1
Webdialog set to#Sketchup::Group:0x1ce30424
WARNING: make_unique is a deprecated method of Sketchup:Group
onSelectionCleared]
Hope this helps. -
Good news, I guess the last update of SU corrected something related cause FDD now works just fine again.
No matrix offset anymore
-
First, thanks to the author for this great plugin! Unfortunately Im not getting it to work right with the latest sketchup release (SketchUp 7 (7.1.5803) and OSX.
The live update does not work, and only the 3x3 FFD works (with no live update).
My console reports this:When creating the 3x3 FFD control points:
"WARNING: make_unique is a deprecated method of Sketchup:Group"When creating the NxN FFD control points:
"WARNING: make_unique is a deprecated method of Sketchup:Group
Error: #<NoMethodError: undefined method*' for nil:NilClass> /Library/Application Support/Google SketchUp 7/SketchUp/Plugins/SketchyFFD.rb:453:in
calcBernstein'
/Library/Application Support/Google SketchUp 7/SketchUp/Plugins/SketchyFFD.rb:210:ininitFFD' /Library/Application Support/Google SketchUp 7/SketchUp/Plugins/SketchyFFD.rb:209:in
upto'
/Library/Application Support/Google SketchUp 7/SketchUp/Plugins/SketchyFFD.rb:209:ininitFFD' /Library/Application Support/Google SketchUp 7/SketchUp/Plugins/SketchyFFD.rb:200:in
each'
/Library/Application Support/Google SketchUp 7/SketchUp/Plugins/SketchyFFD.rb:200:ininitFFD' /Library/Application Support/Google SketchUp 7/SketchUp/Plugins/SketchyFFD.rb:151:in
startFFD'
/Library/Application Support/Google SketchUp 7/SketchUp/Plugins/SketchyFFD.rb:20"Hope to fix this soon... the plugin is a really must-have
-
thank you
-
thankyou
-
Hi All,
I just installed this ruby, everything is fine except that I cant update the FFD ( I actually have no "update FFD" choice in the menu).
Anybody can help?Cheers,
Ben
-
mmm ..me to
wheres UpdateFFD ? -
First page!
-
since switching to SketchUp 7 I can only use the default 3x3 lattice. any user defined deformation matrix doesn't work (the lattice is created, but moving the points doesn't have any effect)...
-
Chris,
Thanks for the great plug-in, it really makes SU into a useful tool!
I think I found the cause of the problems some are having since with the 22 Aug update. The symptom is that once you use SketchyFFD, you can't change the size of the FFD. For example, if you create a 2x2 FFD you can only use a 2x2 for that session. Closing SU and reopening (or reloading the plug-in) clears it. Also NxN only works when all three dimensions are the same. At least that's what I have observed, and it seems consistent with the posts.
Starting on line 440 is the following:
[mod=:2y04bwod]THIS IS VERY OLD CODE, AND NO LONGER REGARDED AS GOOD-PRACTICE [$var ETC].
THE NEWEST VERSION OF FFD FROM THE PLUGINSTORE IS THE BEST AVAILABLE...[/mod:2y04bwod]#Calculate the Bernstein polynomial. #Uses a table for speed. #thanks to steven-arts for the idea. $binomialTable=[] def calcBernstein (i, n, u) #Bernstein Polynomial begin binomial=$binomialTable[i][n] rescue $binomialTable[i]=[] if($binomialTable[i]==nil) $binomialTable[i][n]=ffdfactorial(n).to_f / (ffdfactorial(n - i).to_f * ffdfactorial(i).to_f) binomial=$binomialTable[i][n] end #binomial = factorial(n).to_f / (factorial(n - i).to_f * factorial(i).to_f) bernstein = binomial * (u**i) * ((1-u)**(n-i)) return(bernstein) end
The 4th line of this section, "$binomialTable=[]", declares the array and initializes it empty. But it is BEFORE the function declaration, so it gets executed only on the initial program load. Once you dimension the array with "binomial=$binomialTable[i][n]" you can't change the dimensions without reinitializing it. I simply moved this line inside the function so it will reinitialize on each call and it works fine.
I've tested this in SU 7.1.860 with 2x2, 3x3, and random NxN FFD's in the same session with no problems. Hope this helps!
Glenn
-
well, that did the trick for me. thanks, Glenn.
however, there are still some issues sometimes. like that a transformation isn't applied to certain parts of the geometry.and I have got two questions/suggestions for improvements for a future version:
-
when you undo an action, the deformation, that has been applied to the geometry will be undone. the changed position of the control vertexes however is not set back. thus, when you undo an unwanted deformation and then move some control vertexes again, the old (undone) transformation is simply added to the new transformation)
so my question is: is there a way to undo the repositioning of control vertexes alongside the undo-process of the geometry? -
when you deform a group, then delete the lattice and then create a new ffd lattice, the array of control vertexes is shaped around the old position of the group. in order to correct this you have to explode and regroup the geometry.
I guess there is now easy way to overcome this problem. but if there was a possibility the plugin could reevaluate a groups position/scale, before creating the lattice, that would be cool.
-
-
Yeah !, that modification came just in time. I needed it for work. Modeling a boat.
Great work.As for the undo, for now I undo twice, one for the geom and one for the vertices. Seems to work fine.
-
Is Chris no longer maintaining this?
-
hey Glenn,
marvellous! now it works like a charm. a new matrix is always reliably adjusted to the group's dimensions and - for me even more important - undoing an operation effects geometry and control vertexes at the same time!
thank you very much for improving the script, Glenn
-
I do have a question about the workings of this plugin.
is the deformation a gradual process? (each change I make with the matrix adds another deformation to the geometry, therefore the order is important)
or is it only dependent on the matrix's final state? (no matter if i do 10 changes or a hundred, the final position of control vertexes is important)
because if the latter is the case (which I hope), you could - in theory at least - write a mighty modifier plugin not too much unlike 3Ds Max's deformers, where you can assign various preset-deformations to an object.
these modifiers are attached to the group, can be switched on/off or their attributes can be adjusted.
also you can add several modifiers (like a 'twist', a 'bend', and a 'squeeze' modifier). then the order is important (whether you twist or bend first), which of course can be changed later too...I don't want to know how difficult/impossible it is to write such a script. but just imagine the capabilities! you would add a whole new level of non-destructive controls to SketchUp
-
@gbabcock said:
OK, here's the latest update. This one should fix the problems with control points and subdividing being misaligned with the deformation group.
I'd appreciate any feedback to let me know if it's working well.
Glenn
Maybe better to create a new thread - so the download is at the start of the thread - not buried somewhere randomly in between. If you do that I'll tab this one obsolete and add a link to the new version.
-
Hi guys,
I've installed the SketchyFFD plugin by dropping it into my plugins folder but cannot locate it in SU. How do I access it/ turn it on?
Thanks.
-
Hi and welcome . You will find FFD in the context menu (right click). Oh, and remember that this plugin works on grouped geometry.
Advertisement