Changed swimmer cap and bathers color to green (0 0.5 0) to
be more obvious.
Texture mapping of pool added.
Overview
In this assignment, you will write an X3D scene embedded in an
html file using the X3Dom library to draw a hierarchical model
of a swimmer model made up of simple polygon mesh shapes: octahedrons
(polyhedron with 8 faces, also known simply as diamonds) for
legs and arms, pentahedrons (square pyramid polyhedron with 5
faces) for feet and hands and a decahedron (polyhedron with 10
faces, and more specifically a pentagonal bipyramid) for the
body. The model will need to perform a swimming animation,
similar to the image and video above.
The tutorials will teach the fundamentals required in
construction of the assignment and it is recommended that you
follow the tutorial exercises. This assignment counts for 25% of
your final grade for this course.
Later assignments in this course will build from the ideas
worked on in this assignment. Performing well in this assignment
will make future assignments easier to understand and complete.
Details
Swimmer Diagrams
The following diagrams show the dimensions of the sample
solution's swimmer model, and can be used as a guide for your
assignment. You do not have to strictly stick to these
dimensions, but preferred that you do.
Showing a top view of the swimmer.
The recommended dimensions and angles for the body.
The recommended dimensions and angles for the arms and legs.
Diagram showing where all the joints should be.
The coordinates of a unit octahedron.
The recommended scales of the arm/leg octahedrons.
A series of keyframes for animating. These are using basic angles (45, 90 degrees). You are welcome to make your own.
Model Hierarchy
The following diagram shows the object hierarchy of the
swimmer model. Ovals represent joints and rectangles represent
the body segment polygon meshes. Models resembling this complexity will
be required for full marks.
The figure should consist of a torso, a head, and two arms and
two legs made of three segments. The torso is a decahedron,
the head, legs and arms made from octahedrons and the feet and
hands from pyramids. Eyes as spheres. The figure also has
a green swim cap and bathers.
You will create polygon mesh shapes for the body segments
using the IndexedFaceSet X3D node. To show the joints,
sometimes also called pivot points, transform nodes should
include a set of axes as one of their children. An optional
extra is to provide the ability to enable/disable rendering
them using e.g. a touch sensor node.
You will create a pool for the swimmer made with either planes
or custom geometry using an indexed face set, that has a
semi-transparent plane for the water. The pool floor and walls
are to be textured, using this tile texture
The X3D 'USE' and 'DEF' elements should be applied to minimise
duplicate markup/code in the file.
Proper transforms including scale/rotation/translation should
be applied to minimise the number of IndexedFaceSets that are
defined.
The figure should be properly constructed according to a
hierarchy/scene graph with the torso attached to the swimmer
root, head, legs and arms attached to the torso by neck,
shoulder and hip joints, lower legs and arms attached to upper
arms and arms by knee and elbow joints and feet and hands
attached to lower legs and arms by ankles and wrists. Each
joint will require transform nodes, and should have a set of
axes.
Proper colouring should be applied using the Appearance and
Material X3D elements.
The swimming animation should be like the above video. A
simple animation will have the legs moving and the arms
spinning around, whereas a complex animation will include the
elbow, wrist and knee joints also rotating.
X3DOM Version and .xhtml
You must use x3dom version 1.7.2 and XHTML notHTML.
One major difference is that XHTML is based on XML and
the browser will do validity checking, e.g. mismatched tags.
See the axes example.
The markup/code must be valid X3D (errors/warnings will result
in less marks).
Your assignment is assessed using recent versions of chrome or
firefox and X3DOM 1.7.2, make sure your assignment runs correctly on them.
Late Submissions
Late submissions receive a 10% per day penalty
(calculated hourly on a pro rata basis, starting 9:00am next
working day, i.e. Mon). Any assignment not submitted by 9:00pm
the next Friday will receive 0 marks.
Submission
Submission is via canvas.
Rubric/Marking guide
How well features are implemented will determine whether an
assignment is in the upper or lower range of its mark.
Markup/code will also be taken in to account.
PA:
Swimmer with torso and limbs displayed as described using
indexed face sets.
Pool and a background node.
Static model, i.e. no animation.
CR:
Use of colour.
Texture mapped pool.
Reduced code duplication via proper use of 'DEF' and 'USE' tags.
DI:
Basic animation, e.g. straight arm rotation at shoulder only.
HD:
A correctly constructed hierarchy/scene graph.
Complex animation including joint rotations.
TouchSensor for starting and stopping animation.
Cap and bathers.
Course Learning Objectives and Outcomes
This assignment addresses the following course learning objectives
and outcomes
apply knowledge and skills of fundamentals of 3D graphics,
including geometry modelling, hierarchical transformations,
lighting and shading, texturing, and simple animation to Web
3D and graphics technologies
design and develop web 3D and graphics using X3D, WebGL and
Javascript languages
build 3D web applications and solve related problems
construct scenes using the scene graph concept and
facilities in WebGL and X3D