What is Squeak-Alice?
Alice (http://www.alice.org) is an authoring tool designed to allow people
without programming experience to build interactive 3D worlds. The Stage 3
Research Group (Randy Pausch director) started the Alice project at the
University of Virginia, and is continuing their work at Carnegie Mellon
University (http://www.cs.cmu.edu/~stage3). Squeak-Alice brings the ideas and
the ideals of Alice to Squeak, with the goal of introducing even more people
to 3D graphics and allowing them to author in the medium.
How do I create Wonderlands?
You create a Wonderland by evaluating:
Wonderland new.
This creates a new Wonderland, along with a camera window looking into the
Wonderland, a few controls, and a scripting editor.
How do I add Actors to my Wonderland?
Currently Wonderlands prefer to create Actors from Alice .mdl files. As a
service to the community, the Alice team has agreed to make their models
available to Squeak users. The model library can be downloaded from:
ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/alice/Objects.zip
To add a model, you evaluate the following in the script editor:
w makeActorFrom: 'path/to/actor.mdl'
ex. w makeActorFrom: 'C:\Program Files\Squeak\Actors\Animals\bunny.mdl'
This creates a WonderlandActor instance for the actor and adds it to the
Wonderland. By default actors are named using the name of the model file;
in our example the first actor we create with this model file will be named
bunny, the second bunny2, etc.
Actors are hierarchical objects, which means that they are made up of
different parts. In the Actors pane of the script editor you can see a list
of the actors currently in the Wonderland and the parts that make up each
Actor. To access the parts of an Actor you use the name of each part of the
Actor from the top level part down to the part you want.
Thus, to access the bunny's left arm you'd use:
bunny body leftArm
What can Actors do?
Actors have a number of built-in primitive behaviors. The most commonly used
behaviors are:
move - moves the actor in the specified direction
moveTo - moves the actor to a specified position
turn - turns the actor in the specified direction
turnTo - turns the actor to a specified orientation
roll - rolls the actor left or right
pointAt - points the actor at the specified actor
resize - changes the size of the actor
place - place an actor relative to another actor
standUp - causes the actor to stand up
destroy - destroys an actor
Each of these behaviors can be used in different ways and with different
levels of control. One of the bumperstickers from Alice is "controlled
exposure to power"; the simple commands you learn first can also be used in
more powerful ways.
Some useful combinations are:
bunny move: forward
bunny move: forward distance: 2
bunny move: forward distance: 1 duration: 4
bunny move: forward distance: 1 duration: 2 asSeenBy: camera
bunny moveTo: { 0. 1. 0} duration: 2
bunny moveTo: {0. 0. 1} speed: 4
bunny moveTo: {asIs. 0. asIs}
bunny head pointAt: camera
bunny head pointAt: camera duration: eachFrame
For other combinations (until I've written the Squeak-Alice active essay)
look at the WonderlandActor class.
Composing animations
Right now there are two ways to compose basic behaviors to build more
complex behaviors. They are:
- doing component animations in parallel
ex. w doTogether: { bunny move: forward. bunny turn: right }
- doing component animations in order
ex. jump := bunny move: up.
fall : = bunny move: down.
hop := w doInOrder: { jump. fall}
You can also start and loop these animations.
hop start
hop loop: 2
hop loop
hop stopLooping
What are Cameras?
Cameras are a special type of Actors. Although they have all the behaviors
that Actors do, they also provide windows into the 3D world. You create a
camera by evaluating:
w makeCamera
The first (default) camera is named camera. Subsequent cameras are named
camera2, camera3, etc. Each camera displays into a camera window. These
windows are named cameraWindow, cameraWindow2, etc. You can also animate
these windows. Try:
cameraWindow move: right distance: 200
Moving the Camera Around
There are two ways of moving the camera around. One is to type commands for
it in the script editor. The other is to mouse around using the camera
controls.
cameraWindow showCameraControls
Click in the controls morph and drag. The controls currently work as
follows:
no modifier keys: move forward/back, turn left/right
shift: move up/down, move left/right
ctrl: turn left/right
shift + ctrl: turn up/down
Blending 2D and 3D
One of the goals of Squeak-Alice is to explore using 2D and 3D elements
together. To blend the 3D world with the 2D desktop try the following:
ground hide
camera turnBackgroundOff
Work in Progress
Squeak-Alice is a work in progress that's only a few months old. Although
it draws heavily on Alice for inspiration, there is some new functionality
that has not yet been fully user tested, and any bugs are completely my own.
You can direct questions, comments, bug reports, and complaints to yours
truly at:
jpierce@cs.cmu.edu
I also encourage you to try out the Alice authoring tool yourself; you can
download the authoring tool and web browser plug-in free from
http://www.alice.org. There's also an Alice tutorial on the web site, and
although the syntax is different most of the concepts are the same.
Enjoy,
Jeff