Here we show side by side a model with just a diffuse texture versus one with diffuse, specular, normal map, and ambient occlusion textures. The additional textures were all guessed from the diffuse textures using the default settings of the free ShaderMap tool. Expending effort to produce better additional textures would no doubt result in a prettier model.
In terms of code, this example is essentially a combination of previous ones. We load two different models and create an orbiting camera. That's it.