Above, we have a nearly complete 3D Bottle Opener.
It even has keychain physics!
First I made a 3D model of a bottle opener.
I used Blender, a free 3D modeling tool.
I defined how the texture would be applied through UV mapping.

The texture is mirrored on the model.
This allowed me to have high resolution detail in a small texture file.
I created a shadow effect.
Ambient occlusion is a rendering technique that calculates how exposed each point in a model is to ambient lighting.
For my purposes, it makes your base texture look more realistic, even without lighting.

I baked this into my base color texture.
The base color (below) is called the diffuse texture.
You can also define extra bump details in a normal map, or how shiny surfaces should be in a specular map texture.

In older games, you might see an entire 3D model look shiny or not. Today you can define shininess in a texture: the metal part of the bottle opener should be very shiny, the plastic should be kind of shiny.
I created a normal map and specular map.
In modern games, multiple textures are combined on a model.
That’s what I did to make my 3D Bottle Opener!

Above is a side by side of the nearly finished 3D Bottle Opener (right), next to an actual scan (left) of a real bottle opener mine is based on.
I think my 3D one looks better than the real thing!