The way we did the 3D dice was to roll 3D cubes (with a 3d sprite on each face) in a subviewport, and render that on top of the rest of the game.
To get which face was up, we just calculated which sprite had the highest position when it stopped rolling.
I hope that helps, good luck with the dice game 🙂