On Thursday 29 December 2005 07:20, Carol Spears wrote:
> the one other thing that would make them useful as patterns is if
> they can be made tileable.  there is at least one plug-in that
> does this. 

OK... having a stab at doing this "manually" for one herringbone pattern 
of brick pavers now, and it ain't as easy as it looks. (-:

This would be a really handy thing to have a dedicated tool (or at least 
plugin) to do. The following comments apply to real-world objects being 
converted to patterns; they may not apply to computer-generated 

Each potential tiled texture will probably need some fisheye correction, 
which Dave Hodson's "Telephoto" plugin does reasonably well -- thanks, 
Joao, for reminding me that the plugin existed. This is made a little 
easier by lining image features up against guides, but it's still very 
much trial-and-error. Being able to do it on the main image in real-ish 
time would help a lot.

Many of them will also require "keystone" correction to make them square 
(or at least symmetrical across the X and Y axes). Those which require 
both would be a lot easier to deal with if both this and the fisheye 
correction could be done interactively, realtime(ish) and full-scale on 
a single set of sliders.

Next, we need to isolate (crop to) a section of the subject which is 
suitable for one of the algorithms below. Interactivity would help this 
a lot as well, see discussion for each.

Having made the subject basically rectangular, the next step is to make 
it repeatable. There are two techniques that I've looked at so far.

One consists of replicating the original rectangle in each direction, 
flipping the image over its edge to achieve an image twice as large in 
each direction but which matches exactly along the edges.

This does not work well for asymmetrical subjects, such as those 
containing text or lit predominantly from one side.

Being able to tweak the corrections and cropping on the fly and have it 
displayed as an "endless" pattern would make achieving near-perfect 
results considerably easier.

Storing a single copy of the basic pattern rather than a fourfold-larger 
copy woulod be good, but would require the addition of a different 
tiling mode rather than simple repetition, call it "flip-tiling" if it 
doesn't already have a name.

The other method consists of overlapping the original image with itself 
and alpha-blending the edges of each copy to smooth over differences 
between each edge of the image. This does not work very well if the 
subject is not consistent from edge to edge, but does handle 
asymmetries such as sunlight coming from one side reasonably well.

There is already a plugin to do something like this, but it is *very* 
clumsy and only works acceptably with very complicated, fine-grained 
subjects, or with very near-featureless subjects. Even then, there is 
rectangular meta-pattern visible at larger scales because of the 
unsubtle blending at the edges of the image.

Real-time interactivity would greatly help this mode as well.

It would also benefit from being able to do "gradiented" corrections of 
at least brightness across the subject, possibly automatically or 
semi-automatically by selecting tiles along each edge and adjusting the 
intensity gradient so that they are equal, then another pass to smooth 
the gradient.

Another pair of useful features would be the ability to draw the 
alpha-blending border on each edge of the image freehand and/or with 
beziers, and to adjust the slope (or possibly even curve) of the 
blending. This would allow the operator to better duck around 

A final useful feature would be the ability to arbitrarily deform areas 
of the subject, PowerGoo(tm)-style, in order to better match up the 
edges of random/chaotic patterns like waves or gravel.

Cheers; Leon

http://cyberknights.com.au/     Modern tools; traditional dedication
http://plug.linux.org.au/       Member, Perth Linux User Group
http://slpwa.asn.au/            Member, Linux Professionals WA
http://osia.net.au/             Member, Open Source Industry Australia
http://linux.org.au/            Member, Linux Australia
Gimp-developer mailing list

Reply via email to