JMonkey Simulator has a big Scene Graph.  This is like a tree with all the objects defined with names.

All of these nodes would have a name.  And all of the nodes could be moved within 3d space.  The camera is a node too, and can be moved similarly.

An example in JMonkey would be to start the service.


jme = Runtime.start('jme','JMonkeyEngine')
# add an solid orange box
jme.addBox("box", 1.0, 1.0, 1.0, "fc8803", true)

# change the position of the camera
jme.getNode("camera").move(3, 1, 4)
# look at the box from the new position

You also have the ability to rotate the camera, or any other node.
jme.rotateOnAxis("camera", "y", 220)

Be aware the 220 is degrees in relation to the global world coordinates.
So, that command is saying rotate the camera to a 220 degree heading, which is not the same as saying rotate 220 degrees to the right.

I created an animation system which allows movement and rotation to be specified with a speed.

jme.rotateOnAxis("camera", "y", 220, 1)
it didn't stop for me so I wouldn't be surprised that there are a few bugs to cleanup ;)