[Plugin] Simple Loft alpha 0.1b -- UPDATED May-15-09
-
Theyre very time consuming things, these ruby scripts.
-
If I had your math brain Remus, it might be easier. And in fact, what I have in mind to implement should simplify some of the script, while exponenetially increasing the "awesomeness" of it. But seriously, I have to learn some math first.
And I'm sorry I haven't released the version that accepts splines of any amount of segments. Its still being worked on.....grrrr
Chris
-
Guys, don't know what to tell you, the combination of working plugins by the community especially this one!! and the free transform 2 tools make sketchup more powerful than 3ds max and hopefully soon even rhino. I can't believe it, thanks alot!
-
@chris fullmer said:
If I had your math brain Remus, it might be easier.
Theehee! I just had an image of me and Chris as zombies drooling over Remus' brain. Braaaaaaain! Maaaath-Braaaaaaain!
-
Great stuff
What you should look at is this.
Can you try to let the plugin look for the highest amount of divisions in the selection, say you have 3 curves.
one has 25 divisions the next one has 10 and the third one has 6. Now instead of going manually of dividing those other curves to 25 divisions, it should re divide those other curves to match the 25 which is the most.or
can someone make a plugin that recognizes a welded line and re divide it. on second thought..its kind of an impossible one request lol
Pretty cool plugin i must say.
-
Thank you Chris.
This is simply amazing. You're really turning Sketchy into a professional tool.The version Google releases should be called "Google almost-Pro"...
GREAT WORK!
-
Thanks everyone! Silver, that is what my first idea was, but when I got into programming it, but then I decided to make each spline transpose its endpoints onto each other line. Its has a few added benefits, but its essentially the same idea. And I've got it working.
Tig, I think what I've done is similar to what you're showing there - except I have not got it erasing coplanar faces yet. This new overkill method of adding segments is creating so much more geometry than before that it is becoming VERY slow. Checking for coplanar faces at this point might not be desirable.
So its working with varying segments counts. Just every once in a while, it will encounter something that will break it. And I haven't quite put my finger on what the problem is. Because I've done some very complex shapes that work, then I'll try something more simple and it won't work. And I play around with it and determine it to be one of the splines will crash it for no apparent reason. So once I figure that out, I'll release it. With a sweet new icon from Free Agent!
Chris
-
Deleting coplanar edges is relatively quick - it just sorts the edges that are dispensable...
### assumes you have made the faces and now have an array of these new edges called 'edges' - that's all that needs checking. edges.each{|e| if e.faces.length == 0 ### for some reason it hasn't faced !!! e.erase! if e.valid? elsif e.faces.length == 2 if (e.faces[0].normal == e.faces[1].normal or e.faces[0].normal == Geom;;Vector3d.linear_combination(-1,e.faces[1].normal,1,[0,0,0])) and e.faces[0].material == e.faces[1].material ### you'll probably not need the material check, as it's all new stuff, but it's useful generally so that materials' dividing coplanar edges aren't removed... e.erase! if e.valid? end end }
Quickest way without 'a safety-net' is...
edges.each|e|e.erase! if e.valid? and e.faces.length==2 and (e.faces[0].normal==e.faces[1].normal or e.faces[0].normal==Geom;;Vector3d.linear_combination(-1,e.faces[1].normal,1,[0,0,0])) ###
-
You ruby geniuses should work together in creating ruby awesomeness... speeding up plugin creation... you know... like a softhouse... haha, I have no idea on the workflow of writing rubies, I am just daydreaming
-
-
Hi Chris,
I've been having real problems trying to download this for hours, do I need special permissions for your stuff?
I can download everything else I've tried today?
cheers
john -
My thinking for joining curves with unequal numbers of edges is this:
[list]Let's say curve1 has 3 edges and curve2 has 4 edges
Split (divide) each of curve1's edges into 4 equal bits
Split (divide) each of curve2's edges into 3 equal bits
Taking the pairs of vertices for curve1 and curve2 starting at the same end (find curve1's ends and then pair curve2 start with the nearer of curve1's ends) make edges between the vertices pairs, make diagonals between pairs with one offset so face is triangulated...
Use find_faces on the edges and you should now have a form
Smooth and erase coplanar edges... -
Nope John, my stuff is just the same as everyone else'e. I don't know why it doesn't ever seem to work for you. If you don't get it downloaded, I can email you a copy later.
Chris
-
Still no joy, tried all sort of things from this end, so if you can forward that's great,
I took advantage of selectbylength with xformclone to make a quick, low poly candy-stripe pole and then animate it spinning..link over on that topic..
cheers
john
-
incredible…. a million thanks..!
-
This looks like a tutorial subject.....
http://www.contemporist.com/2009/05/23/the-phenomena-room-divider-by-sang-hoon-kim/ -
Hi Chris,
Echoing everyone else: Sweet tool!
I have some questions based on the sample video and other examples that folks have posted. The feeling I keep getting is that for any set of curves, there is a range of possible solutions that could be the desired result from those curves and it's not clear how the tool decides what to do.
Certainly, like making a Raku pot, one can just keep trying until something nice results, but this algorithm is not random and it would be nice to have an idea of the parameters to be able to predict what the results might be like in a broad sense.
You seem to be making some assumptions about the angle of the surface as it meets the curves. For instance, in the video, you show two curves first connected by 1 segments, resulting in lines, then connected by 10 segments, resulting in Bezier curves. In that example, it looks as if the tool attempts to have the Bezier curves perpendicular (Blue-parallel) at their ends, but other examples where the curves are a bit more staggered in their alignment, the ends of the Beziers are clearly at an angle.
How is that angle determined? There is clearly something a bit complex going on.
In the example with the pleated curtain top and the simple curve at the bottom, when you introduce the middle curve, the surface goes down from the pleats and meets the middle curve smoothly and then in the lower half the pleats reappear and disappear again by the time the surface reaches the bottom curve.
Personally, I would not have predicted from any of the previous examples that the pleats would reappear in the bottom half. But they do, and clearly that is a result of the angle assumptions that you are making. Might there be settings that would restrict the pleats to only appear in the top half, or is the connection in the lower half between the two non-pleated curves likely to be always pleated because the top half is pleated?
The pleats also seem to ripple in the alternate direction from the top half, again because of some assumptions of smoothness and angles being "transmitted" across the middle curve. If there were two intermediate curves, would the middle section have pleats opposite the top section and the bottom section have pleats pointing the same way as the top? From what I see, I think so.
The result of this transmission of the pleating across the smooth curve makes the result seem more like the folds of a bamboo or reed mat or curtain rather than fabric. Fabric would never have those reverse pleats but a bamboo mat, by it's having more stiffness in one direction than the other, would certainly "transmit" the pleats across the middle curve.
This also gets to the heart of a question that was raised about joining two surfaces as an alternative to using closed curves. On 5/15, watkins posted an image of a bowl or flange shape (Full Bowl) that had circular top and and bottom and about 5 hours later showed the results of trying to use half circles to create the same shape. (Half bowl) As watkins said, "The edges are not suitable for joining."
Would the half-bowl be suitable for joining if straight extensions were added to each end of each half-circle curve and then the last column of facets deleted after generating the loft surface? Always? Only under certain circumstances?
Whether it is always or only sometimes depends on the details of what the algorithm is doing, the assumptions it makes about how it positions the Bezier curves and the angles with which those curves meet the original curves. That is what I'm asking about.
Can you clarify?
I hope this helps,
August -
@august said:
it's not clear how the tool decides what to do
Perfect, its a trade secret!
Just kidding. I'll try to explain the process I wen through to get the curves working how they are. This should clear up a few things.
The curves I use are bezier curves. You'll need to think of each curve as 4 points, much like Adobe's pen tool. A start point, a start handle, an end point and a handle for the endpoint.
With just 2 splines, I take the centerpoint of each collective spline. Then get the vector between those 2 centerpoints. That is the vector I use on each vertex to find the handle point - just follow the vector 1/2 the distance to the other point that the curve will connect to.
Hmm, it all sounds more complex than it is. I probably will have to do a video to show the workings of it.
I can also say that the reason that the version with 1 segment does not have a curve is that, well, it does have a curve. Its still using the curve calculation, but its only finding the first and last point and drawing straight lines between them. So you can't see any of the curve. If you choose 2 segments and then do it again useing 10 segments, you'll see that the middle point that is created on the 2 segment version will match the middle point on the 10 segment curve.
I'm sure that doesn't answer all the questions. But I'm also not entirely sure what all the questions are. Do you just want to understand how the curves are working? THat is what I think you're asking. I'll just have to do a video to explain that I think. I'll see if I can get one done in the next few days.
Chris
-
great tool !!
Thanks chris -
Hey guys, i was posted this on the main forum but no one seems to know or want to answer, or maybe this was asked before. But is it possible to offset a 3d Bezier curve? i.e. one that goes into the z axis?
Advertisement