3D Game Programming Geometric Transformations

Slides:



Advertisements
Similar presentations
附加數學 / 純粹數學 Common Limits 常見極限. 附加數學 / 純粹數學 Derivatives of Functions 函數的導數.
Advertisements

Euler’s Angles of Geodetic Coordinate Systems 第十八讲 大地坐标系的欧 勒角.
第三章:材質製作與模型.
第十一章 3D遊戲設計技巧 課前指引 一套3D遊戲的簡易製作過程,可以從腳本的企劃與構思,設計劇中人物跟週邊場景,然後再交給3D建模人員建立模型(如透過3DMax與Maya軟體),最後可以選一套合適的3D引擎來整合,並且安排介面控制角色的製作與邏輯,同時將人物場景匯入3D引擎中,最後透過玩家的耐玩度測試及調整就可以完成。如果是網路遊戲,上線之後還必須定時維護伺服器、或視情況增減伺服器。
Magnetic resonance imaging, MRI
浙江大学CAD&CG国家重点实验室,教I 三楼
Related Provisions in National Standards 国家标准有关规定
阅卷归来话反思 及备考.
江西 6、下列关于名著的表述,不正确的一项是
计算机图形技术 余 莉
Chap. 4 Techniques of Circuit Analysis
兒 童 營 養 高雄長庚醫院營養治療科 營養師 洪凱殷.
Chapter 3. Visual Appearance 视觉外观
Leftmost Longest Regular Expression Matching in Reconfigurable Logic
Minimum Spanning Trees
Operators and Expressions
THE JOURNAL OF CHINA UNIVERSITIES OF POSTS AND TELECOMMUNICATIONS
NLP Group, Dept. of CS&T, Tsinghua University
Manifold Learning Kai Yang
Chap5 Graph.
Chapter 2. The Graphics Rendering Pipeline 图形绘制流水线
Seam Carving for Content-Aware Image Resizing
OpenGL (7) 靜宜大學資工系 蔡奇偉 副教授
Chapter 6 Graph Chang Chi-Chung
Creating Animated Apps (I) 靜宜大學資管系 楊子青
第十章 基于立体视觉的深度估计.
第二十四單元 柱面與球面座標.
第二章 共轴球面系统的物像关系 Chapter 2: Object-image relations of coaxial spheric system.
Viewing 靜宜大學資工系 蔡奇偉 副教授
Chapter 10 Three-Dimensional Viewing (三维观察)
3D動畫與 3D Studio MAX 第六組 蘇哲群.
第八章 Illumination and Shading
第二十九單元 方向導數與梯度.
Web前端开发技术与实践 第13章:动画 阮晓龙 /
第三章 几何造型 几何造型就是通过点、线、面和立体等几何元素 的定义、几何变换、集合运算构建客观存在或想
3D PACMAN! Student: Chia-Wei Yao ID:
The expression and applications of topology on spatial data
3D Object Representations
Introduction to OpenGL (1)
第三章 基本觀念 電腦繪圖與動畫 (Computer Graphics & Animation) Object Data Image
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
2D / 3D 遊戲程式設計入門 使用 XNA 3.0 與 C# 第五章 頂點定義與基本形狀的繪出.
ICG 2018 Fall Homework1 Guidance
幾何變換 Geometry Transformations
地圖校正處理軟體介紹及操作 Rectify + LanFill
2D Viewing Lectured by Hua Yan.
Chap 01 3D動畫原理 3D電腦動畫 吳育龍老師.
第三章 基本觀念 電腦繪圖與動畫 (Computer Graphics & Animation) Object Data Image
Chapter 9 (三维几何变换) To Discuss The Methods for Performing Geometric Transformations.
Introduction to Anim8or
2018International Students' Fire Knowledge Promotion
Unity LAB 2D UFO Tutorial
第八章 模型實務建構教學 8-1 3D物件構成原理 8-2 實例製作-電風扇製作I 8-3 實例製作-電風扇製作II 備註:可依進度點選小節.
Chapter 5 Attributes of Output Primitives (图元的属性)
3.5 Region Filling Region Filling is a process of “coloring in” a definite image area or region. 2019/4/19.
计算机图形学 姜明 北京大学数学科学学院 更新时间2019年4月25日星期四8时14分39秒.
Representation Learning of Knowledge Graphs with Hierarchical Types
3D Game Programming Projection
运动学 第一章 chapter 1 kinematices.
BSP Tree Construct a BSP tree of the following scene, WITH L7 as root.
地圖校正處理軟體介紹及操作 Rectify + LanFill
以四元樹為基礎抽取圖片物件特徵 之 影像檢索
OpenGL渲染管道与投影变换.
遊戲設計 Special Effects.
Introduction to Matlab
code::blocks 與GLUT 程式開發
PROGRAM 1 Simple E. Angel, Interactive Computer Graphics A Top-Down Approach with OpenGL, Third Edition Addison-Wesley Longman, 2003.
Graph 1 Michael Tsai 2012/4/24 連載: 學生上課睡覺姿勢大全
IMU Deblur 張浩軒.
Presentation transcript:

3D Game Programming Geometric Transformations Ming-Te Chi Department of Computer Science, National Chengchi University 2018

Outline Geometric Transformations Basic transformation The coordinates Hierarchy transformation

Transformation Terminology Viewing Modeling Modelview Projection Viewport

Transformations Translation Rotation Scaling

The Modelview Duality +y +y +x +x +z +z View moving Model moving Model space: 為物體相對世界座標的幾何轉換 View space: 為相機相對於世界座標的幾何轉換 兩者互為相對移動的關係,也就是移動相機等同於反方相移動所有的物體,是故會整合成modelview space,減少矩陣的變數 +z View moving Model moving

Projection World space Perspective Orthographic 在此列舉常見的兩種投影法 上圖是世界座標的觀點,同樣的場景 但在不同的投影法中,成像的結果也不一樣 左下為正交投影,右下為透視投影 Perspective Orthographic

Coordinate System Unity is a Left-Handed Coordinate System

Transform

Matrix/vector 在繪圖中常需要利用矩陣和向量處理 各式的affine transformation可以4x4的矩陣表示 向量可表示位置(x, y, z, w)

Transform Translate(tx, ty, tz); Rotate(…); Scale(sx, sy, sz); glLoadIdentity(); 本頁列出基本幾何轉換的函式呼叫和對應的矩陣 由於旋轉矩陣是支援任意軸旋轉,也就是以給定(x, y, z)為旋轉軸,依右手定則的方向,旋轉angle角度 他對應的矩陣相對複雜,因此不列出。有興趣可參考 http://www.opengl.org/sdk/docs/man/xhtml/glRotate.xml

Rotate public void Rotate(Vector3 eulerAngles, Space relativeTo = Space.Self); public void Rotate(Vector3 axis, float angle, Space relativeTo = Space.Self); public void RotateAround(Vector3 point, Vector3 axis, float angle);

Rotation/Translation from world to object Translate() Rotate() Rect() +y +x +y +x +y +x +y +x +y +x +y +x Rotate() Translate() Rect() 反之,由C/C++指令由上至下閱讀的順序 表示從world space往object space的變化

Transformation Pipeline An Interactive Introduction to OpenGL Programming Transformation Pipeline CPU DL Poly. Per Vertex Raster Frag FB Pixel Texture object eye normalized device clip window v e r t x Modelview Matrix Projection Perspective Division Viewport Transform l other calculations here material è color shade model (flat) polygon rendering mode polygon culling clipping Modelview matrix是記錄從object space到eye space間的頂點轉換 Projection matrix是記錄從eye space到clip space間的頂點投影轉換 一般來說以stack的方式存在,以便儲存和回覆特定時間的矩陣狀態,stack的深度主要是看硬體實作而定,Modelview matrix一般至少有32,Projection matrix一般至少有2 另外material-to-color, flat-shading, and clipping calculations 會發生在Modelview matrix和Projection matrix之間 The polygon culling and rendering mode operations 發生在Viewport operations之後 此外,還有texture matrix stack,用來計算貼圖座標的自動投影

The Life of a vertex Image by Philp Rideout 這兩頁的圖片生動地呈現各種不同轉換發生的順序和對應的畫面變化 上下兩列可達到同樣的目的,主要是呈現model和view兩個矩陣轉換,兩者互為相對移動的關係,也就是移動相機等同於反方相移動所有的物體, 是故會整合成modelview space,減少矩陣的變數 Image by Philp Rideout

Image by Philp Rideout

Transformation Example 1

Transformation Example 2 複雜的場景也可以利用同樣的機制,決定物體的相對位置

Transformation Example 2

Mesh Format

Representing a Mesh 5 interior polygons 6 interior (shared) edges v1 v2 v7 v6 v8 v5 v4 v3 e1 e8 e3 e2 e11 e6 e7 e10 e5 e4 e9 e12 Consider a mesh There are 8 nodes and 12 edges 5 interior polygons 6 interior (shared) edges Each vertex has a location vi = (xi yi zi)

3D model format SIMPLE COLOR Triangle vertex1_X  vertex1_Y  vertex1_Z  normal1_X  normal1_Y normal1_Z vertex2_X  vertex2_Y  vertex2_Z  normal2_X  normal2_Y normal2_Z vertex3_X  vertex3_Y  vertex3_Z  normal3_X  normal3_Y normal3_Z COLOR Triangle frontcolor_R  frontcolor_G  frontcolor_B  backcolor_R  backcolor_G  backcolor_B vertex1_X  vertex1_Y  vertex1_Z  normal1_X  normal1_Y normal1_Z vertex2_X  vertex2_Y  vertex2_Z  normal2_X  normal2_Y normal2_Z vertex3_X  vertex3_Y  vertex3_Z  normal3_X  normal3_Y normal3_Z http://graphics.csie.ntu.edu.tw/~ming/courses/icg/models.html

Simple Representation Define each polygon by the geometric locations of its vertices Leads to OpenGL code such as Inefficient and unstructured Consider moving a vertex to a new location Must search for all occurrences glBegin(GL_POLYGON); glVertex3f(x1, x1, x1); glVertex3f(x6, x6, x6); glVertex3f(x7, x7, x7); glEnd();

Inward and Outward Facing Polygons The order {v1, v6, v7} and {v6, v7, v1} are equivalent in that the same polygon will be rendered by OpenGL but the order {v1, v7, v6} is different The first two describe outwardly facing polygons Use the right-hand rule = counter-clockwise encirclement of outward-pointing normal OpenGL can treat inward and outward facing polygons differently

Wavefront obj format #example obj file v -1.63326156 -3.04798102 -8.81131839 …. vn 0.00379090 0.40057179 0.01256634 … vt 0.22390614 0.97395277 (texture) … f 4/2/4 3/1/3 2/2/2 (index to v/t/n)

Reference Obj format http://www.martinreddy.net/gfx/3d/OBJ.spec Ply format STL format - http://en.wikipedia.org/wiki/STL_(file_format)

Scene Graph COLLADA FBX Alembic

Rotation/Translation from object to world Rotate() Translate() Rect() +y +x +y +x +y +x Translate() Rotate() Rect() +y +x +y +x +y +x 每增加一個幾何轉換指令,可視為該指令前後座標系統的相對改變 本頁投影片示範,由最下方指令往上,依序產生的座標軸變化,也就是從object space往world space的座標轉換動作