30
好好好好 PSP 好好

好孩子的 PSP 教室

  • Upload
    laksha

  • View
    103

  • Download
    2

Embed Size (px)

DESCRIPTION

好孩子的 PSP 教室. 好孩子的 PSP BSP 教室. 2010.05.19. 0. 前言. Q: 為什麼會有這份投影片 ? A: 因為太多人問一樣的問題了 … ex: 而且 , 之前助教好像恍神講錯東西了 …. 正面跟反面怎麼分 ? 會不會有牆壁被切兩次 ? 被切兩次的面又要怎麼表示 ? 兩條線的交點要怎麼算 ? 作業會不會延期 ? PSP 改機要改哪個版本 ??. 1.Q&A. 來解答一下重複的一些問題 已經開始寫的聽完這部分就可以下課了 ~. 1.Q&A. Q: 正面跟反面怎麼分 ? - PowerPoint PPT Presentation

Citation preview

Page 1: 好孩子的 PSP  教室

好孩子的 PSP 教室

Page 2: 好孩子的 PSP  教室

好孩子的 PSPBSP 教室2010.05.19

Page 3: 好孩子的 PSP  教室

Q: 為什麼會有這份投影片 ? A: 因為太多人問一樣的問題了…

◦ ex:

而且 , 之前助教好像恍神講錯東西了…

0.前言

正面跟反面怎麼分 ? 會不會有牆壁被切兩次 ?

被切兩次的面又要怎麼表示 ?兩條線的交點要怎麼算 ?

作業會不會延期 ?PSP 改機要改哪個

版本 ??

Page 4: 好孩子的 PSP  教室

來解答一下重複的一些問題 已經開始寫的聽完這部分就可以下課了 ~

1.Q&A

Page 5: 好孩子的 PSP  教室

Q: 正面跟反面怎麼分 ? A: 測資中有給定觀察者所在的 initial 位置 , 以”面向

觀察者” 的面當正面 (front), 另一面當反面 (back).

建 Tree 的時候正面丟左邊 , 反面丟右邊 .

ex:

1.Q&A

牆 1

牆 2

牆 3

Page 6: 好孩子的 PSP  教室

Q: 會不會有牆壁被切兩次 ? A: 助教那麼陰險正直 , 當然會啦 ~ 大概有 2 組以上的測資會切 n 次吧 = =

1.Q&A

牆 1 牆 2

牆 3牆 1

牆 2F

牆 3

牆 2B 牆 1

牆 2F

牆 3B

牆 2B

牆 1

牆 2F

牆 3BB

牆 2B

牆 3F

牆 3F 牆 3BF

Page 7: 好孩子的 PSP  教室

Q: 那會不會有斜的牆壁 ? A: 助教那麼 ( 嗶 ~~) 當然會啦 ~

其實我還沒設計…可能最難的那組測資會有斜 的牆壁吧 可能而已啦…

1.Q&A

Page 8: 好孩子的 PSP  教室

Q: BSP Tree 建好後 , 移動視角的時候需要重新建嗎 ?

A: 阿哈哈哈 我之前好像說要…其實是不用的 ( 認真 )

BSP Tree 建 Tree 時所分的 Front 跟 Back 其實只是為了把空間中其他 polygon 分成兩個區域 , 並沒有真正的”前”跟”後”的關係 , 前後關係其實是在畫圖(render) 時才會根據觀察者的眼睛判斷 ( 先畫”實際上的後” -> 畫牆壁 -> 畫”實際上的前” ). 所以你會發現投影片上的 pseudo code(P.25) 並不一定先畫左子樹還右子樹 , 而是以 view 的位置決定 .

1.Q&A

我就說我沒睡飽會講錯話嘛… .

Page 9: 好孩子的 PSP  教室

1.Q&A

Page 10: 好孩子的 PSP  教室

Q: 兩條線的交點要怎麼算 ? A: 最笨的辦法 , 請算出直線方程式 ...

至於聰明一點的…有人想到請教我 XD

1.Q&A

x-y-1=0

>0

<0

Page 11: 好孩子的 PSP  教室

Q: BSP Tree 要怎麼建… .? A: 這問題問得太好了 我們下堂課慢慢討論…

Q: 作業會不會延期 ? A: 我想應該不會 .

1.Q&A

Page 12: 好孩子的 PSP  教室

已經可以回去寫 code 的同學們就回去吧 ! 還聽不懂我在講什麼的…

下課 !

Page 13: 好孩子的 PSP  教室

考慮投影片上的測資 :

2. An easy example for creating BSP Tree

1 100 800 100 500 1.0 1.0 1.02 200 500 200 400 1.0 1.0 0.03 400 800 100 800 1.0 0.0 1.04 400 700 400 800 0.0 1.0 1.05 500 700 400 700 1.0 0.0 0.06 500 800 500 700 0.0 0.0 1.07 800 800 500 800 1.0 1.0 0.08 800 500 800 800 1.0 0.0 1.0

X(0,0)

Page 14: 好孩子的 PSP  教室

12345678

X(0,0)

1

Page 15: 好孩子的 PSP  教室

12345678

X(0,0)

1

2

Page 16: 好孩子的 PSP  教室

12345678

X(0,0)

1

2

3

Page 17: 好孩子的 PSP  教室

12345678

X(0,0)

1

2

3f 3b

Page 18: 好孩子的 PSP  教室

12345678

X(0,0)

1

2

3f 3b

4

Page 19: 好孩子的 PSP  教室

12345678

X(0,0)

1

2

3f 3b

4

5

Page 20: 好孩子的 PSP  教室

12345678

X(0,0)

1

2

3f 3b

4

5

6

Page 21: 好孩子的 PSP  教室

12345678

X(0,0)

1

2

3f 3b

4

5

6

7

Page 22: 好孩子的 PSP  教室

12345678

X(0,0)

1

2

3f 3b

4

5

6

7

8

Page 23: 好孩子的 PSP  教室

12345678

X(0,0)

1

2

3f 3b

4

5

6

7

8f

8b

Page 24: 好孩子的 PSP  教室

12345678

X(0,0)

1

2

3f 3b

4

5

6

7

8f

8b

Page 25: 好孩子的 PSP  教室

Preorder: 1 2 3F 4 5 8F 6 7 8B 3B

Inorder: 8F 5 6 8B 7 4 3F 2 3B 1

Postorder: 8F 8B 7 6 5 4 3F 3B 2 1

Result 1

2

3f 3b

4

5

6

7

8f

8b

Page 26: 好孩子的 PSP  教室

請參閱第七章 P25 的 pseudo code.

Rendering

Page 27: 好孩子的 PSP  教室

12345678

X(0,0)

1

2

3f 3b

4

5

6

7

8f

8b

render 順序 : 1 3b 2 3f 7 8b 6 5 8f 4

6 比 4 早 render->6 被 4 蓋住

Page 28: 好孩子的 PSP  教室

12345678

X(0,0)

1

2

3f 3b

4

5

6

7

8f

8b

render 順序 : 1 3b 2 3f 4 6 7 8b 5 8f

4 比 6 早 render->4 被 6 蓋住

Page 29: 好孩子的 PSP  教室

1. 助教提供的 bsp.cpp 裡的 inorder 跟 postorder function 寫錯了 XD 請自己更改 ( 把打錯的preorder(…) 改成 inorder/postorder) 或是到網頁上下載新版的範例程式 .

2. 為了輸出 , 請把 Tnode 裡面的 char label 改成char* label 這樣 label 才能隨著切割次數越來越長 .( 沒改也是可以畫出場景啦 , 只是輸出不一樣… )

3. 牆壁如果沒顏色的話請檢查 new wall 和 new Tnode 有沒有給予 color 值 ( 預設我記得是沒有的… )

4. 貼圖有貼有分 ~ 貼一種 15 兩種 20

除了這些之外…

Page 30: 好孩子的 PSP  教室

阿 期中考…

最後一題如果寫 opengl code然後寫對的可以來要分數 ( 寫錯的就自己斟酌吧 = = )

END