Welcome to the JMJ3D page!

This project started as a bit of fun. I like JuggleMaster Java, but I thought the graphics could do with spicing up a bit and things rapidly got out of hand. I took the sources to JuggleMaster Pro Java, wrote a 3D viewer for it, made the minimum changes to JMJ support the 3D viewer (about 10 lines worth) and that was it.

juggling robot

A screen shot for those who are Java3D-challenged

Before we go any further, a word of warning: this was my own private let's-see-what-happens-if-I-do-this project. I've made absolutely no attempt to make it usable by anyone else, tested it on other machines, or made any attempt to optimize it. If I had the time I would, but I don't. This may work for you, or it may not. This project represents only a few hours work and there are loads of rough edges. In the future I may add lots of nifty features: different items, different colours, better user interface, sound. Or, I may not.

Please check out the original JuggleMaster Java Copyright and License terms in English and Japanese (the ones that say I'm allowed to do this).

screen shot screen shot screen shot
screen shot screen shot screen shot


This application uses Java3D to perform the 3d rendering. I have only ever tested this on a Mac OS X 10.3/4 and Windows XP using the OpenGL version of Java3D. Anyone else is on their own. You will need a computer which supports Java 1.3 and Java3D.

In general the Windows version of Java3D is better than the Mac version. I've tried to make it look good on both, but this involves some compromises to work round various bugs. In particular, there are lots of lighting bugs on the Mac version which prevent glowing props and the sky from working properly.

This is version 2 of JMJ3D. Differences from version 1 include:

  • A new user interface using Swing making it easier to choose tricks.
  • You can change the juggling props from the UI.
  • The robot now has hands!
  • Some new props: stage balls, acrylic balls, diabolos (part of a long-term secret plan).
  • Display of the current trick as a thought bubble.
  • Made the background box transparent from outside so you can zoom out further.
  • Added lighting so you can juggle fire torches in the dark.
  • Fixed numerous bugs, including the infamous freezing bug (turned out to be a bug in Java3D)

Coming Soon:

  • Two-robot passing patterns using 4-hand siteswap!
  • Different types of club throw - e.g. flats, triples.


By far the easiest way to run JMJ3D is by clicking on this Java Webstart link. If you have Java Webstart installed (and you probably do), this will make sure that Java3D is installed for you before running.

If you don't have Java Webstart, or it doesn't work for you, use the manual method: You will need to install Java3D if you don't already have it. Mac OS X users can get Java3D here, but note that if you're running Tiger you already have it. Windows users can get it here.

  • Download JMJ3D.jar. This is a double-clickable JAR file.
  • Download JMJ3D-source.zip. This is the source code of the application.

Running It

Double-click on the jar file, or type:

java -jar JMJ3D.jar

in your favourite command line. Two windows will appear. The first one is the control panel and the third (which may take some time to appear) is the 3D viewer. In the viewer you can use the mouse to navigate (modifiers for Mac one-button mice in brackets):

  • Left Button (Shift-click) rotates the view
  • Middle Button (Option-click) zooms the view
  • Right Button (Command-click) translates the view

You can also type:

  • 1/2/3/4 to change the number of spins the objects do.
  • Space to pause the animation.

From the control panel you can choose a new juggling trick to perform, change viewing settings and provide extra difficulties for the juggler, such as balancing a club or riding a unicycle.


The original JuggleMaster was written by Ken Matsuoka.

JuggleMaster Pro Java was written by Yuji Konishi and Asanuma Nobuhiko.

The LatheShape3D class was written by Andrew Davison.

The background textures are from the Universal Media collection.

Many thanks to all these people.

FAQ and Troubleshooting

1) It doesn't work.

I dunno. It works for me. Make sure you've got Java3D installed and at least Java 1.3.

2) Can I change the colours of the balls?


3) Can it juggle different objects at once?


4) Can it throw under the leg/do head catches/balance a club on its nose/do flat throws/head spins?


5) Can it do passing?

Well...sort of. The passing stuff is very experimental and lots of it doesn't work very well. Basic 6-count passing is OK, but no tricks.

Stop asking these questions! You have the source - go and fix it for yourself! I haven't got the time, although I'd like to hear if you make any really cool modifications.

8) Why does the fire point in the wrong direction when you rotate the view?

I'm still working on that.

9) How does the robot manage to juggle with no hands?

It uses a very advanced and top-secret sort of force field thingy (stop me if I'm getting too technical). I can't say any more because it's classified.

10) Is that an EJC 1999 T-shirt the robot is wearing?


11) And is that also a 2004 BJC pass round its neck?


12) Why is the robot floating above the ground?

Because it doesn't look right if you put it on the ground (trust me), and because hovering is a more impressive trick. Actually, it only thinks it's juggling outside. In fact, it's in a Butterfingers virtual-reality juggling cube (zoom out enough and you'll see).

13) Why are the hats so big?

Because the robot has a big head.