How to convert tangent space normal to model space?

I’m editing the PreNormalPass to show normal include normalmap.

Technique PreNormalPass {

	VertexShader GLSL100 : Common/MatDefs/SSAO/normal.vert
	FragmentShader GLSL100 : Common/MatDefs/SSAO/normal.frag

	WorldParameters {
		WorldViewProjectionMatrix
		WorldViewMatrix
		NormalMatrix
		ViewProjectionMatrix
		ViewMatrix
		WorldMatrixInverseTranspose
	}

	Defines {
		DIFFUSEMAP_ALPHA : DiffuseMap
		HAS_NORMALMAP : NormalMap
		NUM_BONES : NumberOfBones
		INSTANCING : UseInstancing
	}
}

Now I have a tangent space normal map. How to convert it to world space or view space?

Tangent Space <-> Model Space <-> World Space <-> View Space <-> Clip Space

I’ve read any article. How can I get TBN Matrix in jme?

http://www.txutxi.com/?p=316#

Look at JME’s lighting shader and you will see how it gets the TBN from the normal and tangent vertex attributes.

I found this. I’ll try it, thx!
Tangent.glsllib

mat3 Tangent_GetBasis(){
	vec3 wvBinormal = cross(wvNormal, wvTangent);
	return mat3(wvTangent, wvBinormal, wvNormal);
}

why do you have a tangent space normal map ?

Most often that’s the case. The blueuish normal maps are in tangent space.

Sorry to necro but I just came across this struggling to do the exact same thing - I got the TBN matrix from the LightingShader, and my understanding is that this will convert from tangent space to model space.

So to go from that to viewspace

vec3 normal = vec3(normalColor.xyz) * tbnMat;
vec4 viewSpaceNormal =  vec4(normalFromMap,0.0) * g_WorldViewMatrix;

I know I’ve done something wrong since I’m getting some messed up results. Is this bit wrong? Else I must be cocking up the TBN matrix bit.

EDIT: Oh shit I forgot about taking it from [0,1] to [-1,1] GG no more questions for now! All works