Skybox disappearing sibling spatial, but only on Linux (within VMWare)

Below is a simple app that creates a cube and a skybox, adds the cube to the scenegraph, then later adds the skybox. On windows, the result is what you’d expect - a blue box on a black background, then a blue box floating above the lagoon. On linux though, once the skybox is added, the cube spatial disappears.

Geometry cube;
Spatial skybox;
float timeOffset;

public void simpleInitApp() {
	// create a cube in front of the camera
    Material m = new Material( assetManager, "Common/MatDefs/Misc/Unshaded.j3md" );
    m.setColor( "Color", ColorRGBA.Blue );
    cube = new Geometry( "Box", new Box( 1, 1, 1 ) );
    cube.setMaterial( m );
    cube.setLocalTranslation( 0f, 0f, -3f );
    // create a simple skybox using jpgs (vmware 3d can't decode dds formats)
    Texture west = assetManager.loadTexture( "Textures/Sky/Lagoon/lagoon_west.jpg" );
    Texture east = assetManager.loadTexture( "Textures/Sky/Lagoon/lagoon_east.jpg" );
    Texture north = assetManager.loadTexture( "Textures/Sky/Lagoon/lagoon_north.jpg" );
    Texture south = assetManager.loadTexture( "Textures/Sky/Lagoon/lagoon_south.jpg" );
    Texture up = assetManager.loadTexture( "Textures/Sky/Lagoon/lagoon_up.jpg" );
    Texture down = assetManager.loadTexture( "Textures/Sky/Lagoon/lagoon_down.jpg" );
    skybox = SkyFactory.createSky( assetManager, west, east, north, south, up, down );

public void simpleUpdate( float tpf ) {
	// create a seconds value since app start
	timeOffset += tpf;
	if ( (int) timeOffset == (int) (timeOffset - tpf) )
	switch ( (int) timeOffset ) {
	case 2:
		System.out.println( "Attaching cube" );
		rootNode.attachChild( cube );
	case 4:
		System.out.println( "Attaching skybox" );
		rootNode.attachChild( skybox );
	case 8:
		System.exit( 0 );


I tried forcing all node cullhints to never, updating bounds, and a few other guesses - but the hiding still happens. Again, only on linux (64bit Debian wheezy running within VMWare 9 w/ 3D acceleration enabled).

Note, I did compare capabilities between the native card and the virtual one - the vm is missing: TextureMultisample, OpenGL30, OpenGL31, OpenGL32, GLSL130, GLSL140, GLSL150, TextureArray, FloatColorBuffer, FloatDepthBuffer, and PackedDepthStencilBuffer.

If anyone has a native Linux box handy, would you mind running this code to see what it does? I’m curious if it’s a result of the VMWare environment or not.

Thanks =D

Does it have a similar issue if the sky is added before the cube? ie: will the cube show up in that case or just never show up?


Yes, i tried two cubes, one added before the skybox and one after. The pre-add one disappears when the skybox is added, the post-add never shows. Dumping the children of rootNode still shows them, and their translations, culling, etc - all look normal.