[SOLVED] Alpha blendmode material in Guinode is invisible

Can’t figure out why the card is invisible when attached to the guinode when alpha rendering is enabled but works fine when attached to the rootnode.

Here is the non-alpha material attached the guinode:

Here is the alpha material attached to the guinode:

Here is the code that turns alpha rendering on and off:

private Geometry createCardFront() {
	Texture widgetFrontTexture = assetManager
			.loadTexture(gameRulesModel.getGameAssetFilepath() + widget.getImageFrontFilename());

	Material widgetFrontMaterial = null;
	if (shaded) {
		widgetFrontMaterial = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
		widgetFrontMaterial.setTexture("DiffuseMap", widgetFrontTexture);
	} else {
		widgetFrontMaterial = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
		widgetFrontMaterial.setTexture("ColorMap", widgetFrontTexture);
	}

	Box widgetFrontShape = new Box(gameParameters.getHalfCardWidth(), gameParameters.getHalfCardHeight(),
			gameParameters.getHalfCardThickness() / 2);
	Geometry widgetFrontGeometry = new Geometry("CardFrontGeometry", widgetFrontShape);
	widgetFrontGeometry.setMaterial(widgetFrontMaterial);
	widgetFrontGeometry.setLocalTranslation(new Vector3f(0, 0, gameParameters.getHalfCardThickness() / 2));

	if (alpha) {
		widgetFrontMaterial.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);
		widgetFrontGeometry.setQueueBucket(Bucket.Transparent);
	}

	return widgetFrontGeometry;
}

Things in the gui node are in the gui bucket. The transparent bucket is for objects in the main scene. The gui node is already sorted back to front by Z.

So don’t set the bucket or set it to inherit when in the gui node.

1 Like

Worked like a charm. Thanks again pspeed!

Code change:

if (alpha) {
    widgetBackMaterial.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);

    if (!gui)
        widgetBackGeometry.setQueueBucket(Bucket.Transparent);
}

Proof: