The case for the humble PolySphere (A super simple proposal)

This is a proposal for the inclusion of one of the most useful mesh primitives not in Blender. The polysphere.

What’s a polysphere?

I expect most of you already know, but just in case you don’t, a polysphere is a sphere comprised of mostly evenly spaced quads. Below is a comparison between a uvsphere and a polysphere.


So why’s it so useful?

Well, because a polysphere is all quads, it is much better suited to sculpting, and has the advantage of being texture friendly as well. Below are comparisons between a poly and uv sphere in both situations.


In both cases, the triangle fan in the uvsphere causes significant pinching when subdivided. For this reason, the polysphere is a significantly better primitive to use.

Implimentation in Blender

Just add it as a selectable type when adding a sphere primitive. Very simple.

Thoughts? Useful, neutral or pointless?

Add polysphere addon http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Add_Mesh/Add_Extra

In the Add Mesh : Extra Object addon, there’s a Polysphere in Add -> Mesh -> Extra Objects -> Basic Objects
But it does not have any settings you can change unfortunately
edit : Richard Marklew was faster :slight_smile:

So i think an implementation that allows you to get editable settings like the other mesh objects is a good idea.

I was expecting that reply…just not as fast! I know about the addon, but there are a couple of issues. First, it gives me a python error. I know this is something that’s probably unique to me, so I consider that a secondary issue. The main problem is that it’s not actually a polysphere – it’s a cube with a level 3 subsurf modifier added to it. You still have to apply the subsurf modifier and run the “to sphere” command to get a polysphere. It’s actually quicker to select the default cube and hit ctrl+3 than it is to find the polysphere option in the menu anyway.

It’s not a particularly huge issue or anything, just something I thought was handy for potential sculpters.

You could alternately use the cast modifier after the subsurf to makle it more spherical.

select a cube subdivide it to your desire. Then press shift + alt + s (to sphere function) / or you can press space and write “to sphere” and choose the function. Cheers…

I don’t recall anyone asking how to make a polysphere, but thanks anyway! :stuck_out_tongue:

Yes that’s the point of having it as an addon, cutting on the clicking and key pressing, because then one can say that you don’t need a Cube entry in the Add Mesh, as you can just add a Plane, go to Edit Mode, select all and press E, type 2 and here’s the cube.

And if you don’t like any of those, here’s another one that I wrote:

# ##### BEGIN GPL LICENSE BLOCK #####
#
#  This program is free software; you can redistribute it and/or
#  modify it under the terms of the GNU General Public License
#  as published by the Free Software Foundation; either version 2
#  of the License, or (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software Foundation,
#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####

bl_info = {
    "name": "Quad-sphere",
    "author": "Ron Tarrant",
    "version": (1, 0),
    "blender": (2, 58, 0),
    "api": 33832,
    "location": "View3D > Add > Mesh > Quad-sphere",
    "description": "Adds a sphere consisting of quads with eight distributed poles.",
    "warning": "",
    "wiki_url": "",
    "tracker_url": "",
    "category": "Add Mesh"}


import bpy

class addQuadSphere(bpy.types.Operator):
    bl_idname = "mesh.primitive_quadsphere_add"
    bl_label = "Quad Sphere"
    bl_options = {'REGISTER', 'UNDO'}
    
    def execute(self, context):
        bpy.ops.mesh.primitive_cube_add()
        bpy.ops.object.modifier_add(type = 'SUBSURF')
        bpy.context.object.modifiers["Subsurf"].levels = 2
        modifierName = bpy.context.object.modifiers[0].name
        bpy.ops.object.modifier_apply(modifier = modifierName)
        bpy.context.object.name = "Quad-sphere"
        bpy.ops.object.mode_set(mode = 'EDIT')
        bpy.ops.transform.tosphere(1)
        bpy.ops.object.mode_set(mode = 'OBJECT')
        bpy.context.object.dimensions = (2,2,2)
        bpy.ops.object.transform_apply(scale=True)
        
        return{'FINISHED'}

# Register all operators and panels
#import space_info

# Define menu
def menu_func(self, context):
    self.layout.operator("mesh.primitive_quadsphere_add", text = "Quad Sphere", icon="PLUGIN")

def register():
    bpy.utils.register_module(__name__)
    bpy.types.INFO_MT_mesh_add.append(menu_func)


def unregister():
    bpy.utils.unregister_module(__name__)
    bpy.types.INFO_MT_mesh_add.remove(menu_func)

if __name__ == "__main__":
    register()

My objective was to make it as succinct and elegant as possible while also giving it the best possible chance to survive some of the unusual U-turns the code base seems to take from time to time. :slight_smile:

Installation:

  • Save the code somewhere using the name add_mesh_quadsphere.py
  • go to Blender’s User Preferences > Addons,
  • (at the bottom of the dialog) Install from File,
  • find the file and load it (click OK or whatever),
  • click the checkbox to activate it, and
  • Save User Settings to make it permanent (you can also just use it without saving preferences, but you’ll have to do this all over again next time you need it).

Oh, and for anyone who questions the need for this type of ‘primitive,’ any tool that saves time is relevant. Otherwise, why would we have such things as snap (Oh, hell. Just eyeball it!) or the entire Outliner (Just look for it. You know it’s in there somewhere!).

wow such ease of use this polysphere addon ; really brilliant. It is so much hassle to just subdivide a cube… :no:

Thank god it’s an addon so you don’t have to tolerate it

In your first post you elaborate the usefulness of the polysphere and suggest a new function. Someone shows you an easy way to create a polysphere in blender and you respond, you didn’t ask for it? Wow, just wow.

I’m with OP on this one. He’s been around for a long time, and been active on the forums. Although he could have said he knew about the “workarounds” to clear possible comments that have been given here, logics alone (experience level) suggests he knew about them.

I don’t mind addon scripts to do “better versions”, but for when placing a sphere from a sphere menu, it just makes sense to have this one in as an optional type of same family. Unless there are good reasons not to. You really expect the noob to find the addons (even look for them) or find the required keyboard shortcuts to do the job?

I already know multiple ways of creating a polysphere, so I’m not entirely sure what I said to cause that reaction. It was a lighthearted reply…chill out.

Exactly. Whilst creating a polysphere isn’t much of a chore, after doing a few thousand times you start to yearn for a quicker method.

Polysphere should be a built in primitive, no question about it. Some of the Blender folks have a really bad habit of saying that doing 4 or 5 steps in place of one is just dandy and requires no fixing. I’ll assume none of these people model for a living…

Would you integrate the icosphere into that dropdown too? I think having a variety of sphere types all under one roof would be handy while tidying up the add primitive menu.

As I mostly use blender for sculpting…
The 384 faces polysphere is my default, my startup file.
It is also unwrapped for fast cycles baking tests, lol

That’s how I’d prefer it. I was hesitant to suggest it in the initial post because I know how some people react to potential change. I wanted to keep it simple and avoid UI discussion…that always leads to darkness and despair :yes: