3D Game Programming 2D primitive

Slides:



Advertisements
Similar presentations
第三章:材質製作與模型.
Advertisements

“走进三国” 读书汇报会 广州市玉岩中学 李玉明( ).
資料庫設計 Database Design.
Adobe Illustrator Speaker:林昱志.
CSS – 進階 IDIC.
-Artificial Neural Network- Hopfield Neural Network(HNN) 朝陽科技大學 資訊管理系 李麗華 教授.
说课.
Chapter 3. Visual Appearance 视觉外观
第十章 真实感图形绘制 基本概念 简单光照模型 基于简单光照模型的多边形绘制.
第一章 導論.
税务认定 永州市国家税务局纳税人学校.
Euler’s method of construction of the Exponential function
顏色與背景CSS樣式.
标准规范 2.自己偏好习惯 3.讨论/建议 永远遵循同一套编码规范 -- 不管多少人同时参与编码,所有代码都应该看上去像是一个人编写的一样。
優質教育基金研究計劃研討會: 經驗分享 - 透過Web 2.0推動高小程度 探究式專題研習的協作教學模式
色彩學.
Chapter 1 用VC++撰寫程式 Text book: Ivor Horton.
3D Technology Overview & Stereo Panorama
3D Model Wan-Yu Chen NTUEE.
Chapter 2. The Graphics Rendering Pipeline 图形绘制流水线
素材的采集与处理.
第 13 章 用CSS 設定 文字顏色與背景.
Creating Animated Apps (I) 靜宜大學資管系 楊子青
新觀念的 VB6 教本 第13章 表單的圖形輸出系統.
Chapter 10 Three-Dimensional Viewing (三维观察)
3D動畫與 3D Studio MAX 第六組 蘇哲群.
訪視委員 蒞臨指導 熱烈歡迎 Chrome text with reflection (Advanced)
第八章 Illumination and Shading
3D PACMAN! Student: Chia-Wei Yao ID:
Scratch程式設計 2016/04/06.
Introduction to OpenGL (1)
第三章 基本觀念 電腦繪圖與動畫 (Computer Graphics & Animation) Object Data Image
第10章 抠像技术应用方法.
2 数字图像基础 赵国庆 博士 北京师范大学教育技术学院
The Concept of Fuzzy Theory
CSS樣式 靜宜大學 資管系 楊子青.
ICG 2018 Fall Homework1 Guidance
Section B 2b–3b & Self Check
基礎程式設計範例 -網頁名片.
《影视后期合成技术--After Effects》教学课件
第二节 时间 位移.
VR – OpenGL 2D.
虛擬世界創造 授課教師:紀明德.
Advisor : Prof. Frank Y.S. Lin Presented by Yen-Yi, Hsu
第三章 基本觀念 電腦繪圖與動畫 (Computer Graphics & Animation) Object Data Image
Chapter 5 Recursion.
VIDEO COMPRESSION & MPEG
影像處理的基本知識 影像數位化 數位影像的基本概念.
Mechanics Exercise Class Ⅰ
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.
線性規劃模式 Linear Programming Models
计算机图形学 姜明 北京大学数学科学学院 更新时间2019年4月25日星期四8时14分39秒.
3D Game Programming Projection
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第二章 軟體測試概論.
BSP Tree Construct a BSP tree of the following scene, WITH L7 as root.
林福宗 清华大学 计算机科学与技术系 2008年9月 2019年5月5日 多媒体技术教程 第4章 彩色数字图像基础 林福宗 清华大学 计算机科学与技术系 2008年9月.
以四元樹為基礎抽取圖片物件特徵 之 影像檢索
國立清華大學 National Tsing Hua University
多媒體網頁 授課教師:葉生正教授.
2012 程式設計比賽 Openfind 天使帝國 v2.0 (蓋亞的紋章).
Arguments to the main Function and Final Project
交互式计算机图形处理系统 哈尔滨工业大学计算机学院 唐好选 2019年7月27日.
PROGRAM 1 Simple E. Angel, Interactive Computer Graphics A Top-Down Approach with OpenGL, Third Edition Addison-Wesley Longman, 2003.
Principle and application of optical information technology
Attn: Ms Michelle Chan (Event Management) Dir. Tel: (852) /
When using opening and closing presentation slides, use the masterbrand logo at the correct size and in the right position. This slide meets both needs.
Presentation transcript:

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

Outline Imaging and Raster Primitives Alpha and Blending Intersection 2016

Imaging and Raster Primitives An Interactive Introduction to OpenGL Programming Imaging and Raster Primitives

Super Mario Bros. Nintendo Sprite Super Mario Bros. Nintendo

Electromagnetic spectrum http://en.wikipedia.org/wiki/Electromagnetic_spectrum 可見光是電磁波的子集,這張圖顯示各尺度波長的性質和特色 Image from wiki

Three-Color Theory Human visual system has two types of sensors Rods: monochromatic, night vision Cones: Color sensitive Three types of cone Only three values (the tristimulusvalues) are sent to the brain 人眼的視網模主要由兩種感光細胞所組成 柱狀細胞: 感受亮度的變化 錐狀細胞: 再區分為三大類,分別感應不同波段的可見光,也就是紅綠藍三色,這也就是為何人眼視覺以三原色為主

Additive / Subtractive color Y M C Subtractive Color Printer Additive Color LCD, projector 光的三原色由RGB(紅綠藍構成),也就是一次色,顯示器或投影機由光的三原色組成各種顏色。兩兩混色可形成二次色,剛好對應減色系統的一次色

RGB color space Green Black (0, 0, 0) Red Blue http://www.demilked.com/rgb-colorspace-atlas-every-color-imaginable/ Blue a 8 x 8 x 8-inch cube book Tauba Auerbach

Bitmap width height xorig yorig xmove

Raster Graphics Image produced as an array (the raster) of picture elements (pixels) in the frame buffer (179, 161, 153) 在此簡述一下,呈像的原理 一張影像可視為由二維的像素(pixel)所組成,而每個像素則是包含了RGB (紅綠藍)三色的強度 在電腦中有一塊特別的記憶體稱之為framebuffer,它記錄了這些像素的資訊,並與顯示器的發光體有著一對一的對應 因此改變framebuffer內部的值,顯示器的畫面也隨之改變, 所以在設計遊戲的畫面,最基本的核心就是如何控制framebuffer的值

Display Technologies CRT LCD

Alpha and blending 透明度和混色,進行影像間的疊圖處理,增添影像效果

Draw image

Alpha An alpha channel, representing transparency information on a per-pixel basis. Alpha = 0.0f: fully transparent Alpha = 1.0f: fully opaque Alpha channel 可用來指定像素的透明度 0 表示完全透明 1 表示完全不透明

Chroma-keying (Primatte) 在電影特效上,常利用藍幕的方式,將前景與背景分離,由於背景的顏色單純,可以很容易的分出背景色,如圖右 也就是可以將顏色藍色的像素中的透明度指定為0

Writing Model Use A component of RGBA (or RGBa) color to store opacity During rendering we can expand our writing model to use RGBA values blend source blending factor destination component source component 混色的模型基本上就是 寫入的顏色值和已在framebuffer值的處理 Color Buffer destination blending factor

Blending glBlendFunc(Glenum S, Glenum D); Cf = (Cs*S) + (Cd*D) glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); Ex: Cs={Rs, Gs, Bs, As}, Cd ={Rd, Gd, Bd, Ad}, Cf = (Cs*As) + (Cd*(1-As)) 透過混色方程式的設定,Cf代表混色後的結果,Cs代表將填入的顏色,Cd代表已經在畫面上(framebuffer)的顏色。 透過x跟d兩個係數可以調整出不同的混色結果。 常用的設定是,S代表填入顏色的透明度,D代表1減掉填入顏色的透明度,就會呈現像畫圖在透明投影片層層疊圖的效果 舉例而言 若Cs =(1, 1, 0, 0.6), Cd= (0.8, 0.4, 0.4, 0.3) Cf = (1, 1, 0) *(0.6) + (0.8, 0.4, 0.4)*(1-0.6) = (0.92, 0.56, 0.16)

Compositing  F B C foreground color alpha matte background plate 延續在電影特效中混色的運用 對於前景的物體,先分離出alpha matte指定每個像素的透明度,並找好適當的背景 透過透明度合成出最後的結果,Cf = (Cs*As) + (Cd*(1-As)) 當等於0時就等於選擇背景的顏色 composite C F C compositing equation =0 B

Compositing  F B C composite compositing equation =1 F C B 當等於1時就等於選擇前景的顏色 composite C F compositing equation C =1 B

Order Dependency Is this image correct? Probably not Polygons are rendered in the order they pass down the pipeline Blending functions are order dependent 處理透明色時要特別留意,由於混色公式一次處理兩個顏色的混色 當多個顏色混合時,容易因為繪圖先後順序的問題,兩兩混色後產生錯誤的結果 故需先對fragment或幾何物體先排好順序

Intersection

Axis-Aligned Bounding Boxes Specified as two points: Normals are easy to calculate Simple point-inside test:

Problems With AABB’s Not very efficient Rotation can be complicated Must rotate all 8 points of box Other option is to rotate model and rebuild AABB, but this is not efficient

(maxX, maxY) (minX, minY) function isPointInsideAABB(point, box) { return (point.x >= box.minX && point.x <= box.maxX) && (point.y >= box.minY && point.y <= box.maxY); } https://developer.mozilla.org/en-US/docs/Games/Techniques/3D_collision_detection

function intersect(a, b) { return (a. minX <= b. maxX && a function intersect(a, b) { return (a.minX <= b.maxX && a.maxX >= b.minX) && (a.minY <= b.maxY && a.maxY >= b.minY); }

Bounce

Example [Bounce] void glutTimerFunc Key Function *Registers a timer callback to be triggered in a specified number of milliseconds. msecs : Number of milliseconds to pass before calling the callback. func : The timer callback function. value : Integer value to pass to the timer callback. void glutTimerFunc (unsigned int msecs, void(*func)(int value), int value); *此函數可設定GLUT等待msec.,然後呼叫func這個函數(可自訂),並於value參數中傳入自訂的值。

Bounce animation …

void TimerFunction(int value) { // Reverse direction left 、right 、top 、bottom edge if(x1>windowWidth-rsize || x1<0) xstep=-xstep; if(y1>windowHeight-rsize || y1<0) ystep=-ystep; //Check bounds if(x1>windowWidth-rsize) x1=windowWidth-rsize-1; if(y1>windowHeight-rsize) y1=windowHeight-rsize-1; //Actually move the square x1+=xstep; y1+=ystep; //Redraw the scene with new coordinates glutPostRedisplay(); glutTimerFunc(33,TimerFunction,1); //self recall per 33msecs. }