# Modeling... a bowl?

This may be simple... because it seems like it should be, but I'm quite hung
up on how to do this. How would I go about modeling an upside-down bowl? (Or
an upper hemisphere, or a rounded lampshade, whatever helps you picture it
best). It seems like "genrev" would be the way to do this, but I don't quite
understand what z(t) and r(t) do. If the input for a 2 foot wide hemisphere
(surface normals inward) isn't too complicated, perhaps someone could paste
it here and I could backwards-determine what the functions represent.

Here's another question: can we simply make a "bubble" and cut it in half?
(discarding half of it, of course)

Thanks!
Nick Calcagni

Nick,

Use gensurf rather than genrev. This command generates the bottom half of a unit sphere centred on the origin (e.g. a hemispherical 'bowl'):

!gensurf mat hemi 'sin(PI*s)*cos(PI*t)' 'cos(PI*s)' '-sin(PI*s)*sin(PI*t)' 20 20 -s

Remove the -ve sign in the z expression to get the top half. The -s argument applies smoothing to the surface normal.

-John

···

-----------------------------------------------
Dr. John Mardaljevic
Senior Research Fellow
Institute of Energy and Sustainable Development
De Montfort University
The Gateway
Leicester
LE1 9BH, UK
+44 (0) 116 257 7972
+44 (0) 116 257 7981 (fax)

Hi John,

Is there some reason to prefer gensurf to genrev in this instance? Genrev should produce a smaller (simpler) model, and allows for smoothing as well. The following makes a pretty convincing hemisphere:

genrev mat hemi 'cos(PI/2*t)' 'sin(PI/2*t)' 20 -s

using 20 primitives rather than 400. Since the first function z(t) is decreasing with increasing t, the surface normal points inwards as requested.

It's also possible to use an antimatter volume to hide the bottom half of the sphere, and this is recommended if a perfect hemisphere is required. However, there are drawbacks to this method, such as being unable to render from inside the excluded volume. Here's an example of how this could be done:

sphere_mat bubble my_sphere
0
4 0 0 0 1

void antimatter anti_sphere_mat
2 void sphere_mat
0

!genbox anti_sphere_mat anti_vol 2 2 1 | xform -t -1 -1 -1

Best,
-Greg

···

From: John Mardaljevic <[email protected]>
Date: June 4, 2008 6:35:57 AM PDT

Nick,

Use gensurf rather than genrev. This command generates the bottom half of a unit sphere centred on the origin (e.g. a hemispherical 'bowl'):

!gensurf mat hemi 'sin(PI*s)*cos(PI*t)' 'cos(PI*s)' '-sin(PI*s)*sin(PI*t)' 20 20 -s

Remove the -ve sign in the z expression to get the top half. The -s argument applies smoothing to the surface normal.

-John

-----------------

From: "Nick Calcagni" <[email protected]>
Date: June 3, 2008 10:47:56 PM PDT

This may be simple... because it seems like it should be, but I'm quite hung up on how to do this. How would I go about modeling an upside-down bowl? (Or an upper hemisphere, or a rounded lampshade, whatever helps you picture it best). It seems like "genrev" would be the way to do this, but I don't quite understand what z(t) and r(t) do. If the input for a 2 foot wide hemisphere (surface normals inward) isn't too complicated, perhaps someone could paste it here and I could backwards-determine what the functions represent.

Here's another question: can we simply make a "bubble" and cut it in half? (discarding half of it, of course)

Thanks!
Nick Calcagni

Greg,

Is there some reason to prefer gensurf to genrev in this instance?

Yeah, I was slavishly following your gensurf manpage example:
To generate a tesselated sphere:
gensurf crystal ball 'sin(PI*s)*cos(2*PI*t)' 'cos(PI*s)' 'sin(PI*s)*sin(2*PI*t)' 7 10
That and I'm much less frugal nowadays when it comes to counting polygons.
-John

···

----------------------------------------------
Dr. John Mardaljevic
Senior Research Fellow
Institute of Energy and Sustainable Development
De Montfort University
The Gateway
Leicester
LE1 9BH, UK
+44 (0) 116 257 7972
+44 (0) 116 257 7981 (fax)

Hi John,

Your suggestion does carry the advantage of producing correct smoothed normals on both sides of the surface, whereas the normal perturbations out of genrev are only correct for the "front" side of the object (the inside in this case).

Cheers,
-Greg

···

From: John Mardaljevic <[email protected]>
Date: June 4, 2008 8:51:33 AM PDT

Greg,

Is there some reason to prefer gensurf to genrev in this instance?

Yeah, I was slavishly following your gensurf manpage example:
To generate a tesselated sphere:
gensurf crystal ball 'sin(PI*s)*cos(2*PI*t)' 'cos(PI*s)' 'sin(PI*s)*sin(2*PI*t)' 7 10
That and I'm much less frugal nowadays when it comes to counting polygons.
-John