ColourSpace - A schematic texture generator.

Not sure if this is the right category as there is no Tools Showcase. Here is something I have been working on for a few weeks to help rapidly prototype a wide variety of textures. The emphasis is on simplicity over power but you can still generate some pretty cool looking images. Click to run:


http://www.angryoctopus.co.nz/colourspace/screen_1.png

Controls are pretty basic, just drag a block into the schematic, right click for properties.
The blocks are very simple to code and I can think of many more I could add (Blur, Tileify, etc.), will possibly integrate Beanshell for custom blocks. The great thing about this is the library is less than 100k but can generate huge detailed textures quickly so could really help reduce distribution sizes (once I get save/load xml sorted).

Here is an example texture that took approximately 1 minute and 5 blocks to make:

Very cool, easy to use.
I think the left bar needs a scroll bar of some type.
You going to make the textures tilable?
Also you going to release a library so we use the xml files in games?

Very nice! Obviously a little limited right now but it’s got a lot of potential. A couple of UI tweeks I’d suggest are some way of deleting a placed node, and some way of selecting and dragging a whole bunch of nodes at once (I kept going off the top of the canvas).

Yeah, very alpha. I do plan to clean up the UI (scroll bar for the palette, delete block option etc), and once save and load (and javadoc) are implemented it should be very easy to integrate into a game, will probably try to get it sorted this weekend. I have quite a few ideas for extra blocks and I think a seamless tile will definitely be in the next release.

This kind of tool already exists in the software “Art Of Illusion”, doesn’t it?

I’m sure several similar tools exist, this is nothing new. Mine is geared towards towards what I need, which is a simple editor that I can easily integrate into games using the schematic information only (to cut down on distribution size). After a quick look at the Art Of Illusion one it seems to target quite a different audience. Also I haven’t seen one yet that thumbnails each step of the generation (which I consider important).

Looks like what WorldBuilder has, including thumbnails of intermediate results.

The only disadvantage to your approach might be that it doesn’t ‘scale’ very well. Not in terms of performance, but in combining loads of effects. The shape of combining effects seems to be fixed, where as WorldBuilder has wires to connect everything.

Good job though!

This is pretty neat! Sort of difficult to work with, but I like it so far.

Riven: Yeah the shape is fixed at the moment which I did for simplicity sake. Later I plan to have the inputs auto-spread if you add a 2-input block that wont fit, shouldn’t be too difficult. Another option is to add a composite block (a block with a schematic inside it). My primary goal was to have a low entry barrier and limit parameters to small logical set. Once again very alpha, was just hoping to get some feedback on whether the 1.0 version could be usefully to anybody.

Demonpants: Hopefully once the standard select, delete etc. tools are in it will be more usable.

This is really good so far, very easy and fun to play with.

Any progress, this is just too great to let die!

Kev

Nearly done. Man polish takes ages. Also trying to reduce lib dependencies to zero (no jdom) so unfortunately have to use:

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Vs:
Document doc = new Document();

Sometimes I have difficulty defending the quality of the Java standard library…

Nice place for the Factory pattern.

Code that line once, and call it from everywhere

New version up, go here to get a downloadable library version. Not fully polished yet but should now be usable. Once you have finished your schematic you can load/render as follows:


  Schematic sch = new Schematic();
  sch.load(new FileInputStream("schematic.xml"));
  BufferedImage output = sch.render("Output");

Note that all Image files the schematic uses must be added with addImage(String name, BufferedImage img) prior to calling load (the optional default images are added automatically if they exist in the classpath). The string parameter in the render method is the name of the Output block in the schematic. You can have multiple output blocks per schematic.

Edit:
Also forgot to mention, if you come up with any really cool textures using just the built-in images can you post them, I am going to compile a collection of examples for the next release.

Off topic: Riven, what is that signature of yours? It’s somewhat scary… :>

On topic: Judging from the posts this seems like it’s pretty cool. I’ve been meaning to try it for some time but haven’t yet :slight_smile:

Off topic: It’s just a site to see how well/bad my HTTP api is working out. It also serves my avatar, so it gets loads of hits. The ‘scary’ form is just to see whether POST works. When I get time, I’m going to add sessions, for no apparant reason.

Oooon topic:
The point with these tools is that it’s very easy to get interesting random results, but very hard to actually get what you want. From a development point of view it’s the perfect project to do - lots of focus on the algorithms and architectural stuff, I wouldn’t want to use it to create textures for a game though :slight_smile:

Obviously if you know exactly what you want and are adept enough with no distribution size constraints Photoshop is a better option. However once you have been playing around with these sorts of tools for a bit it’s surprisingly easy to get at least a rough prototype texture of what you are after. A good flow is to have a noise->stretch->fractal->amplify as the top input to a modulate block with the bottom being and Image with the colour profile you are after. You can tune the feel of the texture with the top blocks and the colours with the bottom block. Hopefully I’ll get a full list of standard texture schematics (grass, stone, metal, snow, dirt etc.) shipping with the next release and you can just use it as an ultra-compressed texture set. This is really targeted at people who don’t want to learn Photoshop or are aiming for small download sizes.