computer graphics matrices and...
TRANSCRIPT
![Page 1: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/1.jpg)
Computer Graphics Programming: Matrices and Transformations
![Page 2: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/2.jpg)
OutlineOutline
• Computer graphics overviewObj /G d li• Object/Geometry modeling
• 2D modeling transformations and matrices• 3D modeling transformations and matrices• Relevant Unity scripting featuresRelevant Unity scripting features
![Page 3: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/3.jpg)
Computer GraphicsComputer Graphics• Algorithmically generating a 2D image from 3D data
(models, textures, lighting)• Also called rendering
• Raster graphics– Array of pixels
About 25x25 in the example >– About 25x25 in the example ‐>
• Algorithm tradeoffs:– Computation time– Memory cost– Image quality
![Page 4: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/4.jpg)
Computer GraphicsComputer Graphics
• The graphics pipeline is a series of conversionsThe graphics pipeline is a series of conversions of points into different coordinate systems or spacesspaces
![Page 5: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/5.jpg)
Computer GraphicsComputer Graphics
• Virtual cameras in Unity will handle everythingVirtual cameras in Unity will handle everything from the viewing transformation on
![Page 6: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/6.jpg)
OpenGL specifying geometryOpenGL specifying geometry
Legacy syntax example:
glBegin(GL_POLYGON);glVertex2f(-0.5, -0.5);glVertex2f(-0.5, 0.5);glVertex2f(0 5 0 5);glVertex2f(0.5, 0.5);glVertex2f(0.5, -0.5);
glEnd();
![Page 7: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/7.jpg)
Unity specifying geometry – Mesh classUnity specifying geometry Mesh class
• Requires two types of valuesq yp– Vertices (specified as an array of 3D points)– Triangles (specified as an array of Vector3s whose values are indices in the vertex array)values are indices in the vertex array)
• Documentation and Example– http://docs.unity3d.com/Documentation/Manual/Gep // y / / /neratingMeshGeometryProcedurally.html
– http://docs.unity3d.com/Documentation/ScriptReference/Mesh.htmlnce/Mesh.html
• The code on the following slides is attached to a cube game object (rather than an EmptyObject)
![Page 8: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/8.jpg)
Mesh pt. 1 – assign verticesMesh pt. 1 assign vertices
Mesh mesh = new Mesh();();gameObject.GetComponent<MeshFilter>().mesh = mesh;
Vector3[] vertices = new Vector3[4];vertices[0] = new Vector3(0.0f, 0.0f, 0.0f);
( )vertices[1] = new Vector3(width, 0.0f, 0.0f);vertices[2] = new Vector3(0.0f, height, 0.0f);vertices[3] = new Vector3(width height 0 0f);vertices[3] = new Vector3(width, height, 0.0f);mesh.vertices= vertices;
![Page 9: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/9.jpg)
Mesh pt. 2 – assign trianglesMesh pt. 2 assign trianglesint[] tri = new int[6];// Lower left triangle of a quadtri[0] = 0;t i[1] 2tri[1] = 2;tri[2] = 1;// Upper right triangleof a quad// Upper right triangleof a quadtri[3] = 2;tri[4] = 3;tri[5] = 1;mesh.triangles = tri;
![Page 10: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/10.jpg)
More mesh valuesMore mesh values
// Normal vectors (one per vertex)// ( p )Vector3[] normals = new Vector3[4];// compute normals…mesh.normals= normals;
// Texture coordinates (one per vertex)Vector2[] uv = new Vector2[4];// i// assign uvs…mesh.uv= uv;
Side note: You can also use mesh.RecalculateNormals();if you want Unity to try to y y ycompute normals for you.
![Page 11: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/11.jpg)
Critical thinking – geometry modelingCritical thinking geometry modeling
• Which of the following statements is true?Which of the following statements is true?A. Smooth models like spheres are inexpensive to
createcreateB. A 3D model can be created faster than four hand
drawn 2D images of the object from the front,drawn 2D images of the object from the front, back, and sides
C. 3D shapes can be constructed out of 2D pprimitives
D. All 3D models must be solid volumes
![Page 12: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/12.jpg)
2D Transformations2D Transformations
y
y
yx
x y
x
![Page 13: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/13.jpg)
2D Transformation2D Transformation
• 2D object2D object– Points/Vertices– Line segments– Vector
• Transformations can change the object’sP i i ( l i )– Position (translation)
– Size (scaling)– Orientation (rotation)Orientation (rotation)– Shape (shear)
![Page 14: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/14.jpg)
Point representationPoint representation
• We use a column vector (a 2x1 • We use a column vector (a 2x1 matrix) to represent a 2D point
yx
py
• Points are defined with respect to – origin (point)– origin (point)– coordinate axes (basis vectors)
![Page 15: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/15.jpg)
TranslationTranslation
• How to translate an object with multiple vertices?vertices?
Translate individualTranslate individualvertices
![Page 16: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/16.jpg)
TranslationTranslation
• Re‐position a point along a straight line • Given a point (x y) and the translation distance or• Given a point (x,y), and the translation distance or vector (tx,ty)
The new point: (x’, y’) x’ = x + tx y’ = y + ty (x,y)
(x’,y’)
tyy y y
tx
'x x txOR p’ = p + t where
''
yx
p
yx
p
tytx
t
![Page 17: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/17.jpg)
2D Rotation2D Rotation
• Rotate with respect to origin (0 0)Rotate with respect to origin (0,0)
Rotate counter clockwise
Rotate counter clockwise
Rotate clockwise
![Page 18: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/18.jpg)
RotationRotation
(x’,y’) (x,y) -> Rotate about the origin by
(x,y) (x’, y’)
r
How to compute (x’, y’) ?
( ) i ( )x = r cos ()y = r sin ()
x’ = r cos ()y’ = r sin ()
![Page 19: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/19.jpg)
RotationRotation
(x’,y’) x = r cos ()y = r sin ()
’ ( ) i ( ) (x,y)
r
x’ = r cos ()y = r sin ()
x’ = r cos ()x r cos ()= r cos() cos() – r sin() sin()
= x cos() – y sin()
y’ = r sin ()= r sin() cos() +r cos() sin()
= y cos() + x sin()
![Page 20: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/20.jpg)
RotationRotation
(x’,y’)
x’ = x cos() – y sin() (x,y)
ry’ = y cos() + x sin()
Matrix form:Matrix form:
x’ cos() -sin() x ( ) ( )y’ sin() cos() y
=
![Page 21: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/21.jpg)
Rotation
How to rotate an object with multiple i ?vertices?
Rotate individualVertices
![Page 22: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/22.jpg)
2D Scaling2D Scaling
Scale: Alter the size of an object by a scaling factor(S S ) i(Sx, Sy), i.e.
x’ = x * Sx x’ Sx 0 xx = x Sxy’ = y * Sy
x Sx 0 xy’ 0 Sy y=
(4 4)
(2,2) Sx = 2, Sy = 2
(2 2)
(4,4)
(1,1)(2,2)
![Page 23: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/23.jpg)
2D Scaling2D Scaling
Sx 2 Sy 2
(4,4)
(1,1)
(2,2) Sx = 2, Sy = 2
(2,2)
Object size has changed, but so has its position!
![Page 24: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/24.jpg)
Scaling special case – ReflectionScaling special case Reflection
1 1 originalsx = -1 sy = 1
sx = -1 sy = -1 sx = 1 sy = -1
![Page 25: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/25.jpg)
Put it all togetherPut it all together
• Translation: x’ x txy’ y ty
= +
• Rotation: x’ cos() ‐sin() xy’ sin() cos() y
= *
• Scaling: x’ Sx 0 xy’ 0 Sy y= *y 0 Sy y
![Page 26: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/26.jpg)
Translation Multiplication Matrix
x’ = x + txy’ y tyy y ty
Use 3 x 1 vector
x’ 1 0 txxy’ = 0 1 ty * y1 0 0 1 1
![Page 27: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/27.jpg)
Critical thinking – transformations and l lmatrix multiplication
• Suppose we want to scale an object thenSuppose we want to scale an object, then translate it. What should the matrix multiplication look like?multiplication look like?
A ’ S l * T l t *A. p’ = Scale * Translate * pB. p’ = Translate * Scale * p
’ * l * lC. p’ = p * Scale * TranslateD. Any of these is correct
![Page 28: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/28.jpg)
3x3 2D Rotation Matrix3x3 2D Rotation Matrix
x’ cos() -sin() x y’ sin() cos() * y
=(x’,y’)
y sin() cos() * y(x,y)
r
x’ cos() -sin() 0 x ( ) ( )y’ sin() cos() 0 * y1 0 0 1 1
=
![Page 29: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/29.jpg)
3x3 2D Scaling Matrix3x3 2D Scaling Matrix
x’ Sx 0 xy’ 0 Sy y=y 0 Sy y
x’ Sx 0 0 x y’ = 0 Sy 0 * yy = 0 Sy 0 y1 0 0 1 1
![Page 30: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/30.jpg)
3x3 2D Matrix representations3x3 2D Matrix representations
• Translation:
01' xtxx
1*
10010
1' ytyy
• Rotation:
*0)cos()sin(0)sin()cos(
''
yx
yx
1100
)()(1
yy
• Scaling:
1*
1000000
1''
yx
sysx
yx
11001
![Page 31: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/31.jpg)
Linear TransformationsLinear Transformations
• A linear transformation can be written as: x’ = ax + by + cx = ax + by + c
ORy’ = dx + ey + f
' xcbax
1*
1001' yfedy
![Page 32: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/32.jpg)
Why use 3x3 matrices?Why use 3x3 matrices?
• So that we can perform all transformations using matrix/vector multiplications
• This allows us to pre‐multiply all the matrices together
Th i ( ) i d i H• The point (x,y) is represented using Homogeneous Coordinates (x,y,1)
![Page 33: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/33.jpg)
Matrix concatenation• Examine the computational cost of using four
matrices ABCD to transform one or more points (i e p’ = ABCDp)(i.e. p = ABCDp)
• W ld l t ti• We could: apply one at a time– p' = D * p– p'' = C * p'– …– 4x4 * 4x1 for each transformation for each point
O ld t t ( lti l t i )• Or we could: concatenate (pre-multiply matrices)– M=A*B*C*D– p' = M * pp p– 4x4 * 4x4 for each transformation– 4x4 * 4x1 for each point
![Page 34: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/34.jpg)
ShearingShearing
• Y coordinates are unaffected, but x coordinates are translated linearly with yy y
• That is:– y’ = y
x’ = x + y * h
x' 1 h 0 xy' = 0 1 0 * y1 0 0 1 1– x = x + y * h 1 0 0 1 1
![Page 35: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/35.jpg)
Shearing in y
x' 1 0 0 xx 1 0 0 xy' = g 1 0 * y1 0 0 1 1
Interesting Facts: • Any 2D rotation can be built using three shear transformations.
Shearing will not change the area of the object• Shearing will not change the area of the object• Any 2D shearing can be done by a rotation, followed by a
scaling, and followed by a rotation
![Page 36: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/36.jpg)
Local Rotation• The standard rotation matrix is used to rotate
about the origin (0,0)
cos() -sin() 0 ( ) ( )sin() cos() 0 0 0 1
• What if I want to rotate about an arbitrary center?
![Page 37: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/37.jpg)
Arbitrary Rotation CenterArbitrary Rotation Center
• To rotate about an arbitrary point P (px,py) by :– Translate the object so that P will coincide with theTranslate the object so that P will coincide with the origin: T(‐px, ‐py)
– Rotate the object: R()– Translate the object back: T(px, py)
(px,py)
![Page 38: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/38.jpg)
Arbitrary Rotation Center
• Translate the object so that P will coincide with the origin: T(-px, -py)
• Rotate the object: R(q)• Translate the object back: T(px,py)
• As a matrix multiplication• p’ = T[px,py] * R[q] * T[-px, -py] * P
x’ 1 0 px cos() -sin() 0 1 0 -px x y’ = 0 1 py sin() cos() 0 0 1 -py yy = 0 1 py sin() cos() 0 0 1 py y1 0 0 1 0 0 1 0 0 1 1
![Page 39: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/39.jpg)
Local scaling
The standard scaling matrix will only anchor at (0 0)anchor at (0,0)
Sx 0 0 0 Sy 0 0 0 1
What if I want to scale about an arbitrary pivot point? p p
![Page 40: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/40.jpg)
Arbitrary Scaling Pivot
To scale about an arbitrary pivot point P (px,py):(px,py): Translate the object so that P will coincide with
the origin: T(-px, -py) Scale the object: S(sx, sy) Translate the object back: T(px,py)
(px,py)
![Page 41: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/41.jpg)
Moving to 3D
• Translation and Scaling are very similar, just include z dimensioninclude z dimension
• Rotation is more complex
![Page 42: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/42.jpg)
3D Translation3D Translation
![Page 43: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/43.jpg)
3D Rotations – rotation about primary axes
00)cos()sin(00)sin()cos(
10000100
)()(zR
0001
0)sin(0)cos(
0)cos()sin(00)sin()cos(0
xR
0)cos(0)sin(0010
yR
1000
1000
![Page 44: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/44.jpg)
3D Scalingg
000000
y
x
SS
1000000000
z
y
SS
S
1000
![Page 45: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/45.jpg)
Vectors and Matrices in UnityVectors and Matrices in Unity
• Vector2 (reference page)3 ( f )• Vector3 (reference page)
• Vector4 (reference page)
• Matrix4x4 (reference page)Matrix4x4 (reference page)
![Page 46: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/46.jpg)
Vector3Vector3
• Data members– x,y,z floatsx,y,z floats
• Operations/Operatorsset(x y z)– set(x,y,z)
– +,‐ vector‐vector operations* / t l ti– *,/ vector‐scalar operations
– == comparison (has some flexibility to handle nearly equal values)to handle nearly equal values)
– Normalize, Distance, Dot
![Page 47: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/47.jpg)
Code example with Vector3Code example with Vector3
In a script attached to a GameObject:
Vector3 temp;temp = new Vector3(3,5,8);transform position = temp;transform.position temp;
![Page 48: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/48.jpg)
Matrix4x4Matrix4x4
• this [int row, int column]t s [ t o , t co u ]• this [int index]– index: row+column*4
• GetColumn, GetRow• SetColumn, SetRow,• * operator
• Note: Unity does not store a modeling transformation matrix for each objectj
![Page 49: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/49.jpg)
Transformations in UnityTransformations in Unity
• transform (reference)transform (reference)– Position, rotation, and scale of an object
• Methods• Methods– Translate– Rotate
• Data– position– rotation
![Page 50: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/50.jpg)
transform.Translatetransform.Translate
• function Translate (translation : Vector3translation : Vector3,
relativeTo: Space = Space.Self )
• translation vector – tx,ty,tz• Space.Self – local coordinate system• SpaceWorld – world coordinate systemSpace.World world coordinate system
![Page 51: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/51.jpg)
transform.Rotatetransform.Rotate
• function Rotate (eulerAngles: Vector3eulerAngles: Vector3,relativeTo: Space = Space.Self )• Applies a rotation
eulerAngles.zdegrees around the z axis, e lerAngles degrees aro nd the a is andeulerAngles.x degrees around the x axis, andeulerAngles.ydegrees around the y axis (in that order)(in that order).
![Page 52: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/52.jpg)
transform.Rotatetransform.Rotate
• function Rotate (eulerAngles: Vector3,eulerAngles: Vector3,relativeTo: Space = Space.Self )
• Space.Self – rotate about local coordinate frame (center of prebuilt GameObjects, could be
h f ti t d d l)anywhere for an artist made model)• Space.World – rotate about world coordinate frame (origin (0,0,0))(origin (0,0,0))
![Page 53: Computer Graphics Matrices and Transformationsweb.cse.ohio-state.edu/.../04-Transformations.pdfOutline • Computer graphics overview • Obj /GObject/Geometry modlideling • 2D modeling](https://reader031.vdocument.in/reader031/viewer/2022022506/5abf31f37f8b9a7e418de51b/html5/thumbnails/53.jpg)
On your own activity with ftransform.Rotate
• In your script for lab1, in Update() add the statementy p , p ()transform.Rotate(0,1,0);
• Run the animation and hold down the ‘a’ key, is the result what you were expecting?T it i ith• Try it again with
transform.Rotate(0,1,0, Space.World);
• Also experiment with using Space.World in a call to Translate