How can I make this Regular Dodecahedron shape, with the 5 point star or pentagram? I'm confused with these geometric shapes and settings. How to achieve this? I tried adding it using the Geodesic Dome
addon.
-
$\begingroup$ Do you want it like the one shown in the middle screenshot, the pentagram built from the center points of the outer edges? Then try Harry's answer. Or should the faces be like in your first screenshot, the pentagram just built from the corner vertices and holes inbetween? $\endgroup$– Gordon BrinkmannAug 2 at 6:49
-
$\begingroup$ I updated the title to Dodecahedron so as to not confuse search results, because that's not a geodesic dome afaik $\endgroup$– Harry McKenzieAug 2 at 6:58
-
1$\begingroup$ @HarryMcKenzie The term dodecahedron simply means, it's a polyhedron with exactly 12 faces. In this case a regular dodecahedron is what we want (all faces are the same). And actually, what you get when adding a Geodesic Dome in Blender is not a geodesic dome either, because a geodesic dome is a hemispherical architectural structure. Adding a Geodesic Dome adds a geodesic polyhedron, which consists of tris. However, in geometry every polyhedron is associated with a dual structure, where vertices of one correspond to faces of the other and the edges correspond to each other. $\endgroup$– Gordon BrinkmannAug 2 at 9:40
-
1$\begingroup$ And the regular dodecahedron is the dual polyhedron to the regular icosahedron, which means you can simply create a regular dodecahedron in Blender by adding a Geodesic Dome set to Class 1, Hedron: Icosahedron, Shape: tri, Frequency: 1 and the Dual option enabled. Regular dodecahedron from Geodesic Dome $\endgroup$– Gordon BrinkmannAug 2 at 9:45
-
1$\begingroup$ @HarryMcKenzie Yeah, well sometimes I'm sorry for being a math nerd :D $\endgroup$– Gordon BrinkmannAug 2 at 9:59
4 Answers
That's the shape of a Dodecahedron with a mesh on each face resembling that of a Pentagram. You can easily add this solid in Blender 3.6 via Add > Mesh Function > Regular Solid > Dodecahedron. For other Blender versions, enable the addon Add Mesh: Regular Solids under Edit > Preferences > Add-ons and add it via Add > Mesh > Solids > Platonic > Dodecahedron.
Then tab into Edit Mode and press A to select all faces and press X > Limited Dissolve. With all faces selected go to menu Mesh > Split > Faces by Edges.
Then with all faces still selected press P > By Loose Parts.
This will create separate objects for each face which you can then link later so when you topologize one or any face as Pentagram, it will reflect on each face. But first you have to align each of the 12 face origins to make sure they all face their Face Normals. So first with all objects selected, right click and choose Set Origin > Origin to Geometry.
Now here's the tricky part. Set the Transformation Orientation
to View. Then select one object at a time and tab into Edit Mode. Select any Edge and press Shift+NumPad-7 to align the Face Normal to point toward the camera then tab back into Object Mode and go to menu Object > Transform > Align To Transform Orientation. Notice how this aligns the origin to go along the face normal towards the camera. Do this with all 12 faces. You can also easily automate this process as shown in this answer.
Now with all selected objects having aligned origins, press Ctrl+L > Link Object Data. Now you can topologize one face into a Pentagram and it will reflect on all faces as well.
Now tab into any object in Edit Mode and select all vertices and right click then select Subdivide. Select 2 vertices at a time and press J to split the faces into the Pentagram shape. Once you are done, tab back into Object Mode, verify all faces have the same topology reflected and select all objects then press Ctrl+J to join them. Then tab into the merged object and select all vertices with A then press M > Merge By Distance.
Duplicate the object and add a Wireframe Modifier to one object. Then add color materials to the other one.
I'm sure there is an easier way to do this using Geometry Nodes as well.
-
5$\begingroup$ Just a quick note: you do not have to select just 2 vertices at a time when you use Connect Vertex Path with
J
because as the tool name says, you can select a path of vertices. So if you you Shift-select the vertices in the order in which you would draw a pentagram, this will connect them all in a row, only the first and last one have to be connected separately - because you cannot select the first one twice after you selected the last one, it would simply be deselected. $\endgroup$ Aug 2 at 6:56 -
4$\begingroup$ @GordonBrinkmann ah i didn't know that, thank you for this info! $\endgroup$ Aug 2 at 7:00
-
$\begingroup$ I think something like this would be the quickest way for one face with pressing
J
three times: i.stack.imgur.com/RG2KG.gif $\endgroup$ Aug 2 at 7:41 -
1$\begingroup$ cool thank you! yeah that is definitely faster. I added another answer that is way faster. Just a script XD $\endgroup$ Aug 2 at 8:25
In my previous Answer I gave a tutorial how to manually model this shape. Here is faster automated way which creates the Dodecahedron and splits it into separate faces that get linked together as same mesh. Just execute this python script in the Text Editor
. And then edit any of the object faces. Then select all objects and join with Ctrl+J and merge all vertices in Edit Mode with AM > Merge By Distance. You're done.
import bpy
bpy.ops.mesh.primitive_solid_add(source='12')
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.mesh.dissolve_limited()
bpy.ops.mesh.edge_split(type='EDGE')
bpy.ops.mesh.separate(type='LOOSE')
bpy.ops.object.mode_set(mode='OBJECT')
area_type = 'VIEW_3D'
areas = [area for area in bpy.context.window.screen.areas if area.type == area_type]
bpy.context.scene.tool_settings.use_transform_data_origin = True
bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY', center='MEDIAN')
selected_objects = bpy.context.selected_objects.copy()
bpy.ops.object.select_all(action='DESELECT')
with bpy.context.temp_override(area=areas[0]):
for obj in selected_objects:
bpy.context.view_layer.objects.active = obj
obj.select_set(True)
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.transform.create_orientation(use=True)
bpy.ops.object.mode_set(mode='OBJECT')
transform_type = bpy.context.scene.transform_orientation_slots[0].type
bpy.ops.transform.transform(mode='ALIGN', orient_type='Face', orient_matrix_type=transform_type, mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='ACTIVE', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)
bpy.ops.transform.delete_orientation()
obj.select_set(False)
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.make_links_data(type='OBDATA')
Another method, using object-instancing:
- Make your Math Function > Regular Solid > Dodecahedron. and X > Limited dissolve its excess edges.
- ShiftD duplicate off one of its faces, and P Separate the selection to a new object.
Now you have to align the pentagon to its own object-origin, as shown on the right.
In Edit Mode:
- Create a Custom Orientation from the single face
In Object Mode ...
- Header > Object > Origin > Origin to Geometry
- Header > 'Options' > Affect Only Origins
- Header > Object > Transform > Align to Transform Orientation
- Option off again, AltG,AltR align the pentagon flat
Back in Edit Mode, annoyingly ..
- RZ -90, so one of the points of your pentagon is down object-Y
- Set the dodecahedron > Object tab > Instancing panel > to 'Faces'
- CtrlP Parent the aligned pentagon to the dodecahedron
.. and any edit to the pentagon (or an AltD instance of it, for convenience) will be reflected in all instances, aligned, ready for CtrlA, Make instances real, CtrlJ Join , and (Edit) M > Merge by Distance.
-
$\begingroup$ WOW, thanks for your insight, so many methods, very helpful. $\endgroup$ Aug 3 at 0:50
-
$\begingroup$ very interesting approach with the instancing! never thought of this. it's easy to align everything to view as shown in gif but tricky to get the xyz's right, i had to do trial and error with different xyz rotations. it always got messed up after parenting then finally i was able to get the right order of xyz's. How does the parenting actually work in this scenario? Why would it behave like that if you parent the single face to the dodecahedron? $\endgroup$ Aug 3 at 1:34
-
-
1$\begingroup$ Hi. @HarryMcKenzie, cheers! Link edited in. It's pretty ugly, IMO, .. I think of it as 'legacy'. Even uglier, the orientation the instancing uses is at 90° to the orientation generated by Create Orientation . Your ways are better, I think. $\endgroup$– Robin Betts ♦Aug 3 at 6:24
Warning: Potential Mesh Boolean abuse ⚠️
This post is suspected to have pushed the boolean feature beyond a reasonable extent.
There is reason to believe this technique is not the best approach and has been marked by our community.
Boolean algorithms are esoteric in a sense: the process is so complex behind the scenes, that it's hard to reason about it and predict if it will continue to work in future releases of Blender, or maybe even on different hardware or operating systems (hopefully the calculations aren't architecture-dependent, e.g. 32 vs 64 bit accuracy). Needless to say, trying to repurpose the technique for e.g. a different Rubik's shape may be hell. BTW, did you know "Bool" is pronounced the same as "Ból" in Polish and means "Pain"?
To add salt to injury, I'm using Blender 4.0 αlpha - I tried at first by simply duplicating a custom group multiple times, which worked for me in the past ([1], [2], [3]), but discovered when using Boolean difference, things are not only cut, but also joined! Dealing with it before B3.6 would take a huge amount of nodes. In B3.6 a Simulation Zone could be used, but as you can see I ended up with a nested Repeat Zone, and since you can't nest Simulation Zones, a workaround would again increase the complexity; so if you think the answer is complex enough, hopefully you will forgive me the alpha version usage (I wouldn't dare to ask for forgiving the boolean).
Custom Group (yes, it's within a Repeat Zone and it contains a Repeat Zone):
Result:
I know what you're thinking, but Markus, obviously you just need 10 half-half cuts, aligned to corners:
Yes, as long as you only just want to have the correct outside. The difference can be shown using bevel and animation:
So do you want a dodecahedron equivalent of a 2×2 or 3×3 cube? I interviewed an owner of such Rubik's dodecahedron and he says it only has two types of rotation: one as shown above and the rotation of a single-piece triangular corner:
I don't even have such corner… Yet! An update soon… If Boolean police doesn't get me first.
-
1$\begingroup$ I already have the corners done, but need to write it into an answer… i.imgur.com/FWriYgY.png $\endgroup$ Aug 3 at 11:13