Additions from Sun's J3D Tutorial (PDF). Locale establishes a virtual world Cartesian coordinate system. Scene Graph = Scene graph TREE + NodeComponents Scene graph TREE = Group + Leaf NODEs. NO CYCLES in the tree. Leaf classes: Shape3D, Lihgt, Behavior, Sound NodeComponents: Referenced only by Shape3Ds. SceneGraphObject = all of above. SceneGraphObject.isCompiled(), isLive(). Changing objects. Change-capabilites must be turned on before making the object live (apparently not necessarily before compilation) PERSPECTIVE/UNITS Default FOV is 45o (22.5o to each side of the vertical). By default, the image plate (Canvas3D) is centered at the SimpleUniverse origin. Therefore slightly +z virtual objects should appear between you and the screen and should be rendered larger than they are; whereas any greater +z objects will be invisible and behind you. Since there is no X or Y offset, you are looking straight down on an object at x=0, y=0 and can't see its sides if the sides are orthogonal. ViewingPlatform.setNominalViewingTransform() moves eye location from (0, 0, .41?m) to (0, 0, 2.41m). With default 45o FOV, this results in a 2' wide object at origin taking up the entire Canvas3D. For the 2m wide object to actually appear to be 2m, the Canvas3D size must be taken into consideration. I think (according to API Spec for View class) that assumption is the Canvas3D is 1/2 the scren size (default Screen scale policy). Front and back clip distances are specified wrt screen in physical meters, by default. View docs recommend bacl-clip/front-clip > 100 and < 1000 best. COMPILING AND ADDING TO SCENE It's recommended to compile only top-level BGs, and do so right before adding them to the Locale (thereby making the branches "live").