[Plugin] Extrapolate Colors v1.0
-
All right, here's a new script called Extrapolate Colors.
Description This script finds materials used in a set of selected faces, and then randomly applies those same materials to all selected faces that have no material applied.
Usage Run the script from Plugins > Chris Fullmer Tools > Extrapolate Colors.First select a series of faces, at least one needs to have a meterial applied to it. Then run the script. The script will find all materials in the selection (only materials applied to faces though). And it will randomly apply those materials to all faces in the selection set, leaving faces untouched that are already painted.
Note that the script works on raw geomtery. It does not work on groups or components (but it does work on raw geometry inside a group or component if you are editing a group/component).
[flash=500,448:2kcfn22o]http://www.chrisfullmer.com/forums/extcol.swf[/flash:2kcfn22o]
I am hosting this script on smustard.com. It is a free download:
http://www.smustard.com/script/ExtrapolateColorsHope its useful,
Chris
PS I've Got quite a few color scripts. I might package them all togther, with some added featires intoa Web dialog based color script and charge a little for it. We'll see though.
-
Very tricky pattern randomizer
A start of a new lists of crazzy plugins? -
thanks Chris. . .Another winner.
-
thank you sooooooo much chris for all your wonderful rubies!!! i'm working on a pool with glass tile blend and this is just perfect!!!
-
Nice one Chris.
-
Thanks Dave, Trillium, and Eric.
I already see places to tweak it and make it better.
For example, currently if you have a face that is cut in 2, but the dividing line is hidden/smoothed, it still counts as 2 faces. I would prefer if the tool determined what a "face" was the same way that the selection tool does. It adds all faces together that have smoothed edges.....if that makes any sense.
Anyhow, I know Fredo already provided me with a snippet that will help fix this. But it will take a little while to get it worked into my script. But I might do it today, because I could really use the fix for a project I'm working on
Chris
-
Thanks Chris this will be very helpful and a lot easier than the random painter method.
-
This is great! It reminds me on an atlas: There exist also (complicated?) mathematical algorithms that prevent neighbouring faces from having the same color.
-
@Aerilius - I had not considered it, but that would be an interesting idea. I'm not sure what the algorithm would be, but there is probably something online to describe it.
@Adam - I was waiting for you to chime in. I think this script is useful for a lot of things that us landscape architects do. I hope you find it useful.
The plan is to put it into a webdialog with a few more feautes, better control over the amount that materials should be applied, overwrite existing colored faces, redoing it (in case it comes out a little wrong the first time so you can quickly re-apply the textures), etc.
Hopefully in time I'll get the mode in-depth version made.
Chris
-
I guess I am more curious about if the pavers shown in the video were hand-made, or made using a plugin?
-
I cut them with my lazer eye vision.
or I might have drawn them all by hand using the freehand tool, and lattice-izer to do the offsets for me. Then Shapebender to put a nice light bend to my path.
I am still thinking about ways to do procedural hatches in SU - for things like brick and stonweork and all sorts of hatches.
Chris
-
Chris,
As soon as I saw the plugin in use, I thought of procedural hatches as well and how nice it would work with them. I have a repeating flagstone pattern that I made and which I use to make a hatch manually for certain projects. I ran it through lattice-izer and then ran extrapolate colors on it and it work like a charm. I'm stoked about the results. Thanks again.
-
Awesome, that looks really good Adam! I hope this little script saves you time in the future. Its already saved me a bunch!
Chris
-
Chris...this is a stretch, but could the script be tweaked to also work with groups and subgroups? If you were to have a group of bricks consisting of each brick as it's own subgroup and you wanted to random texture each brick, would it be possible to extrapolate the colors from 3 or 4 groups and randomly distribute them to the other groups, doing so in a way that all geometry within the subgroup be textured with the same material, but randomly painted from one group to another?
Like I said, I know it's a stretch, but it would help me a lot.
-
Yeah, that is something I would like to add. My question is hsould the script only sample materials applied to the outside of groups? Or should it search all the geometry insde of groups and use all materials found?
Should it then apply materials to the geometry inside groups, or should it just apply materials to the outside of groups?
I was thinking that it would only sample materials applied to the outside of groups and components, and then only apply them to the outside of groups/components. This method would make it easier to apply a single material to all faces of a single group. But it would be impossible to apply different materials to each face in a single group.
I could theoretically add toggles and switched so that the user could specify each of these possible variables. It would have to be done in a web dialog, but that is my current project. So maybe I could try to work all these options into a single web dialog version of this script (which I'm working ont at the moment).
Chris
-
I found something about painting no two adjacent regions with the same color. I twas used in the past for maps when printing techniques did not allow a large color diversity.
http://en.wikipedia.org/wiki/Four_color_theoremI think the script would need to check each face's neighbouring faces.
-
Wow, great work there chris!
Indeed much easier to use than the randomize color plugin, which already was great by the way.This is the first step to having Procedural texturing in Sketchup.
Fantastic!Thanks!
-
@chris fullmer said:
Yeah, that is something I would like to add. My question is hsould the script only sample materials applied to the outside of groups? Or should it search all the geometry insde of groups and use all materials found?
Should it then apply materials to the geometry inside groups, or should it just apply materials to the outside of groups?
I'd imagine applying to the outside would be much easier to code. That would work for me. Vray for Sketchup hates materials applied to the outside of groups, but I usually run Matt666's Remove CG Materials script to transfer those materials to the inside of the group before using VfSU anyway.
The web dialog sounds promising. In Max, there is a material by element modifier that I use to do this task. It gives you a dialog with two options.....either Random Distribution, or By Frequency. The By Frequency option lists the materials according to their material ID # and lets you adjust a percentage number for each material to determine how frequently it shows up in the assigned mesh. You can also set the material ID # of each element (group) within a mesh and assure that that element will only get one material, while the others get random. In the example of bricks, the mortar joint would be set to an ID # that get's 100% frequency, while the bricks may get an ID set to 4 different textures distributed at 25% of each.
-
require 'Sketchup.rb'
Come on, Chris!
-
@jim said:
require 'Sketchup.rb'
Come on, Chris!
I'll try a little Jedi mind trick like ThomThom...
You saw nothing wrong Jim. Redownload the script, you'll see there is no sloppy bad-coder typo there. There is nothing to see.
Chris
-fixed and reuploaded, thanks Jim! That fixed a menu bug I was experiencing too.... Man I am bad at this programming stuff, and I think I'm getting worse!
Advertisement