Gyes : RMG and RTG ( Random Material and Texture Generator )

the wiki will explain everything to you.

http://wiki.blender.org/index.php/Extensions:2.5/Py/Scripts/System/Gyes

Have fun

awesome, thanks kilon :slight_smile:

New update for my script now it makes more interesting material, still long way from finished. See First post for Details.

New update now Gyes is officially an addon , installs like any other addon and remains loaded each time you run blender, no need to reload anymore.

Brilliant add-on, dude! Works great! Thanks a lot! I’ve found it useful already!

If I could make one small suggestion: how about having an option allowing you to parametrize the kind of random changes? For example, just say if I wanted a random matte material instead of a random shiny or transparent material. I know this kinda defeats the purpose of randomization, but if you could control the parametrization a little bit, I think that’d be a nice little option. Does this sound doable?

Actually I want make this clear for anyone viewing this thread, the script is far from finished , and I am far from quiting with this script . So expect alot , of massive changes in the not so distand future.

The code alone is updated almost daily, which means you can keep dowloading it from the same link and it may have new features almost every day. Already I have added 2 new features (2 very important features if I may add) , which are mentioned in the link, but i have not mentioned them here cause I dont want to bump this thread everyday for minor updates. I would rather collect all minor updates to a massive update thread bump.

The feature you request , not only is doable, not only it makes perfect sense , but is something I have been meaning to do from day 1. My goal is giving the user , not only an ability to control some of the randomisation, not only to have full control of the randomisation but also the ability to create templates of randomisation. For example lets say a randomisation template for “oak wood” , that means that some parameters in order for the material to look like oak wood will have to be inside strict specific ranges with the randomisation never exceeding these ranges. The user will given the ability to create such templates and use them for the creation of random materials that make perfect sense , are artistically usable and are what the user wants. I am also thinking making the script upload these templates online and download them automatically so any user can have access to any template made by another user. Maybe even implement a rating system for those templates.

Randomisation also will extend to node materials and node textures, making a complete solution for the end user.

There are many many more ideas I have that are 100% realistic 100% achievable by my current level of skill and free time. But I cant promise any deadlines as I am new with this API and not an experience python programmer. I am slow, but I can make things happen. Wont reveal any more of my crazy plans, cause I dont want to excite people with vaporware. But rest assured I am full of crazy ideas as a person, I am sure this script will fall victim to many of them.

So please bare with me.

New massive update. As was heavily requested, now randomisation is more focused , you can now choose what parameter of your material is randomised. See second screenshot for the new improved GUI

Also now randomisation does not create new materials, it randomises your assigned material directly.

With this new update now you can randomise multiple objects. Just select multiple objects and hit randomise. Warning !!! Each object will NOT share the same random material, each will have its OWN UNIQUE random material.

I hope you enjoy this addon

New big fat update.

Its fun to create random materials, but there are time you want to go back in time and choose that nice random you made. Till now it was not possible, you could undo the parameter settings that gyes changed but not bring whole randoms back.

I present to you the ultimate time machine tool. The “History” . How does it work ? Now random materials, are stored in history. History is in essense a sophisticated undo tool. Each random material stored in history has its own index, index is the number assigned to the random material stored in history. The activate button activates that random material chosen by index, by assigning it to the object.

Now nothing is lost.

Have fun

PS. Testing this script and reporting back, you help this script improve and evolve. So dont be shy, be a beta tester , and lets make this into an amazing script.

kilon very cool! now it would be sweet to implement something like:

  • Colour Coordination:
    something like http://kuler.adobe.com/. Useful for generating colours that are
    not random but (subjectively) complementary. Think of uses in interior design and a plethora of Arts…

  • Set a range:
    like bricks, tiles, grass… to get slight variations on one colour and other subtle properties.

  • With n objects allow for a maximum of number of materials.
    grass, tiles, foliage, bricks…and if n is large, then it might be nice to constrict the number of new materials.

  • Create unique material for each selected object:
    a button at the very top.

glad you liked it :slight_smile:

  • Colour Coordination:
    something like http://kuler.adobe.com/. Useful for generating colours that are
    not random but (subjectively) complementary. Think of uses in interior design and a plethora of Arts…

My next feature “Templates” Will take care of that , see a previous post of mine that explains what templates are going to be how they will explode the usefulness of Random Material Generator.

  • Set a range:
    like bricks, tiles, grass… to get slight variations on one colour and other subtle properties.
    Again templates will take of that too. And if I can I will add node support for templates too. Both material and texture nodes.
  • With n objects allow for a maximum of number of materials.
    grass, tiles, foliage, bricks…and if n is large, then it might be nice to constrict the number of new materials.

limit the amount of materials with multiple objects. Hmmm , I will have to think of that abit more. Thing is , that I dont really create new materials, what I create is “presets” of material which are nothing more than python data, not blender data, the reason is that this way I dont create a mess inside blender , everything is hidden from the user and takes place internally inside my script. Its also faster too.

Your feature be could implemented though, if I make the “activate” button from history apply to multiple selected objects, that way you would be able to assign one random material preset to multiple objects. Its doable, will include it in my next update.

  • Create unique material for each selected object:
    a button at the very top.
    No need for that, RMG Gyes from the previous version is smart enough to know when you selected multiple objects and creates unique materials for each one. No need for separate button keeping GUI simple and clean. The way I like it.

Also History works with multiple objects too. That should make you even more happy :wink:

Also when you say grass you mean texture ? Because grass is usually made with hair particles.

looks like you have all bases covered then!

hehe far from it my friend.

Far from it.

I have loads of crazy plans about this script.

But the great news is that I am moving… figuring out GUI was a huge pain, I think I nailed it now, at least the basics , implementing new features was way easier. But the template feature will take some time till its finished. Nice thing none is paying me so there is no need to hurry :wink:

Another update. History tool has been finalized. What you can do now, is browse through history with “next” and “previous” buttons which are much quicker than “Activate” if you browse history one after the other. Now you can store changes to your random material you made by hand or even completely custom material you made yourself , making history a super powerful and useful tool for storing any kind of material presets. “Store” button does the above (see second screenshot on first post). If that does not make you smile , nothing will :wink:

Now I am ready to start implementing the “templates” feature.

Here are the updates

9-6-2011

*“Activate” button works on multiple selections

  • added next and previous button to browse through history

  • Added Store button to store random and non random edits to history

  • Script allows storage only on non-empty history index or the first empty history index

  • optimised code to make it more readable and faster

  • added comments to explain functionality


Hey Kilon, Been playing around with your script very cool.:yes::smiley:

wow … beautiful !!! lighting is almost perfect

hey there, i added 3 new buttons to my script (see screenshot in first post) . “Delete” button deletes one index from history. “delete start” and “delete end” deletes a group of indices. “Delete start” defines from where the deletion start and “Delete end” where the deletion ends. You dont need to press “Delete Start” if you want to delete from the very first history index , just press only “Delete End”. Both “Delete Start” and “Delete End” take the current index as their selection. When a deletion takes place all indices after the deletion point are pushed back, in short the deletion never leaves empty indices between your indices.

Those delete tools will help you keep your history , clean and organised. And remember History is not only for random materials, it can store any material as long as it uses the basic settings that are randomized by the script. However its more likely that in the future the history will even store material that use all the settings/parameters , and even materials that use nodes. But I will keep you posted.

After a request from a friend I posted a video explaining what my scripts does , how to install and how to use it

New update. I added percentage randomisation. Now you can control how much random your material is . You can randomise existing material as much you want. GUI update, click on Mode and it will navigate through several pages of the GUI. “Percentage” page will give you even more option to apply specific percentage randomisation to specific parameters, all other parameter not covered by the specific percentages are covered by the general percentage. When a specific percentage is zero, the general percentage is used instead for that area. When a specific percentage is not zero then general percentage is ignored and specific percentage is used instead. If you dont want to randomise that area at all, in “simple” page use the corresponding button to completely disable that area , the percentage slider will also be disable in the “percentage” page.

Percentage randomisation means that the parameter is randomised inside a range of percentage of the full range of the value. For example a 50% randomisation of the specular intensity means the following :

specular intensity start from 0 and end 1 , 1 being the maximum value , 50% of 1 is 0.5 . If your existing specular intensity value is 0.3 then randomisation will range from 0.05 to 0.55 , which mean it can be any value that exists in this range which is a diffirence of 0.5 or 50% of full range. Of course randomisation takes always the current value as starting point so the next randomisation will use the current randomised value. Randomisation is always 50% of the specific percentage bellow the current value and 50% above . If the percentage exceeed minimum and maximum values of the full range, then it will default to minimum and maximum accordingly.

here is the new gui percentage with mode button.Click on the mode button to navigate through the diffirent GUI pages.

http://i47.photobucket.com/albums/f180/TheKilon/percentagemode.png

There is a “help” gui page that offers a summary help for quick reminder of the functionality. “Template” page is empty as templates are yet to be implemented. “Simple” page has the old enable disable checkboxes which I have replaced them as enable / disable switch buttons (enable / disable randomisation for a specific group of parameters ) along with a general percentage that for convenience also exists in percentage page. I hope you find the new additions helpful and easy to use . Have a nice day.

As always you can download the script from here – > https://github.com/kilon/Gyes

this just keeps getting better & better :slight_smile:

Thank you my friend. Did 3 minor updates, one fixes a nasty bug that did not allow the script to load on startup as addon and another one where for some reason the register_module functions fails in future builds from graphicall,org after the official 2.58a from blender.org . I have replaced it with register_class() for each class i use so it should work now and for every future build.

However both problems were critical to the execution of the script so I had to bump the thread.

After a complaint I changed the “mode” button , to a list box to make it more visible and easier to use , blender developers need to fix the menu button (prop_enum_menu()) to make it more visible.

I also reorganised the file structure. Now everything is located in a folder called “gyes” just copy paste the entire folder to your addon folder and you will be fine. Inside gyes/doc you will find gyes.pdf which is the official Gyes Manual. I no longer support wiki as its difficult to work on both (Wiki and Pdf) at the same time , that means that wiki will no longer be updated with latest features. The reason is no longer called “gyes random material generator” is because I decided instead of creating several scripts that do diffirent things, to unite all of them in one add on script that will make installation and activation alot easier, so that means that gyes will be alot more than just a random material generator in the future. I plan to finish a new script every year.

The download link has not changed, remember you can use the same link as it always has the very latest update and I am constantly uploading new updates everyday that I dont report here as often cause I dont want to bump this thread unnecessarily.

Here is the download link => https://github.com/kilon/Gyes

Here is a screenshot of the new mode button

Simple mode :

http://i47.photobucket.com/albums/f180/TheKilon/newmodebutton.png

Simple Percentage Mode :

http://i47.photobucket.com/albums/f180/TheKilon/simplepercentage.png

Help mode :

http://i47.photobucket.com/albums/f180/TheKilon/helpmode.png

!! Important Note !!

With the as always helpful guidence of ideasman from #blenderpython I was able to download the source and build the latest blender release. From now on this script will support the latest build release of blender and not just the official release from blender org. So it should work for anyone who wants to use the latest build from graphicall.org . I will keep updating my source and rebuilding blender to satisfy this requirement and will upload the builds to graphicall.org that will come included with my script.