The scale of my models seems to changed their positions, but I don't know why. I am doing it in the S-R-T order. The blue plane has (0,0,0) as it's origin.
The model matrix is calculated like this:
// set model matrix
glm::mat4 model = glm::mat4( 1.0f );
// scale
model = glm::scale( model, _entity.Scale );
// rotate
model = glm::rotate( model, glm::radians( _entity.Rotation.x ), glm::vec3( 1.0f, 0.0f, 0.0f ) );
model = glm::rotate( model, glm::radians( _entity.Rotation.y ), glm::vec3( 0.0f, 1.0f, 0.0f ) );
model = glm::rotate( model, glm::radians( _entity.Rotation.z ), glm::vec3( 0.0f, 0.0f, 1.0f ) );
// translate
model = glm::translate( model, _entity.Position );
Shader::setMat4( _shader, "model", model );
In the shader it looks like this:
vs_out.FragPos = vec3(model * vec4(aPos, 1.0));
vs_out.Normal = mat3(transpose(inverse(model))) * aNormal;
vs_out.TexCoord = aTexCoord;
gl_Position = projection * view * vec4(vs_out.FragPos, 1.0);
The first picture is with 1.0 scale, the second with 10.0 scale:

