Here we use the ZIM Scrambler() to easily make a 2D puzzle and then we add that to a mesh added to a model. ZIM 015 - TextureActive Model - Code Creativity
We use ZIM TextureActive that maps the 2D work onto a three.js CanvasTexture and supplies the raycasting into ZIM. Find out more about TextureActive here ZIM TextureActives for Interactive Textures
ZIM is a 2D Canvas Framework at https://zimjs.com that works well with three.js. Please let us know if you have any questions! Cheers.