How to snap an object onto a face of another object?

I have a pentagon with a square inside of it with a very specific position inside the pentagon.

I need to duplicate the pentagon 12 times and snap it into faces of a dodecahedron, which is a solid made up of 12 pentagon (ngon) faces:
enter image description here

How can I do this?
In my image above the way I’ve done it is turned the pentagon with the square inside it into an image and applied it as a texture on the dodecahedron to use as a visual guide for modelling the squares by hand. Due to texture filtering imperfections and manual nature the results have not been very accurate at all.

Can the placement of the pentagon+square on a specific pentagon face of the dodecahedron be done automatically, for example via snapping? The pentagon+square will need to share both the position and rotation of the penatgon face of the dodecahedron.


PS. This is a simplified example of the problem, before you ask why anybody would want to perfectly position a square like this. The square is actually a fiducial marker and we are using Blender to create simulated camera videos for a OpenCV machine vision project to exclude any issues arising from real world camera imperfections from our tests.

I have an idea, although I feel it is not perfect. There might be a better one. But in any case:

  • parent you pentagon/cube to the dodecahedron
  • enable duplication (faces) on the dodecahedron

If you need to control the rotation insofar that it does also matter which of the 5 rotation possibilties for each face is picked, it gets a little bit messy, though.

You would need to split the edges of the dedecahedron and rotate the pentagons individually as needed. To do that, aligning the view to a pentagon (view -> align view to active) and rotate by entering a fixed angle of 72°.

Note: if you need the dupli instances as individual objects, you can select the object and do object->apply->make instances real.

Another more manual solution: In edit mode, when enabling snapping and set Affect to move+rotate and Target to Vertex, you can easily align vertices between different objects, while only moving and rotating. Doing that for 3 different vertices per object should create perfect alignment in all dimensions.

Duplifaces are gone in 2.8.

Ehm? Object context -> Instancing.

name changed, did not know.

Doesn’t seem to work right.
Sorry, I’ve been messing with the settings for an hour now. I’m attaching a sample blend file.issue.blend (602.4 KB)

I think this is an add-on job. The add-on will parse the dodecahedron and its faces/vertices, create location, rotation, vertex order data then use those to recreate doca with the target pentagon in the image.

Snapping or duplicating to the face centers is not the problem, aligning with the rotations is. This is no biggie for a simple case like above, but probably not feasible for complicates scenarios.

For me it works, when I remove the triangle/quad subdivision of the pentagons.

issue.blend (603.1 KB)