Patrick Cozzi and Liz Dailey

+

3D model

Assignment 5

Bonus

coming soon!

Assignment 5 coming very soon!

McCormack 1st Floor

Assignment 6

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