While searching teh web for new texture synthesis ideas I discovered a cool texture generator called NeL Texture Editor. It's created by a guy named Hulud from a demo group called Digital Murder.

Right until now my main inspiration for Gentex was the famous Aardbei Texture Generator (ATG), and the accompanying Hugi #18 article by Ile. Gentex' nodes are based on the effects that were present in Ile's texture generator. But Gentex' connected-nodes-network view is completely different than ATG's static-4-layer view. That's were I wanted Gentex to differ from the oldschool systems. (I think ATG's GUI, with only 4 preview views and the use of an effect stack kind of sucks and limits the functionality of the tool...)

But this new texture generator tool, NeL Texture Editor, looks a lot like the tool I want Gentex to become. (Although it does lack a good looking GUI :)). Next to having lots of available nodes, it also uses a graphical network structure. Just like Gentex does :) So I've been analysing NeL's features to see what I could use in Gentex, and I've come up with the following cool stuff:
  • Each node should have an extra input port, and two extra properties: "Blend mode" and "opacity". This way you can chain nodes together, blending one on top of another one. Without the need for a seperate Mixer node. This simplies the network.
  • The Mixer node I currently have, should be converted into a Masked Mixer. Should take a mask as an input.
  • I'll need some new nodes:
    • AlphaSetter, 2 inputs. It will combine the RGB of input 1 and the alpha of input 2.
    • Cells, 0 inputs. It will need a mode setting, to choose between "cells", "diamonds" and "blobs" mode. Especially the diamonds mode looked very cool in NeL, so I should implement that too :)
    • A vector art node, 0 inputs. To generate coloured line drawings. Very useful basic building block.
    • A sinus pattern, 0 inputs. Together with the already planned displacement you can create cool wobble effects. And it's usefull for other purposes too I guess.
    • Gradient image. Map the color(s) of one image into some other range.
These are all just ideas. But I'm planning on implementing them soon. Hopefully I have some spare time next weekend :)

No more invalid cables


I've implemented a 'valid-cable' check which forbids the creation of cables that are plain evil. Such as cables that start and stop on the same node, or cables from an output to an output, or from a source to a source, etc... While drawing wires the colour of the wire can change to grey, indicating that this cable is invalid.

Of course, you can still create all kinds of invalid feedback networks using more than 1 node... but that's a bit harder to check :) (so I won't ;))

Also implemented an option to double or half the size of a single node. This only works on a single node (you cannot select more than 1 node at a time). And it also breaks all invalid connections to and from the node. Not all nodes like to get connected to a node with a different size... which instantly invalidate the cables to the newly resized node.

I'm planning to create a "resize nodes" dialog, in which you can a selection of nodes together. But I'm not so sure if that's really needed at all.

Color pick0r and import/export support


This weekend I've been working on a colour picker dialog. It was needed for my subplasma node (so you can change the color of the plasma), and probably for many future nodes too. I've made my own color picker dialog, nearly identical to Photoshop's color picker :) (it's still not finished though, still have to add HSV support to it, and a color-copy-paste option).

I've also finally implemented import/export options. You can now actually save and load materials to and from XML files. (please don't edit them by hand, my input validation is very borked! :))

You can download my latest build here, together with a grass texture I made (the one from the screenshot above):

Some bugfixes and a sub plasma


Had a day off today so I had some time to work a bit more on Gentex. I've fixed some stupid bugs and added some new features. One thing I added is the option to rename a node. Could be useful when you have huge networks with nodes all over the place ;) I'm thinking about adding special comment nodes too. So you can add annotations to your network, could be even more useful...

Ohw and I've added a subplasma node. You can see it here on the right. It puts random values on a grid and interpolates (using Catmull-Rom interpolation) in between. You can modify the grid size and the random seed. I also want to add a colour setting, but I first have to create a property editor for colours, something like a colour picker :)

My first texture


This weekend I've been working a bit more on Gentex. It's finally capable of generating a texture :) (It's shown here on the right). It's not much, but it's okay for a start.

Most of the things I've added this weekend are GUI things to make life a bit easier. I've added a small help window with info on the controls, since they aren't quite standard (unless you're used to Maya's controls). Next to that you can now probe any node in your network. With probing I mean showing the internal result buffer of the node. This is useful for tweaking your texture. Well also added some other things, like a "reorient view" option and a context menu per node, but those are just GUI refinements.

I've also started a Todo list (which you can find here, and also on the menu bar on the right). This way I can write down my ideas somewhere and also keep track of my progress.

Last of all I wanted to add my current version of Gentex, as a standalone program, as a download:
GentexEditor-21052006-2107.exe (you'll need Windows 2000/XP to be able to run it)

Windows API sucks


Hmm, I really should stop using the Windows API... I keep using it for most of my projects, Gentex included, but it really gets frustating now :( It took me a whole evening (~3 hours) to get my scrollbar working. Not that was very hard, but I also had some trouble with my nasty SetWindowLongPtr calls... well. blegh. Really have to take a look into MFC, or GTK or QT.

But anyway, got my first integer editor working now.

Operator editors


Had some spare time (finally finished my shortpaper for SIACG2006 yesterday) so I've begun working on operator editors in Gentex. Each node has several parameters you can edit when you select it. The image to the right is my first test-editor. When you select a checkerboard node you get that editor :) The idea is to have a couple of general purpose controls which you can use to build up editors for all nodes. At the moment I only have an integer value editor control, which is just a scrollbar with a label in front of it :)

It's still not working completely, but as soon as this integer editor thingy works, I'll start working on a string editor, a boolean editor and maybe an enum editor. In the future I'll probably add some more advanced editors, like a colour editor (with a nice colourpicker on it), a multi-line text editor (with support for multiple fonts and colours) and maybe a vector drawing editor....

Rendering support


Got the rendering code of Gentex working now. It will only update changed (dirty) nodes and all nodes depending on dirty nodes.

Also added resultwindows to Gentex. You can now see the resulting texture in a separate window, and it gets updated when you render your network. At the moment only the resulting image in the end-nodes (the "collector" nodes) can be shown in a resultwindow, but maybe it's useful to be able to attach such a resultwindow to any network node... that way you can kind of probe the intermediate results. But that would only be a nice extra for later.

The next step will be to implement the editing of node parameters. Atm you can not change any of the settings. I also have to implement the auto-render-upon-change feature.

Progress logwindow


Today I've added a progresswindow (or log) to Gentex. I wanted to start on the rendering stuff, but I needed some log and a statusbar to display the rendering progress, so had to make those first ;)

Also got the resultview working yesterday. Altough nothing is shown there, since I still have to write the rendering code. That's my next point of attention, to get the rendering code working.

About me

Project overview


Last posts


Partners in crime


ATOM 0.3

Powered by Blogger