Patrick Cozzi and Liz Dailey
+
3D model
Assignment 5
Bonus
coming soon!
Assignment 5 coming very soon!
McCormack 1st Floor
Assignment 6
My solution: https://cs460.org/shortcuts/28/
Assignment 6
Assignment 7
Final Project!
counts as 40%
1-3 students per team
the more impact, the better!
any computer graphics framework is fine!
start thinking about it now :)
FYOT!
Texture Mapping
Texture Mapping
U,V coordinates for each vertex
Three.js
XTK
Vanilla WebGL
var cube = new X.cube();
cube.texture.file = 'umb.png';
var floorTexture = new THREE.TextureLoader().load( 'marble.jpg' );
var floorGeometry = new THREE.PlaneGeometry( 1000, 1000 );
var floorMaterial = new THREE.MeshBasicMaterial( {
map: floorTexture,
side: THREE.DoubleSide
} );
floor = new THREE.Mesh( floorGeometry, floorMaterial );
Assignment 6
Head
Upper Arm
Lower Arm
Hand
q
q (0, 0, 0, 1)
Identity
X
Head
Upper Arm
q
q (0, 0, 0, 1)
Identity
X
q2 (Math.sin(T/2),
0,
0,
Math.cos(T/2))
Rotate 180° in X
T = Math.PI
q
q2
Arm down
Arm up
Time
Frames
Keyframe 2
Keyframe 1
slerp Interpolation
60 FPS
60 Hz
60 1/s
Modern computer screens
Skinning
Skeleton -> Mesh
Rigging
Mesh -> Skeleton
Blender, 3D Studio Max, Maya
Assignment 5
Mesh
Geometry
+ Material
var geometry = new THREE.BoxGeometry( 20, 20, 20);
var material = new THREE.MeshStandardMaterial({ color: 0xffffff });
var mesh = new THREE.Mesh( geometry, material);
Rendering Primitives
V1
V2
V3
V4
V6
V5
(x, y, z)
(x, y, z)
(x, y, z)
(x, y, z)
(x, y, z)
(x, y, z)
Vertex
/ Vertices
Face
Face
Normals
V1
V2
V3
V4
V6
V5
(x, y, z)
(x, y, z)
(x, y, z)
(x, y, z)
(x, y, z)
(x, y, z)
Vertex
/ Vertices
Face
Face
N1 (x, y, z)
N2 (x, y, z)
Face
Normals
V1
V2
V3
V4
V6
V5
(x, y, z)
(x, y, z)
(x, y, z)
(x, y, z)
(x, y, z)
(x, y, z)
Vertex
/ Vertices
Face
Face
N1 (x, y, z)
N2 (x, y, z)
Vertex
N3 (x, y, z)
N6 (x, y, z)
N5 (x, y, z)
N4 (x, y, z)
No Shading
Normals
used for Material
used for Lighting
No Normals
Face Normals
Vertex Normals
V1
V2
V3
Bump Map
Normals
Pixel
Normal Map
usually between 0 and 1 for x,y,z
usually point away from the outside of a surface
Normals
used for Material
used for Lighting
used for Shading
Time
Coding
Skinning
var mesh = new THREE.SkinnedMesh( geometry, material );
var skeleton = new THREE.Skeleton( bones );
mesh.add( bones[ 0 ] );
mesh.bind( skeleton );
5 Skinned Meshes
5 Cylinder Geometries
var fromhelper = HELPER.cylinderSkeletonMesh(3, 5, 'blue')
var geometry = fromhelper[0];
var material = fromhelper[1];
var bones = fromhelper[2];
var mesh = new THREE.SkinnedMesh( geometry, material );
var skeleton = new THREE.Skeleton( bones );
mesh.add( bones[ 0 ] );
mesh.bind( skeleton );
how many bones
cylinder radius
color
[ geometry, material, bones ]
helper.js
$ git pull upstream main
$ git push
$ python -m http.server
$ cd 07
$ cp 06/index.html .
$ cp 06/robot.js .
or copy my solution from
var fromhelper = HELPER.cylinderSkeletonMesh(3, 5, 'blue')
var geometry = fromhelper[0];
var material = fromhelper[1];
var bones = fromhelper[2];
bones[ 0 ]
is an invisible anchor point
bones[ 0, 1, 2, 3 ]
left upper arm
left lower arm
left hand
how many bones
Quiz due tonight!
submit your music