[Plugin] SurfaceGen (0.9.0b) — 28 April 2012
69 posts
• Page 1 of 3 • 1, 2, 3
[Plugin] SurfaceGen (0.9.0b) — 28 April 2012SurfaceGen v0.9 (Beta)
SurfaceGen is a plugin which allows you to create surfaces from mathematical formulae. There are two modes supported: Function Mode The Z coordinates of points in a heightmap are specified as a function of X and Y. There can therefore only be one Z value per X, Y coordinate. Equation Mode An equation relating X, Y and Z is given. This mode can graph any 3D surface for which there is a formula, but may take slightly longer. The marching cubes algorithm (wow that one is a pain to implement!) is used to generate a surface around a 3D grid of data generated from the equation. Instructions - Select the SurfaceGen tool from its toolbar. - Click to set one corner of the graph. - Click again to set the opposite corner on the same level. - Click a third time to set the height of the graph. - You can transform the resulting group without causing problems. - After creating the graph and it becoming selected, the SurfaceGen Options window should appear. - Set the axis ranges, the SurfaceGen mode and enter an equation. - Choose if you want to show the graph boundary. This will make a semi-transparent box around the graph. The sides facing the camera will always be invisible as you rotate the camera allowing you to see the surface. - Choose if you want the graph to be smooth. - Click generate. This may take a few seconds, so be patient. It will happen asynchronously, so you should still be able to move the camera around. - You can set the surface material by using the paint bucket on the group. The surface will become the selected material. - Opening the group will cause the graph to turn into a normal group. The plugin will ask if you really want to do this before it actually happens. Install Download and extract the attached zip file to your plugins folder. Please remember this is still in beta! I want to hear about any problems you encounter! Update 0.6 - Updated to work with SketchUp 6 Update 0.7 - Updated to be more compatible with Macs Now uses built in functions to locate resources and combine paths. Also uses WebDialog.show_modal on macs to get always-on-top behaviour. - Added more functions abs, min, max, clamp can now be used in an expression. - Allowed expressions in axis ranges You can now easily graph from -pi to pi etc. - More error checking You will be notified if an expression is invalid, and hopefully some useful information about why it was invalid will given. Update 0.7b - Added point validation to getExtents for the graph tool The ruby console shouldn't show any errors when drawing a new graph. Update 0.7c - Fixed expression parsing bug Previously, using the same function twice in a row didn't work: sqrt(sqrt(16)) due to the regex used. Now it does. Update 0.8 - Changed use of pt units to px units in WebDialog The font should display at the same size in all browsers. - Now works from any directory Resources are looked for starting with the directory containing surfacegen.rb. - Can more easily change WebDialog size The width as well as the height are constants in surfacegen.rb Update 0.9 - Increased speed Previously "eval" was used to evaluate the expression at each sample point, now it uses "eval" once to create a proc object which is called multiple times. Please, register (free) to access all the attachments on the forums.
Last edited by thomthom on Sat Apr 28, 2012 2:56 pm, edited 11 times in total.
Reason: Added version number and time of update in title
Re: [Plugin] SurfaceGenHi, Diggsey:
This looks interesting. You are off to a good start. I take the slow, deliberate approach in my aimless wandering.
Re: [Plugin] SurfaceGenDiggsey, this is neat! I just started learning this week how to generate implicit surfaces using equations in Meshlab, and I've been importing them into SU - now I can do it all in Sketchup
On that note, do you have any ideas I can use as starters/seed equations for generating neat surfaces? What kind of math would I need to brush up on to understand this stuff better? For now, I'm just playing, but I have dreams of making some beautiful math sculptures like Bathsheba Grossmanmakes. Here is a little test I did, using the settings shown in the screenshot. Did I say thank you, Diggsey? Please, register (free) to access all the attachments on the forums. "There is a man in the world who will never be turned down... he is the man who delivers the goods."
Re: [Plugin] SurfaceGenHeh, here's a truncated sphere, settings shown...this is fun!
Some suggestions: -When switching to "Equation", change the default settings to something that will work just by pressing "Generate" -Add a random equation/function generator, perhaps using preset equations -Add an error message when the equation is invalid, pointing out why its invalid if possible Like Jean says, just ideas... Please, register (free) to access all the attachments on the forums. "There is a man in the world who will never be turned down... he is the man who delivers the goods."
Re: [Plugin] SurfaceGenDiggsey, where have You been so far!! We need You! Keep up surprising Us! Thanks!
Re: [Plugin] SurfaceGenHere's a question for you...is there a way to make the SurfaceGen geometry look like the first Meshlab image? I'm using the same equation, and trying to get results like changing the voxel size in Meshlab, but changing the # of cells in SurfaceGen doesn't seem to have the same effect...am I doing something wrong?
BTW, I like how the settings are saved for each generated surface!! ![]() Please, register (free) to access all the attachments on the forums. "There is a man in the world who will never be turned down... he is the man who delivers the goods."
Re: [Plugin] SurfaceGen
Re: [Plugin] SurfaceGenGreat links, Pilou! Thank you
"There is a man in the world who will never be turned down... he is the man who delivers the goods."
Re: [Plugin] SurfaceGenVery nice plugin.
Thomas Thomassen — SketchUp Monkey & Coding addict
List of my plugins and link to the CookieWare fund
Re: [Plugin] SurfaceGenIn the V6 don't works
Works fine in the V7 Please, register (free) to access all the attachments on the forums.
Re: [Plugin] SurfaceGenThanks everyone who commented!
@d12dozr I've no idea how to make such complicated structures as those ones you linked to, but you can get some interesting shapes by just mixing up a few of the built in functions: sin, cos, tan, sinh, cosh, tanh, asin, acos, atan, asinh, acosh, atanh, atan2, hypot, sqrt, cbrt, log, log2, log10, ln, exp and constants: e, pi
I'll just make the default equation something that will work for both modes.
That could be interesting. Perhaps the user could choose a level of complexity and it would use that many operations.
Showing an error would be possible, but it might be difficult to point out where. It depends on how much information ruby gives me. For speed, the equation is converted into ruby code, so I can just eval it for each point instead of running my own interpretter.
I don't know exactly how Meshlab works internally, but it seems like the voxel size is equivalent to the range of values divided by the number of cells. ie: voxelSize = (max-min)/cells I'm surprised it should look so different though, just by changing the voxel size. @Pilou I've found the problem. It won't let me pass a hash to WebDialog.new.
Re: [Plugin] SurfaceGen
Additionally, SU6 only accepts one argument for model.start_operation. I've used this wrapper:
The operation will run slower under SU6 - but at least it runs. Thomas Thomassen — SketchUp Monkey & Coding addict
List of my plugins and link to the CookieWare fund
Re: [Plugin] SurfaceGenThanks thomthom, but I've just used a rescue statement so it will fallback on the older version if the newer one fails. The first post has the updated version which works with v6.
Re: [Plugin] SurfaceGenThere are also a few error-messages appearing in the Ruby Console that needs traps or begin/rescue forms [e.g. after you explode a special group]...
Some of them relate to your 'recurve' too... But it's a neat tool TIG
Re: [Plugin] SurfaceGenI've tried doing everything possible and can't seem to get any output in the ruby console from either plugin. Can you tell me exactly how to reproduce it?
Re: [Plugin] SurfaceGenNice! Can't wait some more complex math sculptures... and naturally even more functionality, like with K3DSurf.
Little test... Please, register (free) to access all the attachments on the forums.
Last edited by notareal on Fri Apr 29, 2011 5:01 pm, edited 1 time in total.
Welcome to try Thea Render, Thea support | kerkythea.net -team member
Re: [Plugin] SurfaceGenFor example...
When right clicking a tagged 'surfacegen-group'. Explode the special surgfacegen-group and right-click gives
Erase that 'bounds' Instance then Select the surface...
These all relate to 'recurve' reaction to 'surfacegen' entities ? I did have a surgacegen error but I can't get it to reproduce now TIG
Re: [Plugin] SurfaceGen
Thank you for this, and considering my suggestions too! "There is a man in the world who will never be turned down... he is the man who delivers the goods."
Re: [Plugin] SurfaceGenIn the V6
We can draw the "Box" but dialog's window don't opening No error message, nothing in the Ruby console
Re: [Plugin] SurfaceGen@notareal
That's really nice! What's the equation you used? @TIG Make sure you have the latest version of Recurve. I fixed that bug with the last update which is why I couldn't reproduce the error. If you ever get the SurfaceGen error again let me know. @Pilou Just re-select the group with the select tool. It seems that the SelectionObserver doesn't fire when the selection is changed in code.
Re: [Plugin] SurfaceGenYou are right, in that when I get v1.4 of 'recurve' I no longer get these errors with 'surfacegen'. However, I had v1.3 [with SUpv8] and there were no major changes except for making it SUpv6 friendly ?
Anyway... no more error messages... I'll try to break it TIG
Re: [Plugin] SurfaceGenSponge-like object:
Please, register (free) to access all the attachments on the forums.
Re: [Plugin] SurfaceGenthis is great,
some odd behavior on the Mac... when run from plugins (like you should) I get this
if I put the surfacegen.rb into the folder do a restart and then load from Ruby Code Editor, I get this
but if I restart again and use as_pluginloader.rb to load it I get
it works, but has no tool button image... Please, register (free) to access all the attachments on the forums.
Re: [Plugin] SurfaceGen
There is plenty more at the k3dsurf forum. Welcome to try Thea Render, Thea support | kerkythea.net -team member
Re: [Plugin] SurfaceGenPerhaps you could add some more functionality; like functions min, max and abs. Also allow use of arithmetic operations and pi in axes, like -2*pi.
Welcome to try Thea Render, Thea support | kerkythea.net -team member
Re: [Plugin] SurfaceGenYou already have 'pi' [in lowercase] as a function?
Please, register (free) to access all the attachments on the forums. TIG
Re: [Plugin] SurfaceGen
The SelectionObserver has always been very buggy: http://www.thomthom.net/software/sketchup/observers/ Thomas Thomassen — SketchUp Monkey & Coding addict
List of my plugins and link to the CookieWare fund
Re: [Plugin] SurfaceGenJust uploaded a fairly major update to the first post!
@driven This should fix the issues with macs. It now uses cross-platform methods to locate and load resource, and uses show_modal rather than show on macs with the WebDialog. @notareal The axes now let you use an expression such as 2*pi @d12dozr Helpful error message are now shown when an expression is invalid.
Re: [Plugin] SurfaceGenThanks
Line #270 result.add @p0 if @state >= 0 can raise an error so adjusting it to return if !@p0 or @p0.class!=Geom::Point3d; result.add @p0 if @state >= 0 might help - you could also add similar validity checks on the other points that are added to the extents ? TIG
Re: [Plugin] SurfaceGenAh, I knew I'd forgotten something
I've updated the first post. It shouldn't show those errors anymore.
SketchUcation One-Liner AdvertsNeed Authorised SketchUp Training by experts in various disciplines? Check out our Training details.
69 posts
• Page 1 of 3 • 1, 2, 3
|