9
$\begingroup$

I start with ICO sphere

4 Subdivisons.

Simplify, dissolve vertices.

Inset "dimples"

Select the "in betweens", similar all - fatten up a little

Subdivision surface

On a real one, there are less dimples. More defined space in between. Very slightly deeper dimples.

My attempt vs goal:

$\endgroup$
6
  • $\begingroup$ An icosphere might not be the best shape to start with, as it has triangles and a pole in the top and bottom. Try using a cube, subsurf, apply subsurf and then inset. $\endgroup$
    – susu
    Commented Oct 2, 2020 at 16:45
  • 1
    $\begingroup$ Hi. Do you want "ideally" to get ride of pentagons? So a fake regular surface? $\endgroup$
    – lemon
    Commented Oct 2, 2020 at 16:50
  • $\begingroup$ Right - trial and error Indeed :) its really no need for pentagons, triangles - the ideal (end goal) is a regular smooth surface, fake is fine! LOL. I'm up for anything to get it to look like the right... meanwhile, I'll try the cube approach... Photorealistic comparison to right is the ultimate goal obviously. $\endgroup$
    – MBonJovi
    Commented Oct 2, 2020 at 17:01
  • $\begingroup$ I tried cube - subdivi Vp 3 - apply. inset.. then applied again - total count of dimples way too less, circle shapes (dimples are strange) - hmmmm $\endgroup$
    – MBonJovi
    Commented Oct 2, 2020 at 17:09
  • 1
    $\begingroup$ Packing circles on a sphere while optimizing for uniformity is relatively hard, mathematically speaking. Point in case, if you look closely at the photo of the real golf ball, there appears to be a vertical/diagonal "ridge" wider than the other distances between dimples. Perhaps that's the sphere's equator at which two halves were joined together during manufacturing? In any case, to really emulate the golf ball well, a good first step would be to find out the packing algorithm used there $\endgroup$
    – Will
    Commented Oct 3, 2020 at 1:59

2 Answers 2

9
$\begingroup$

You can make a golf ball this way (inspired by this video by Savoir Pour Tous):

  • Create an ico-sphere with a Subdivision value of 3:

enter image description here

  • Bevel with Width Type > Percent and Width Percent > about 28%:

enter image description here

  • You have mainly hexagons and also some pentagons, try to equalize the areas. Select an hexagon and press ShiftG > Area. Select a pentagon and same thing, ShiftG > Area:

enter image description here

enter image description here

  • Extrude, scale down:

enter image description here

  • You have a golf ball (yes, a bit ugly because it needs a bit more accuracy):

enter image description here

$\endgroup$
6
  • $\begingroup$ nice technique! I wonder how we could have all the dimples be the same size $\endgroup$
    – pevinkinel
    Commented Oct 3, 2020 at 16:31
  • $\begingroup$ I haven't found any method that allows it but it must exist somewhere $\endgroup$
    – moonboots
    Commented Oct 3, 2020 at 16:51
  • $\begingroup$ right, after checking and seeing pentagons on the base icosphere, turns out maybe it isn't possible: stackoverflow.com/questions/12847654/… $\endgroup$
    – pevinkinel
    Commented Oct 3, 2020 at 16:54
  • $\begingroup$ maybe a method allows to do it with evenly distributed circles? Golf ball manufacturers can do it so it must be possible $\endgroup$
    – moonboots
    Commented Oct 3, 2020 at 17:24
  • $\begingroup$ the question is if each dimple is surrounded by 6 or 5 other dimples. Looking at photos of golf balls, looks like it's both and when it's 5, the dimple is slightly smaller. so your model was right all along! $\endgroup$
    – pevinkinel
    Commented Oct 3, 2020 at 18:21
9
$\begingroup$

This may be more of an excursion than an answer, because you did say 'modelling'.. This is shading.

Using OSL, it's possible to get a shader to respond to the topology of the underlying mesh. In particular, this script-node tells you:

In A, B, and C, the World-Space locations of the corners of the render-triangle in which the shading-point happens to find itself.

In inCenter, the World-Space location of that triangle's incenter

In inRadius, the radius of the circle that would touch all the sides of the triangle at once, if centered on inCenter.

shader TriangleInfo (

    output vector A = 0.0,
    output vector B = 0.0,
    output vector C = 0.0,
    output vector inCenter = 0.0,
    output float inRadius = 0.0
)   
{
    A = P - (u*dPdu) - (v*dPdv);
    B = A + dPdu;
    C = A + dPdv;
    
    float a = length(C-B);
    float b = length(C-A);
    float c = length(B-A);
    float s = (a+b+c)/2.0;
    
    inCenter = ((a*A)+(b*B)+(c*C))/(a+b+c);
    inRadius = sqrt(s*(s-a)*(s-b)*(s-c))/s;     
}

If Blender's Geometry node exposed dPdu and dPdv, which are actual World-Space vectors corresponding to u and v, if the triangle is expressed in barycentric coordinates, (i.e the vectors A->B and A->C, with my vertex labels) we wouldn't need to use OSL, But unfortunately, it doesn't.

Using this script-node, subtracting the locations it gives you from the shading point, and taking the length of the difference, you can get the distance of the shading-point from them. If you put those distances through Less Than thresholds, for example, you can generate a mask based on the triangles:

enter image description here

The circles around the vertices are thresholded distances from A,B,and C (the same for each, in every triangle) and the ones in the middle are around the inCenters. Those ones can automatically vary in diameter to fit skew triangles, by being set to a percentage on the inRadius, (which may be necessary, you can't tessellate a sphere with hexagons alone.)

By taking the minimum distance of the shading-point P to any of A,B,C, or the inCenter, you can decide which 'feature' P belongs to, and generate a distance-field:

enter image description here

This tree may look scary, but it's just doing the same thing over-again for the 4 points of interest:

enter image description here

Just distances would give you conical dimples, but you can change their profile very flexibly, to almost any style of golf-ball, by putting the distances through a Vector Curve node, as here, or a Color Ramp node.

The trouble is, we have to use OSL (CPU only), and Cycles. But once we're happy with the shape, we can plug the result of the tree straight into an Emission node, and bake the emission into a height-map:

enter image description here

.. which we can use for Bump mapping in any renderer, or Displacement mapping in Cycles:

enter image description here

Stupidly, I didn't use your ball as a reference. I'll try and fiddle with the curves to get one more like yours.

$\endgroup$
6
  • 2
    $\begingroup$ ... just a matter of time, OSL is coming to all popular engines so this answer is super handy. $\endgroup$
    – brockmann
    Commented Oct 3, 2020 at 18:25
  • 2
    $\begingroup$ Holy cow, this is some next level node magic :). $\endgroup$ Commented Oct 5, 2020 at 11:11
  • $\begingroup$ Robin, do you have a channel in Youtube? $\endgroup$ Commented Oct 6, 2020 at 15:06
  • 1
    $\begingroup$ @Rita Nope, I just get catty about other people's :D. If I did, I think it would be about the basics: based on what's under the hood. To do that properly, I think I'd have to be familiar enough with the Blender code to cover the stuff that's touched only lightly in the user manual, and I'm not, really.... $\endgroup$
    – Robin Betts
    Commented Oct 6, 2020 at 18:10
  • 1
    $\begingroup$ This one? blender.stackexchange.com/questions/93538/… $\endgroup$
    – batFINGER
    Commented Oct 6, 2020 at 19:36

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .