WCCI 2010 IEEE World Congress on Computational Intelligence
July, 18-23, 2010 - CCIB, Barcelona, Spain

CEC IEEE

SBArt4 – Breeding Abstract Animations in Realtime
Tatsuo Unemi
Abstract— SBART was developed in early 1990’s as one ofthe derivatives from Artiﬁcial Evolution by Karl Sims. It has afunctionality to create a movie from a bred image throughpost-processing. The innovation of graphics processing unit
(GPU) in these years improved the calculation performance
to be fast enough to realize breeding animations in realtime
on the personal computer. SBArt4 utilizes the advantage ofGPU by compiling each expression in genotype into a type of
OpenGL shading language. Even when it renders each frameof the animation in realtime, it achieves enough speed for users
to evaluate the product of an abstract animation immediately.
Though there were a number of problems because of architectural difference between CPU and GPU, almost compatible
functionalities with the previous version have been implemented
including reference to an external image and integer-based
bitwise operation. Through experimental executions on somedifferent hardware conﬁgurations, it was certiﬁed that it runs
fast enough on recent consumer machines though some older
machines are not powerful enough.

Fig. 1.

An example ﬁeld window of SBArt4.

I. I NTRODUCTION
One of the active application ﬁelds of Interactive Evolutionary Computing (IEC) is Evolutionary Art mainly on
abstract drawings. SBART [1] by the author is one of thederivatives from Artiﬁcial Evolution by Karl Sims [2], atool to breed two dimensional abstract image utilizing afunctional style of genotype to calculate a color value fromxy coordinates for each pixel.
The previous version SBART3 [3] also has a functionality
to create a movie from the result of breeding in a postprocessing. To produce a series of frame images for an animation, the image for each frame is drawn using not only thespatial coordinate but also the time variable. The processing
speed of personal computers was not fast enough for realtime
rendering in this purpose at that time. It took some seconds
for each frame for screen resolution of standard TV quality.
The performance of CPU for personal computers has improved as ten times faster than the age when the ﬁrst versionof SBART on UNIX workstation was released. However, it
is still not enough for realtime rendering because it requires
faster than 0.07 seconds per frame even when the expression
includes more than 100 symbols and the image’s resolution
is of Full High-Deﬁnition. Another innovation in recent years
is on Graphics Processing Unit (GPU). It was originallydeveloped for acceleration of 3D rendering in polygon-based
computer graphics, but it is attracting attention from various
engineering ﬁelds in which hi-performance computing is required, such as ﬂuid dynamics, structural analysis, molecular
structure calculation, and so on, because it potentially has ahuge power for parallel processing of number crunching. The
Tatsuo Unemi is with the Department of Information Systems Science,
Soka University, 1-236 Tangi-machi, Hachioji, Tokyo, 192-8577 Japan(phone: +81 42 691 9429; email: unemi@iss.soka.ac.jp).

978-1-4244-8126-2/10/$26.00 c 2010 IEEErendering process in SBART is not on 3D polygons but on
2D pixels. In this type of purpose, OpenGL shading language(GLSL) [4] is a suitable tool for software development. It isa high level programming language that has a similar syntax
with C language for description of a process applied to eachpixel. A program fragment is compiled into a set of machinecodes, and then is sent from CPU to GPU with data tocompute large number of pixels in parallel.
The new version of software named SBArt4 utilizes theadvantage of GPU by compiling each expression in genotype
into Core Image Kernel Language [5], that is a dialect of
GLSL supported by Apple Corp. in Mac OS X 10.4 orlater. It is relatively easy to embed these functionalities in
an application software by using Core Image framework
available in the standard free programming environment of
Xcode for Mac OS X.
The following sections describe system overview, compilation into GLSL, performance, and typical examples. Then
this paper is closed with concluding remarks and future
extension.
II. S YSTEM OVERVIEWSBART is a typical IEC application based on Simulated
Breeding that allows the user to select individuals as parents
in order to reproduce a population in the next generation.
Differently from the framework of Interactive Genetic Algorithm, it uses no scalar grade for evaluation, that is, selectedindividuals become parents and the others are discarded.
A typical graphical user interface named “ﬁeld window”
is shown in Figure 1 in which whole of the population
containing 20 individuals are displayed in a window.

4004

TABLE IS YMBOLS FOR E XPRESSION IN G ENOTYPE
Binary Operator

Unary Operator

Variable

+
−
×
÷
pow
hypot
max
min
and
mdist

−
abs
sin
cos
log
exp
sqrt
sign
image

(x, y, t)(x, t, y)(y, x, t)(y, t, x)(t, x, y)(t, y, x)

B. Phenotype

A. Genotype
Each individual has a genotype that includes a tree
structure for a mathematical expression constructed fromoperators as non-terminal symbols and variables and constants as terminal symbols. A genetic operation of mutation
or crossover is applied to the genotypes of the selectedindividuals in a style of Genetic Programming [6], that is,mutation by replacing a node by a symbol randomly chosen,
and crossover by exchanging subtrees between parents.
Table I shows a set of symbols for operators and variables
implemented in SBArt 4.1. Some of the operations haveconstraints for the domain of argument values such as squareroot and logarithmic function. To avoid an error during the
calculation, some types of modiﬁcation are applied to thesecases as described later. For the trigonometric functions, sinand cos, each argument is multiplied by π to adjust it to thedomain of the argument value given by another function.
Each variable is a vector constructed from three scalarvariables, x, y, and t. x and y express spatial location of
the target pixel, and t is a time variable for animation. A
constant is represented in one scalar value, but it is expanded
to a vector of three elements of the same values.
In addition to an expression, the range of time variable t
is also included in a genotype because it is an importantparameter to create an animation. This feature was not
implemented in the previous version because the animation
was not a target for breeding but for post-processing. The
range is represented by a pair of ﬂoating point numbers,
the start value t0 and the span value s, that is, the range is[t0 , t0 + s] if s > 0. The value starts from t0 and increases
until it reaches t0 + s when s is positive, decreases when sis negative.
One of the genetic operations applied to the range of time
variable is a type of mutation commonly used in a domainof continuous numerical values by adding a random number
within a restricted range and distribution. In the current
implementation, simple uniform distribution is employed ofwhich range is depending on the value of span s in the
genotype. The crossover is done simply by random choiceof a value from one of the parents for each value of start orspan.

The expression described above is to calculate the color
value from xy coordinate and time t for each pixel in theimage as the phenotype of individual. Each of the arguments
and the results of any operation is a vector of three elements
where the ﬁnal result is interpreted as a color value in a spaceof hue, saturation, and brightness (HSB). Therefore, the timecomplexity in sequential computation to generate one frame
image of a phenotype from a genotype is proportional to themultiplication between the number of pixels in the image andthe number of operations in the expression. The number ofsteps to execute operations can be reduced to the depth of
the tree structure by a parallel processing, but this point is
not so much effective because the reduced steps depends
on how many binary operators the expression includes.
The parallel processing is more effective on the concurrent
calculation among pixels, because it is theoretically possible
for all pixels to be calculated in parallel. The rendering timeis depending on the number of processing cores in GPU
because it is usually less than the number of pixels in asingle image.
The coordinate system in an image is arranged so that thecenter is the origin (0, 0), the y coordinate of the top andbottom edges are 1 and −1 respectively, and the x coordinate
is arranged in the same scale of y axis. If the aspect ratio of
the image is 4 : 3 for example, the range of x coordinate is[−1.33̇, 1.33̇].
The calculation for each pixel is executed under thesubstitutions on the position of pixel for x and y, and timevalue for t.
C. Time variables
In addition to the time variable t in variable symbols,
constant values are also the target for varying along the time
axis by multiplying a factor u + 1 where u is another time
variable in the same range of t. Two types of progression
on the time variables were implemented. One is to simply
iterate the value from t0 to t0 + s for both t and u wherethese two variables always share the same value, that is,
t = u = t0 + s T(1)where T is a variable repeatedly moving from 0 to 1.
The other one is to create a loop movie of which frame
at the end smoothly connectes to the frame at the beginning.
In this case, the values of two time variables are calculated
based on equationst= t0 + s sin 2πT,(2)
1 − cos 2πT.
(3)
u = t0 + s ·2
These were designed so that both values start with the same
one as t0 but their phases in every moment are different.
D. Example
Figure 2 shows an example of genotype illustrated in a tree
structure and the image as its phenotype. The expression of4005

Fig. 2.

1.// Core Image Kernel produced with SBArt4 (4.1 beta 1)
2.// by Tatsuo Unemi, 2010-01-25 18:16:35 +0900
3.// Time variable t = [-0.312925, 1.068027] (Linear)
4.vec3 divide(vec3 a, vec3 b){
5.
return a/compare(b,b,compare(-b,b,vec3(1.)));}
6.vec3 cnst(float u,float c){return vec3(c+c*u);}7.kernel vec4 individual(float t, float u){8.
vec2 p=destCoord();9.
vec3 v=((exp(sin((cos(((cnst(u,-0.433000))-(exp(10.
sin((((exp(sin((vec3(p.y,p.x,t))*3.141592)))+11.
(divide(vec3(t,p.x,p.y),vec3(p.x,p.y,t))))/2.)*
12.
3.141592))))*3.141592))*3.141592)))+
13.
(divide(vec3(t,p.x,p.y),vec3(p.x,p.y,t))))/2.;
14.
float th=v.z*6.28394,
15.
x=v.y*cos(th)/3.,y=v.y*sin(th)/sqrt(3.);
16.
v=mod(abs(vec3(v.x+x+y,v.x-x-x,v.x+x-y))/2.,2.);17.
v=compare(v-1.,v,2.-v);
18.
return vec4(compare(-v,pow(v,vec3(1.75)),vec3(0.)),
19.
1.);}

An example of genotype and phenotype of an individual.

Fig. 3.

genotype in a mathematical formula is as follows.
()
exp sin yxt+ txy
txyxyt
exp sin cos −0.433 − exp sin+ xyt
2

A sample code in Core Image Kernel Language.

%

(4)
2
The symbol named “mdist” is a function that calculates theaverage value between two arguments. yxt and the othersequences of three italic letters are variables listed in Table I
constructed from three scalar variables. For example, yxt
stands for (y, x, t). The coefﬁcient π to be multiplied to thearguments of trigonometrical functions are omitted in theequation for simplicity.
III. C OMPILATION INTO GLSLGLSL has a syntax similar to C language but some special
data types and built-in functions are available for graphic
rendering and pixel handling. For example, it has data types
to represent vectors, such as vec2, vec3, and vec4 for two,
three, and four scalar elements of float. Core Image Kernel
Language is a dialect of GLSL that has more additional
restrictions in the control statements including a condition,such as if, for, and while. This type of statement isallowed only when the condition can be determined before
the execution. The three arguments’ operator X ? Y : Z and abuilt-in function compare described below are available forconditional selection of expression instead of combination of
if and else statements.
A. Example
Figure 3 shows the code generated from the expression
shown in Figure 2 and Equation 4. The main part representing the expression is in the ﬁve lines from ninth line thatstarts with vec3 v=.
The ﬁrst three lines are comments including the rangeof time value. The next two lines are the deﬁnition of
subfunction named divide for division symbolized by ÷in Table I and Figure 2. To avoid an error because ofzero divisor, division must not complied simply into normal
divisor denoted by /. Instead, the deﬁnition of safe version ofdivision function is added when the expression in genotype
includes one or more operators of division. The built-infunction compare takes three arguments of vectors to pick

!"

!#

!$

!%

&

%

$

#

"

Fig. 4. The saw-shaped function for mapping the ﬁnal scalar value within[0, 1].

up elements from second or third argument depending on
the value of corresponding element in ﬁrst argument. The
element in second argument is chosen if the element in ﬁrst
argument is negative, otherwise the element in third argument
is chosen. The functional expression vec3(1.) means avector of three 1.s. The deﬁnition speciﬁes division is applied
only when the divisor is not zero.
The sixth line is the deﬁnition of subfunction named cnst
for a constant value. Because it varies with time variable u
as described above, this subfunction is necessary when theexpression includes a constant.
The seventh line is a declaration of main function. It
takes two scalar arguments t and u corresponding to time
variables t and u, and returns a vector of four elementsthat represents a color value for a pixel. The eighth linerefers to a built-in function destCoord to assign spatial
coordinate of the target pixel to the vector variable p. The
elements p.x and p.y are used in a variable. For example,
vec3(p.y,p.x,t) in the tenth line expresses a variable
vector (y, x, t).
The ﬁnal part from the fourteenth line is to convert theresult of expression in genotype to the ﬁnal value of RGBA
color space. It employs a simpliﬁed version of translationfrom HSB to RGB with a side effect that makes the produced
image more interesting. The sixteenth line that includes modand abs and the seventeenth line with compare are to
conﬁne arbitrary scalar values of each element within [0, 1]
by mapping them using a saw-shaped function,{
x mod 2
if x mod 2 < 1
f (x) =
(5)
2 − x mod 2 otherwise
illustrated in Figure 4. The ﬁnal line includes a power func-

4006

tion for gamma correction to darken the color appropriately.
The alpha component in the ﬁnal value in RGBA space isalways 1. to indicate it is opaque.
B. Modiﬁed functions
As described above, some of the operators must be modiﬁed to avoid an undesirable runtime error due to a violationon the domain of the arguments. This special considerationmust be applied to three of the operators listed in Table I,÷, log, and sqrt. The modiﬁed deﬁnitions are as follows.
x÷y

=

{
x
x
y

if y = 0otherwise{0
if x = 0
log x =
ln |x| otherwise{√x
if x ≥ 0
sqrt x =√− −x otherwise

(6)
(7)
(8)

Similar type of care must be taken for the power function
because the compiler producing the machine code breaks thebuilt-in function pow down into a combination of exponential
and logarithmic functions. This means it causes an error
when the ﬁrst argument is zero unless any special handlingis made.
C. Selective functions
Almost all of the operators calculate a scalar value for eachelement independently, but the selective functions “min” and“max” depend on the combination of elements. Both functions take two arguments and pick up one of them according
to the value of ﬁrst element that expresses brightness. “min”
returns the darker argument, and “max” returns the brighter
argument. The code of deﬁnition of these functions are as
follows.
vec3 myMax(vec3 a,vec3 b){return (a.x>b.x)?a:b;}
vec3 myMin(vec3 a,vec3 b){return (a.x<b.x)?a:b;}

D. Function to import external image data
The unary operator “image” is to embed data stored in
an external image typically of a photograph. It takes one
argument and interprets the ﬁrst element as the horizontal
coordinate and the second as the vertical coordinate. The
result image is just identical to the external one if theargument is a variable (x, y, t). The coordinate system on theexternal image to indicate which pixels it refer to is adjusted
so as to ﬁt the vertical span of the external image to theheight of the result image. The horizontal axis is adjusted so
as to keep the aspect ratio.
Figure 5 shows the code to deﬁne the subfunction. It
takes three arguments. The ﬁrst is the argument value ofthe expression given in the genotype, the second is a twodimensional vector that expresses the size of external image
in pixels, and the third is an image sampler that provides
pixel values of external image. sampler is a built-in data

vec3 image(vec3 a, vec2 s, sampler img){
vec3 c = sample(img,s-abs(s-mod((a.xy+s.xy/vec2(s.y))*s.y/2.,s*2.))).xyz;
c = compare(-c,pow(c,vec3(1./1.75)),vec3(0.));float x = c.x-2.*c.y+c.z, y = c.x-c.z;
float r = sqrt(x*x+3.*y*y);float th = (r<=0.)?0.:(y>=0.)?
acos(x/r):6.283184-acos(x/r);
return vec3((c.x+c.y+c.z)/1.5,r,th/6.283184);}

Fig. 5.

The deﬁnition of “image” subfunction.

vec3 myAnd(vec3 a,vec3 b){
vec3 c=mod(a*10000.,16777216.),d=mod(b*10000.,16777216.),e,f=0;
int i; for (i = 16777216; i > 0; i /= 2) {e = vec3(i);f += compare(c-e,vec3(0),compare(d-e,vec3(0),e));c -= compare(c-e,vec3(0),e);d -= compare(d-e,vec3(0),e); }return f/10000.; }Fig. 6.

The deﬁnition of bitwise “and” subfunction.

type for this purpose. The values of latter two arguments are
given from outside of the program fragment when rendering
process starts. To receive the information, the declaration ofkernel function deﬁnition in the seventh line in Figure 3 isextended with two more arguments same with these ones asfollows.
kernel vec4 individual(float t, float u, vec2 s, sampler img)

Because a value given for coordinate has arbitrary value
as the result of bred subexpression, the external image is
expanded as if it has inﬁnite size without boundary by ﬁllingthe area with tiles of same or ﬂipped images so that tiles are
adjacent smoothly each other. The second line in Figure 5
picks up an RGB color value by a built-in function sample
with the appropriate coordinate in the second argument,
where a.xy denotes two dimensional vector constructedfrom ﬁrst two elements in a three dimensional vector a.
The fourth line is for gamma correction to adjust it for
further calculation, and the rest part is a simpliﬁed translationfrom RGB to HSB that works just as the inverse of thefunction from HSB to RGB in the bottom part of Figure 3.
E. Integer-based bitwise calculation
Because the operators for bitwise logical calculation are
not supported in Core Image Kernel Language, a kind oftrick is necessary for an integer-based bitwise operator named“and” that was introduced in the previous version of SBART.
Figure 6 shows its deﬁnition, utilizing a for loop by dividing
the control variable i by two. This operator produces a typeof discrete fractal pattern that is useful to enrich the variationsof result images.
IV. P ERFORMANCE
The current version was tested with Mac OS X 10.6 onsome different machines. It does not run fast enough on arelatively older machine, such as iMac 1.83GHz with ATI
Radeon X1600, but the animation is smooth enough on recent
ones, such as MacBook Pro equipped with 3.06GHz Intel

4007

Gene size = 6
ATI Radeon X1600
nVIDIA GeForce 7300 GT
nVIDIA GeForce 9400
ATI Radeon HD 2600 Pro
ATI Radeon HD 4670
0

10

20

30

Gene size = 100
ATI Radeon X1600
nVIDIA GeForce 7300 GT
nVIDIA GeForce 9400
ATI Radeon HD 2600 Pro
ATI Radeon HD 4670
0

10

20

30

Gene size = 200
ATI Radeon X1600
nVIDIA GeForce 7300 GT
nVIDIA GeForce 9400
ATI Radeon HD 2600 Pro
ATI Radeon HD 4670
0
Field window

Fig. 7.

101280 × 720

fps

20

30

1920 × 1080

Rendering Performance on Different Machines

Core 2 Duo Penryn CPU and NVIDIA GeForce 9400M GPU.
The animation of single individual on a zoomed window
works smoothly in the standard resolution of analog TV in allof the cases. It got slower but still acceptable for the full HD
size of 1,920 by 1,080 pixels. The performance depends on anumber of factors, such as frame buffer size, kernel memory
size, the number of processing units, bus speed between CPU
and GPU, and so on.
One of the troubles is on the simultaneous live animation
for all twenty individuals in a ﬁeld window. Though theimage size for each individual is small, it does not workin enough smoothness on some machines. The main reason
is that the program fragments for individuals are separated
and they are loaded into GPU in turn for each frame. It might
be able to be solved by unifying all of codes into a single
program fragment, but it has not been examined yet since it
is somewhat complicated to build up such a uniﬁed program.
Instead, a caching mechanism was examined. It memorizes
each frame image in the main memory to display it when thesame frame image should be displayed again in later cycles.
A capacity of memory is consumed, but it is negligible when
the number of frames is less than 100 and the speed got
faster enough after it completes caching the images for allof the necessary frames. It also requires a time to copy each
image from GPU to CPU, but it is also negligible because
the image size is small. The live animation is organized in

15 frames per second (fps) and 4 seconds in duration of one
cycle for the default settings. The total number of frames in asingle ﬁeld window is 15 fps × 4 seconds × 20 individuals= 1,200. Therefore it occupies 120 pixels for width × 90
pixels for height × 4 RGBA components × 1,200 frames ≈5 M bytes without compression in a typical ﬁeld window.
This size is not so large waste of memory capacity for the
recent machines even if the user opens tens of ﬁeld windows.
Figure 7 summarizes the throughputs in fps on some machines of different hardware conﬁgurations for two different
sizes of single images and one ﬁeld window. The case ofﬁeld window does not include the time to store each image
in the main memory for cache. In all of the cases, threedifferent sizes of expressions in genotypes were examined.
One is a short expression that includes only six symbols, andthe others contain 100 and 200 symbols that produces relatively complex pattern of phenotype image. The genotypes
examined here were generated randomly excluding the unaryoperator “image” and the binary operator “and” because
they require several steps for calculation differently from theothers. Some of the measured values are near from 5, 10,
15, 20, and 30 due to the drawing mechanism in MacOS
X. The rendering process for the screen is triggered every
1/60 seconds even if the data for drawing can be preparedin shorter time than the interval of refresh rate. The reason
why an older machine is very slow to render a ﬁeld windowof large genotypes is probably the time required to load andexecute the kernel program fragments.
SBArt4 also has a functionality of multi-ﬁeld user interface[7] that allows the user to open arbitrary number of ﬁeld
windows in addition to arbitrary number of zoomed window.
We restricted the animation running only on the front most
window, because it would be useless for the user and overload for the machine if too many animations were runningin all of windows at same time. It is clear that the animation
on a hidden window is meaningless, but also the motions inwindows in the outside of user’s attention is just disturbanceagainst user’s observation on the focused individual.
V. E XAMPLE P RODUCTION
Figure 8 illustrates the frame sequences of example moviesof the genotype in Figure 2. The upper one is of linear
transition as explained in Equation 1 where the time variablet and u move from −0.312925 to 1.068027. The lower one
is of cyclic transition in Equation 2 and 3 where t and u
oscillate in different phases so that the ﬁnal frame image
smoothly continues to the ﬁrst one.
For the production of such a movie by the previous versionof SBART, we could neither breed the time parameters nor
evaluate the motion in a ﬁeld window. We needed to imagine
during the breeding process how each image in the population would move, because it did not provide any method
to take advantage of interactive evolutionary computing tobreed the motion. It is not sure that an interesting still imageis always connected with an interesting movie. An image ofless interest might be a suitable seed to produce an amazing
movie. Thus, it is important to implement the fast algorithm4008

Fig. 8. Example movies. The upper one is of linear transition of time variable t from t0 to t0 + s. The lower one is of cyclic transition where the ﬁnal
frame smoothly continues to the ﬁrst frame.

of realtime rendering to obtain a wide variation of satisﬁable
results.
VI. C ONCLUDING R EMARKS AND F UTURE E XTENSION
A new version of the software tool named SBArt4 wasintroduced, that realized breeding of abstract animation in astyle of interactive evolutionary computing. It requires muchof computation to produce a distribution of colors in images
for each frame in realtime. It would be still difﬁcult if thecalculation relied only on CPU, but recent innovation of GPU
enabled it. By a method to compile a genotype to a programin GLSL, it became possible to utilize the functionality of thisadvanced technology effectively. There were some new typeof difﬁculties because of difference between the architecturesof CPU and GPU, but some of these problems could be
solved.
The main part of functionalities in the previous versionof SBART has almost completed to be exported to the newversion, but still some points are remaining. Embedding an
external movie instead of the still external image seems
not so difﬁcult because it is enough by feeding each frame
image extracted from the given external movie in the similar manner with an external image even though it needs
additional processing for extraction of appropriate frame andreconstruction of the sampler for GPU. A more difﬁcult
challenge is development of proper method to embed pluralexternal images for making collage [8] and to import pixel
data of 3D space from movie [3]. Because it is assumed thatthe ﬁnal result of graphics is always a set of pixels in 2D
space, Core Image framework has no feature to handle such
3D “boxel” data as a primitive. It does not seem impossible
but looks difﬁcult to realize within a reasonable costs forboth time and space.
There are some types of functionalities that should be
added or revised because of the newly introduced feature,that is, animation. The ﬁrst one is on sound effects. The
previous version has a facility to attach a sound track to themovie during the post-processing, but it should be embeddedin the breeding process in the new version. In the current
implementation, the parameters for sound wave generation
is outside of the target of breeding, but an graphical userinterface to manipulate them directly by sliders is provided. It
is easy for these parameters to be included in a genotype, but
at the same time it is required to introduce a mechanism ofpartial breeding [9] to allow the user to control which feature
should be the target of breeding. Another consideration to bemade is the design of user interface for breeding including
sounds. There are also many researches on it for sounds
and music, but we need to solve more complicated problem
because of combination with visuals as the target of breeding.
A type of user interface that allows the user to select one
individual to listen to might be necessary similarly to theauthor’s another approach for music [10].
The second one is on the user’s experience. The systemsometimes produces an animation that includes rapid changesof clear colors, a similar pattern that used to cause thetrouble on TV animation program in Japan [11]. It is toostrong stimuli for the nerves system of visual perception of
the viewer. It might be necessary to introduce a method tomeasure and restrain such a undesirable side effect to avoid
a negative effect to the users’ health.
Visualization of phenotypes is one of the very importantfeatures for successful application of interactive evolutionary
computing. Similarly with the system presented in this paper,
developments in the other application ﬁelds that look for the
optimal motion will be accelerated through improvement of
the hardware for graphics processing.
R EFERENCES[1] T. Unemi, “Simulated Breeding: A Framework of Breeding Artifacts on
the Computer,” in Artiﬁcial Life Models in Software – Second Edition,(Chapter 12), Edited by M. Komosinski and A. A. Adamatzky, London,
UK: Springer-Verlag, 2009.
[2] K. Sims, “Artiﬁcial Evolution for Computer Graphics,” Computer
Graphics, vol. 25, pp. 319–328, 1991.
[3] T. Unemi, “Embedding Movie into SBART – Breeding Deformed
Movies,” in Proc. of the IEEE Conference on Systems, Man andCybernetics, The Hague, Netherlands, 2004.
[4] J. Kessenich, “The OpenGL Shading Language – Language Version:
1.50,” The Khronos Group Inc., http://www.opengl.org/ documentation/
glsl/, 2009.
[5] Apple Corp., “Core Image Kernel Language Reference,” in Mac OS X
Reference Library, http://developer.apple.com/mac/library/ , 2008.
[6] J. R. Koza, Genetic Programming: On The Programming of Computers
by Means of Natural Selection, Cambridge, MA: MIT Press, 1992.
[7] T. Unemi, “A Design of Multi-Field User Interface for Simulated
Breeding,” in Proc. of the third Asian Fuzzy Systems Symposium, Masan,
Korea, pp. 489–494, 1998.
[8] T. Unemi, “SBART 2.4: an IEC Tool for Creating 2D Images, Movies,
and Collage,” Leonardo, vol. 35, no. 2, pp. 171, 189–191, MIT Press,
2002.
[9] T. Unemi, “Partial Breeding – a method of IEC for well-structured large
scale target domains,” in Proc. of the IEEE Conference on Systems, Man
and Cybernetics, TP1D4, Yasmine Hammamet, Tunisia, 2002.
[10] T. Unemi, “A Tool for Multi-part Music Composition by Simulated
Breeding,” in Proc. of the Eighth International Conference on Artiﬁcial
Life, Sydney, Australia, pp. 410–413, 2002.
[11] T. Takahashi, Y. Tsukahara, M. Nomura, and H. Matsuoka, “Pokemon
Seizures,” Neurological Journal of South East Asia, no. 4, pp. 1–11,
1999.

4009