Toolkits for 2D Animation?
profBill asks: "I work in the area of complex adaptive systems, that is understanding the emergence of complexity from the interactions of many elements (immune systems, economies, ecosystems, etc.). In particular we are using evolutionary computation to create elements/creatures that can co-exist in an ecosystem with certain interactions and relationships. All that is very interesting, but in the end, assuming we create such creatures, I have to show them to the ecologists and biologists so they can understand what is going on. The only way I can imagine doing it easily, other than with graphs and charts, is to create a 2D animation of the creatures and their interactions that these folks can watch. My problem is that there are so many choices for a toolkit to build such a 2D animation. My goal is not a movie of ILM quality, but something 'good enough'."
"'Good enough' for me means:
- Quick and dirty, that I can tune as needed.
- Zoom capability on a grid
- Pop up menus on any one grid element to get information.
- Scrolling, resizing, the typical.
- Be able to hook to a C/C++ program to get a creature's behavior
So I came home from work the other day to discover my cat laying on the floor. His breathing was very shallow and his eyes were very glassy. When I approached him I noticed a belt tied around his arm and both a syringe and a bent spoon laying beside him. Despite all his promises to the contrary, my beloved Mittens has started shooting up smack again!
Fortunately the paramedics showed up quickly and gave him some naloxone which saved him. Unfortunately the problem of my cat being addicted to heroin still remains. Last week he sold my stereo and this weekend Mittens offered to perform oral sex on me in exchange for a hit.
I love my cat and want to see him off this horrible drug. Unfortunately he won't stop on his own! Mittens says he can quit anytime he wants to and becomes combative when I force the issue. I'm tired of seeing him throw his life away. He could've been a great mouser, one of the best before he got hooked.
Can anyone recommend a way to get my cat off heroin? It would be much appreciated.
The flag icon for Slashdot's 'United States' section is missing its first stripe - the stripe that represents Delaware, the first state admitted to the Union. While a simple oversight could be forgiven, it should be known from here on out that Slashdot is in fact aware of the missing stripe, and even worse, refuses to do anything about it!
This vulgar flag desecration and rabid anti-Delawarism must be put to a stop. Let the Slashdot crew know that we will not accept a knowingly mutilated flag or the insinuation that Delawarians deserve to be cut out of the union. I ask you, what has Delaware done to deserve this insolence, this wanton disregard, this bigotry?
This intentional disregard of a vital national symbol is unpatriotic. Why, the flippant remarks CmdrTaco made about our flag border on terrorism! I urge you to join the protest in each 'United States' story. Sacrifice your karma for your country by pointing out this injustice. Let's all work together to get our flag back. Can you give your country any less?
-You start out with a nose-equipped smiley :-). You can modify it slightly, to be a laughing smiley instead :-D. From there, maybe you want to add bulging eyes 8-D. Then you think to yourself, "Hey me, it would be funny to have a monkey emoticon!" so you add the wide nose common to monkeys 8=D. Still, you think it doesn't look right, because monkey faces are longer than humans, so you extend the nose. 8====D Congratulations, you now accidentally created an ascii phallus.
denoser
With Macromedia's Director (there may be a new name for the MX version), you can basically construct entire applications. You could integrate pretty much any application with it. The fact is, flash is going to be the best way to create part of it, even if you don't construct the entire program with it. The portability is another plus. Maybe a hybrid of java and flash would be in order if you're looking for ease of coding coupled with a reasonable amount of power and portability.
"Life is great; without it, you'd be dead." -Harmony Korine
Taco, I want you to fuck me in the ass please. I am dying to be anally accosted. I want to be ravaged like hog. I want you to dress like a farmer and make me oink like a pig. I want an ass reaming like no other. Taco, I haven't had this kind of lust for you since the crazy college days. We used to butt fuck each other in the stalls. You always told me not to flush and preferred using my feces as apposed to real lubricant. I remember your chocolaty member, your manhood, draped in my feces. Man, Robbie, I remember. I was day dreaming, escaping into a nether world where we used to fornicate, and live in fornicatory bliss. You used to like to keep your tubes socks on to enhance they gay look. We were so flitty and light on out feet. I am so very confused these days. I have difficulty conceptualizing the time that was then in contrast to now. I mean, first you were a raging homosexual, now you deprecate me in favor of this "woman." I know that bitch is a transvestite. You are closeting your homosexuality and denying your roots in my ass!
I am destabilizing. The world is going dark to me. I have scintillating threads of motley thoughts, my ability to control my self evanesces away! I have only an adamantine desire to see your balloon knot once again, and to have you ravage mine! I see a world of GOATS. A goat fucking extravaganza. I invoke the ANUS of DOOM! I hate Taco.
SON of the GOAT, HUGE ASS WIDENER, This is a massive, massive ass attack from the Minister of Goat, Ayatollah man-meat.
Dilated Meat Pie. Most suppressed people really like seeing this. It gives them new masturbatory fodder.
Two cucumbers, better than one. This is to show that the giver is really smaller than what is needed to fill GOATSE man. He east Cheerioatse brand O's
A Disney product right where it belongs. Up a goat's ass. Death to Mike Eisner, the butt buddy of Commander Tak0.
Raw and dilated man-pussy. Put back the trouser snake, Tako. You dick is way too small for this man's ass.
A Prolapsed rectum is sure to whet even the most jaded flaming fuck's appetite. Tak0, your penis is regrettably way too small, even for your "Fiancée's" unfettered anus. She doesn't want to dirty her ass with the likes of your pathetic member.
GOAT KORAN
Classic HIT ME IN THE SHITTER BABY, UNGH HUH
Classic Oh yeah, in the shitter some more, in the shitter.
Classic More ass stretching goodness.
Female Goater My pussy is too small for this APPLE.
Goatse Grandpas - GRANPA GOAT S3X0R5
Son of a Goat - Holy fucking son of a goat. Kind of looks like Tako from behind, but to be sure I'd have to ask CowGryl Kneel
1 Oh, pardon me sir, would you happen to have any ANAL LUBE?
2 UNGH FART, pssssbt, ungh, tweeep, squeaaaaaak ungh
3 PFFFFFFFFFFT AHH pffft
4 FOOOOOOOOOOOOF blud dribble dribble
Prime Number Shitting Goatse Man See The Prime numbers flow like the river SHIT
Goatse Returns! Fuck yeah, the goat man is a coming back to Trollaxor
I summon the powers of HUGE GAPING ASS!
Our Goatse Prayer
Llegaré a ser petador, el mejor que habrá jamás.
Mi causa es ser reventador, tras mi gran petada anal.
Petaré cualquier animal llegaré a partirlo en dos.
Al fin podré agujerear el culo de Goatsemon. (Es Goatsemon)
Petalos todos. Es mi destino, mi misión. (Es Goatsemon)
Tú eres mi amigo fiel, pero deja ya mi esfinter. (Es Goatsemon)
Petalos todos. Seremos mejor al fin.
Te peto yo, y tú a mí Goatsemon.
Hazte con todos. Goatsemon..
...then WHY DON'T YOU JUST PICK ONE?
If all you want to do is display simple "good-enough" 2D-animation, any 2D-toolkit would do. If you want zooming, etc, you will probably have to write that yourself, I can't imagine what features a 2D-toolkit could offer, that would avoid you having to write the actual code for display.
I know that people have been doing 2D animation in flash for a while now... we even have a new video series that uses it. ( Larry Boy ) I imagine you could throw something together using perltk and perl::flash to create flash movies. I haven't played with the perl::flash stuff, but I imagine it isn't too steep of learning curve. -Tim
-I just work here... how am I supposed to know?
Q: What would you use to build such an animation?
A: A programming language. Say, C or C++?
Seriously. Consider your criteria:
Quick and dirty, that I can tune as needed.
So to produce a frame, you have each "creature" draw themselves if they overlap the present view area. The detail of each creature's "look" is local to that creature, so you can tune/tweak it at need. Done.
Zoom capability on a grid
The "present view" data includes a view-center and a scale factor, which all the drawing primatives use to translate from world coordinates to screen coordinates. Clicking on a point on the grid may make that point the new screen center and increase/decrease the scale factor, depending on which "tool" (the magnifying glass, etc.) the user has sellected. Done.
Pop up menus on any one grid element to get information.
Trivial. When the mouse hovers, or they right click, or press control-yada-yada-cokebottle, or wahatever, pop up your menu. If you also want information about each creature, use a (perhap subtilly) different colour for each creature and check the colour of the creature under the mouse to determine what to pop up. Done.
Scrolling, resizing, the typical.
Done.
Be able to hook to a C/C++ program to get a creature's behavior
Done.
It shouldn't take much longer to write than it took to ask the question, or to answer it.
-- MarkusQ
Here are some basics that the boy in your life would like you to know. Maybe
it's awkward for him to tell you - maybe there even are some things he
hasn't discovered yet.
Let's begin at the end: the glans. This is the very sensitive end, or tip of
the penis. It's covered by the foreskin in boys who aren't circumcised. The
glans looks and feels unlike skin on any other part of the body: it is soft,
squishy, and the home of the most intense and delightful feelings a boy can
experience. It is so sensitive that the feel of, say, a stream of water from
a showerhead may be too intense to stand for more than a few seconds. Yet
for all its sensitivity, stimulating the glans alone usually does not lead
to orgasm - you need to massage some part of the penis shaft as well.
This means, if you know what you are doing, that you can give very extended
pleasure by massaging the glans. It is so soft that unless it and your
fingers are completely squeaky clean most likely any petting will soon
become irritating. What your guy really wants is a moist massage, either
with saliva or another lubricant. The simplest and one of the greatest
treats you can give him is to moisten your thumb and slowly rub it back and
forth across the head of his penis.
You can do this for ten minutes, twenty minutes, and watch him drift into a
plateau of pleasure, without the tension of an approaching orgasm.
Of course, you can do the same with your lips, though it is almost
impossible to resist the temptation to take more of he penis into your mouth
- and then you're off to the races!
If you're this close you can see some of the unique geography of the glans.
First, it has a grain - small ridges that go fore and aft (away from his
body, rather than side to side). It's usually more comfortable to pet with
the grain, though if you are using lubrication it doesn't much matter.
Second, there are distinct regions on the glans: the very tip, around the
urethra opening ('pee hole'); the twin bulges on the front, separated by a
small cleft; the broad, flat back; and the flared bluish ring where it
connects to the penis, called the corona. The most sensitive parts are the
tip and front. Try gently massaging the front, spending five or ten seconds
on each side, then switching, then spending an equal time on the very tip.
The back is the 'grainiest' region and should be petted front to back. The
tip, just behind the urethra opening, is the best place to get started - a
very good erection stimulator!
Notice that all this is about stimulating the skin of the glans. It is a
soft and delicate region and not meant for deep massaging - too much
pressure doesn't exactly hurt, but it isn't so delightful, and in fact a
good squeeze to the glans is one technique for bringing down an erection.
It really is possible to give very extended pleasure to the glans alone.
This may be very relaxing for your boy, or it may make him desperate for
more - it's a matter of mood! Once you do start to involve the rest of the
penis, things change quite a bit.
Just below the glans on the penis shaft front is the main action area, the
part that is most involved with the intense feelings that cause orgasm and
ejaculation. The penis itself really has two parts, the raised part on the
front through over the urethra, and everything else (sides and back). While
we enjoy stimulation to any part of the penis, it's the front that is the
seat of pleasure. Petting or massaging the back of the penis doesn't do very
much.
The top inch of the front of the penis is the trigger, the part that all
boys first learn to rub when they masturbate, either by an up-and-down
motion (the veritable "jerking off"), or by rubbing side to side. This part
of the penis is sensitive to pressure, rather than surface petting. Once a
boy is fully aroused, even a slight pressure to this part of the penis will
lead up to orgasm. If you are using your hands or lips on his penis, it's up
to you to be sensitive to how much stimulation you are applying here, as
that controls how long the ride will last!
Pressure to the top front of the penis doesn't have to be applied directly,
and this is where the rest of the penis gets involved - and a whole lot
more. Once an erection is full grown, the penis is stretched tight, which
means any pressure along the front or anything pulling at the base will tug
on the top part just as surely as if you were massaging that part directly.
This is something that grows more intense as he comes farther along towards
orgasm: after a few minutes of stimulation, with his penis rock-hard and
pumping from within (more on this later), even a small tug on the scrotum at
the base of the penis can trigger an orgasm.
If you are using your hands, you can continue to massage the glans while
stroking or gently rubbing the front of the shaft. Of course, if you are
using your mouth or taking his penis into your anus, all this happens
automatically - it's exactly what the penis was designed for, and his whole
body will get involved to make sure there is an orgasm soon!
But let's not hurry, please, you have a lot of delightful territory still to
explore. With his penis at 'full attention' you will learn that what you see
is only half the story. The shaft of the penis goes equally deep into his
body, where the right pressure gives long-lasting pleasure without hurrying
to orgasm.
Follow the ridge of the urethra down along the front of the penis, to where
it goes under the scrotum. Massage it from side to side as you move down,
and feel how his erection really extends several inches below the base of
the penis, disappearing into his body below the base of the scrotum. Spend a
few minutes massaging his penis in small circles through the scrotum - once
he is fully aroused, this is a nice place to spend some time. You will
eventually get to a point about an inch below the bottom of the scrotum
where you will feel his penis shaft go 'underground'. Remember this point:
it's an excellent place to apply pressure during orgasm. At this point you
have left the soft tissues of the penis and are feeling muscle. You can
press a lot harder here; a firm push is rewarded by a greater firming of his
erection and a rush of pleasure along the whole penis.
If you have a finger still on his glans (or even if you don't), you should
see a drop of fluid every so often. This is his lubrication, or 'pre-come',
and - I don't have to tell you this, do I? - should be gently massaged into
his glans. (Note for the girls: though this isn't semen, it can potentially
contain sperm, so use whatever precautions are appropriate for full
intercourse.)
You have a hand on his scrotum, or 'balls' - another very interesting place!
The skin of the scrotum is also unique, and quite different from that of the
penis. It has ridges, odor glands, hair, and is exquisitely sensitive,
loving to be stroked and tickled. Hiding inside the scrotum (which by now is
probably firmed up like a little baseball) are the two testicles. At this
point it is probably wise to ask if he likes to have his balls touched or
massaged. Although they have a well-earned reputation as the seat of pain in
the male body, it actually takes quite a bit of pressure to hurt the
testicles - they are really much more sensitive to impact than to pressure.
He may find it exciting to have you massage them, or he may hate it. (Note
to those in long-term relationships, testicle cancer is one of the most
common cancers in boys and it is very treatable - so check for lumps several
times a day!).
If he has never tried it, I strongly recommend removing the hair from the
scrotum, either by shaving, or plucking. As Dr. Evil (Mike Meyers) said in
Austin Powers, 'a shorn scrotum is a thing of beauty.' Removing all the hair
makes the scrotum fantastically soft and much better for petting. Plucking
is by far the best, taking about half an hour. If you shave, use a sharp
double-edged blade and do it dry, with baby powder or cornstarch for a
lubricant. Trim but don't shave the hair at the base of the penis or the top
of the scrotum, as that is the 'load-bearing' area during intercourse, and
any prickles will be a serious problem.
The scrotum is also very temperature-sensitive, acting like a little weather
station. So are the tissues behind it. Cold, in particular, has a dramatic
effect, and if he is up for it, you should try pressing ice into the base of
the scrotum - the sensation is incredible, especially during orgasm.
Where were we? You have a firm finger below his scrotum, where you can feel
his penis pump up when he contracts his muscles (there's some Latin name I
don't remember [pubococcygeus - Ed.]; these are the muscles you strengthen
with 'Kegel' exercises, and most people would likely call them the 'love
muscles'). If he is close to coming, even this pumping may stretch the front
of the penis enough to trigger an orgasm.
Move your fingers down his perineum (the slight ridge between scrotum and
anus). This is a wonderful area to massage. In another inch you reach the
anus, the other focus of erotic pleasure in his body. The skin around anus
is as sensitive as the lips, a place for soft tickling, but able to grip as
firmly as a fist, a place for fucking. Bill Cosby may get mileage out of
fear of anal penetration, but I think 99% of all males love the feel of a
finger in the ass.
Use some of his or your own lubrication to massage his anus. If you wish to,
press firmly and feel it open ever so slightly to allow you to massage the
entire firm sphincter (opening). Slowly or by surprise you can slip a finger
in. There are no more nerve endings past the anus, but the feeling of
stretching and penetration is heady and delightful all in itself. At this
point you may decide to head farther up to massage his prostate. This is (as
everyone says) a 'walnut-sized gland' about one finger's length in. It is
the true root of the penis, which you have now followed from the delicate
glans, along the soft shaft, down to the muscled base, and deep into his
body. Massaging the prostate enough will usually (not always) trigger
orgasm, a different experience from a purely penis-based orgasm. If you do
this, you will feel the enormous firming and contractions that precede and
accompany ejaculation. It's time to put him out of his misery. With one
hand pressing against the scrotum or pushing into his anus, and another
massaging the glans and final inch of the penis (or with your mouth doing
the same), 'go for it!'. There's more you should know about how a boy
works. Erection, orgasm, and ejaculation are all separate mechanisms. They
do not have to accompany each other; the only rule is that orgasm does cause
ejaculation (unless something is medically wrong). In particular, erections
can come and go for no apparent reason, so don't worry if you feel him go
soft once in a while. We have been talking a lot about the 'primary
erogenous zones', which I hope you now know well. There are of course other
parts of his body that he wants you to pay attention to, such as his nipples
(as sensitive as a woman's, and too often neglected). But there is one
erogenous zone more important than all others, and one you can spend a
lifetime exploring together: his mind. We males love to be touched and
petted and stroked and sucked, but more exciting than all of that is the
thrill of giving pleasure to and sharing pleasure with another person.
OK, that is all I have. Now go and put my helpful advise to work. And have
fun
Funny you should ask this question...
I just coded the front end to a networked AI simulation with creatures that play, eat, interact, etc. I basically did everything you said you wanted...2d grid with mouse zooming/panning, tweakable creatures, interfacing with c++ AI and network packages. Did the whole thing using Qt's 2d graphics library...was generally quite straightforward (albeit not the fastest). If you can deal with c++ coding I'd recommend it highly.
Info can be found at http://www.trolltech.com
On a related note, I've concentrated quite a bit over the past year in generating charts and graphs to multiple output formats simultaneously. Of interest here are some new versions of old standard apps, Gnuplot and Graphviz. Both applications contain SVG output capabilities in their latest builds. I've been using both to generate both PNG, but also PS and SVG. I will generally convert the PS to PDF via Ghostscript. To me this represents an incredible time savings by allowing me to generate PNG's to act as thumbnails for the SVG and PDF versions of the same graph. Consider also the ability to nest SVG objects within a larger SVG picture (or animation). To aid in technical illustration you could actually embed SVG chart animations with the other custom 2D animations that you seek to create to further clarify the idea you are trying to present.
Raster, vector and publication quality visualizations in one fell swoop without spending a dime. Schweet!
Both of these are crossplatform solutions for doing the kind of thing you require.
Java2D is easier to develop with, especially if you are not a C/C++ person, and comes with a full set of widgets for supporting UI purposes.
I might suggest you prototype your application in Java2D, and if you cannot extract useful speed out of it, to port to SDL or OpenGL, if you require interactive framerates.
OpenGL is most often used as a 3D API, but using textured polygons (or compiled display-lists of lines/polygons for better zooming/resolution independence) for your elements in orthographic projection will provide optimum performance on a plaform with hardware 3D acceleration.
However, properly written, there is no reason why Java will not provide you with adequate-to-good speed.
There is also no reason why you couldn't do this with GTK, Qt, etc.
Really, you should be looking at this from the point of view of 'which language do i feel most comfortable with, and is there a mature 2D graphics libabry for this language?' If so, use it.
I gots ta ding a ding dang my dang a long ling long
I did an REU last summer analyzing various ecology-oriented datasets collected in beaver meadows. One of the things we used for this analysis was an application I wrote for visualization. 10 plots in the window, scrolled in unison, click to get details on each point, zoom-in and out &c. In any case, this got me excited, and I've been searching for an existing model of an ecological system for which I could create a plugin for my visualizer.
My setup for the 2D non-animated data browser I created: Squeak 3.0 with some classes borrowed (PlotMorph) and a bunch of others that I wrote myself.
I've not started my animation/modeling work yet, that will be something I'll be working on after finals for a fun project. But my software setup will be the same, but manipulating the information and thus changing the direction of the modeled and animated creatures in real-time.
I may do this using Alice3D, which is a 3D environment within Squeak, or just by using the native GUI toolkit of Squeak, Morphic, which really accommodates doing this kind of work. 2D animation is trivial. You just have each object have a #step method that applies whatever needed changes are required, and a #stepTime method that determines what the interval between updates is.
If you're a C/C++/Java bigot, Smalltalk may come as a bit of a shock. But if you're interested in the best tool for the job, and are looking for an intuitive way to do 2D modelling and animation, Squeak is definitely worth evaluation.
You can email me if there's any other questions you have about my work, or about how useful Squeak is for this kind of stuff- I'd be happy to help.
Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
Although my employer doesn't like the idea of open sourcing entire programs (and, I agree with them on that point!), I was able to convince them that open sourcing certain algorithms and routines would be beneficial. And has it!
For example, a couple years ago, we needed to model sp^3 bonding occuring during nuclear fusion to help optimize a nuclear power plant. Sounds tough. Even tougher, it had to be modelled in real-time so we could see how the dipole-dipole interactions would be affected!
The vector matrix calculations were written in PERL since it provided the best speed. However, I suspected it could be optimized even more than it was (I was using a fast-fourier transformation model). I released the PERL routine under a BSD license (so we could reintegrate it). Within a month, a graduate student in Switzerland was able to improve the speed by another 10% based on some lienear-interpolative binomial algorithms.
Often, we don't get any usefull feedback from the code we open source, but sometimes, we do get some valuable information
I don't actually want to any research myself. Could you guys do it for me?
I know a guy working on this project:
http://sourceforge.net/projects/lmljpeg/
Part of the project includes what has been described as a "Multiplane camera", wbich emulates a stack of cels, which can be defined by XML data, and the individual cels can be programatically defined in C++, ie a cell that shows falling snow/rain/etc. It was originally intended for 2d cel animation, but may be workable for your purposes.
The other part is a MJPEG software encoder/decoder for the zoran MJPEG chipset.
BBK
Take a look at Jazz. It has a 2D scenegraph and support for animation and zooming.
Also, you might look at Squeak and Morphic.
Never underestimate the power of fiber.