Page 18: Snowman

Spring 2026 Sample Solution

OK. The time has come for one of the big things in class: making a snowman. It’s been the mascot of CS559 for years.

You have made a 2D snowman as an exercise, but now we’ll make it in 3D as a way to practice programming in three and trying out the concepts.

Note: the goal here is to show that you can make objects by using transformations to assemble collections of “primitive” (built-in) objects and applying standard materials. We want you to make a “standard” snowman this way. Use this as a chance to practice the basic skills.

We know that AI can add all kinds of advanced features to make a fancy snowman. We know that you can find a complicated model of a fancy snowman. Make a basic snowman yourself first.

That said, after making a basic snowman, you can make some extra, possibly fancier, snowmen too. Remember the ground rules: you should only use the graphics techniques we’ve learned about so far. No textures or shaders or other stuff we haven’t talked about yet.

We’ve seen some very creative snowmen over the years. The snowdog was a personal favorite. Notice that there is a (well-done) standard snowman as well. Because this was a different class, the students used shadows and backgrounds. We haven’t learned about those yet this year.

snowdog.png

A classic snowman and a snow dog. From a CS559 Spring 25 honors class student.

Exercise: Make a snowman using THREE!

You should make the snowman using THREE primitives. You can use spheres for the snowballs (the main parts of the body), a cone to make a carrot nose, a cylinder and a ring to make a top hat, etc.

You’ll need to make primitives (Spheres, Cones, …) and use their transformations (position, scale, rotation) to assemble the snowman.

You can use simple materials of different colors (e.g., MeshPhongMaterial or MeshStandardMaterial). A white standard material won’t look like snow, but it will be good enough for this assignment. Our goal is that you know how to apply materials to get different colors, not necessarily to make materials to get special effects (like snow).

The main point of the assignment is to create a specific shape using THREE primitives.

At a minimum, your snowman must have a body, a head, eyes, and a nose. We were thinking of the “classic three-ball snowman” (see the Wikipedia Page, for example), which gives enough parts (3 sections of the body, eyes, a nose, a mouth). You can add the hat and corncob pipe too. If you want to be more creative, make a regular snowman first, and then put another one next to it.

You do not need to animate your snowman. It’s an advanced feature.

Please put in a piece of ground (it can be a flat box) that the snowman stands on.

We’ve given you a start in 04-18-01.js (04-18-01.html) where you should put your drawing code.

Here is a place to put the snowman. We have already loaded THREE and OrbitControls. Please add OrbitControls to your picture. Note: we haven’t given you much in this file. It’s up to you to make the lights, camera, objects, etc. We just took care of the renderer.

04-18-01   rubric Kinds of boxes:
view - look at the box and experiment with it
examine - look at the code for the box
edit - change the box's content
rubric - several steps are suggested in the rubric page - form elements on page in rubric
   04-18-01.html   04-18-01.js
Kind Kind of rubric items:
standard - expected from all students
advanced - used to get a better grade
creative - an opportunity to do something creative
levels - rubric item graded by selected achievement level
optional - not required, but encouraged
Description
standard Visible Objects (requires lights, camera, at least some shapes)
standard Different materials used (everything isn't the same color)
standard There is a ground, Snowman on ground
standard Snowman Body as 3 stacked spheres
advanced Nice Snowman (eyes, nose, mouth)
optional Animated snowman
creative Second, creative snowman
Next: Page  19 - Space-Age Sculpture Museum