418341...
DESCRIPTION
418341 สภาพแวดล้อมการทำงานคอมพิวเตอร์กราฟิกส์ การบรรยายครั้งที่ 23. ประมุข ขันเงิน [email protected]. TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: A A A A A A A A A A A. วัตถุจริงๆ ตามธรรมชาติ. ขรุขระ. วัตถุจริงๆ ตามธรรมชาติ. ขรุขระ. - PowerPoint PPT PresentationTRANSCRIPT
418341 สภาพแวดล้อมการทำ�างานคอมพ�วเตอร�กราฟิ�กส�การบรรยายคร��งทำ�� 23
ประม"ข ข�นเง�น[email protected]
ว�ตถุ"จร�งๆ ตามธรรมชาต�• ขร"ขระ
ว�ตถุ"จร�งๆ ตามธรรมชาต�• ขร"ขระ
ว�ตถุ"จร�งๆ ตามธรรมชาต�• ขร"ขระ
ว�ตถุ"ทำ��เราสรางไดดวย OpenGL
• เร�ยบ
Texture Mapping
• เราสามารถุใช texture เพ��มรายล้ะเอ�ยดให้ว�ตถุ"ได• แต,น��นก-เป.นแค,การเปล้��ยนส� ไม,ม�ล้�กษณะความ
ขร"ขระห้ร1อต1�นล้2ก
ภาพจาก Oliveira, Bishop, McAllister, Relief Texture Mapping
การทำ�าให้พ1�นผิ�วด4ขร"ขระ1. Displacement Mapping2. Normal Mapping3. Bump Mapping4. Relief Mapping
Displacement Mapping
• Cook (1984)• เร��มตนจากพ1�นผิ�วเร�ยบทำ��สรางจาก polygon
จ�านวนมาก• texture แสดงความ น4น ของพ1�นผิ�ว“ ”• ใช texture ในการยกห้ร1อกด vertex บนพ1�นผิ�วน��น• ผิล้ล้�พธ�ไดเป.นพ1�นผิ�วขร"ขระจร�งๆ
Displacement Mapping
Displacement Mapping
• ขอด�– ไดภาพทำ��สมจร�งจร�งๆ
• ขอเส�ย– ตองใช polygon จ�านวนมากเพ1�อสรางรายล้ะเอ�ยด– เปล้1องห้น,วยความจ�า– วาดชา
Normal Mapping
• จ�าล้องความขร"ขระโดยใช texture ระบ" normal ของแต,ล้ะ fragment เอาเอง
• ม� texture เพ��มมาห้น2�งอ�นใชเก-บ normal• เวล้าค�านวณ normal ให้น�า normal จาก texture มา
ใช– ไม,ไดเอา normal ตามทำ�� OpenGL ให้มา
• น�ยมใชตามซอฟิต�แวร�สราง content สามม�ต�ต,างๆ– 3ds Max, Maya, Blender, ฯล้ฯ
Normal Mapping
• การเก-บ normal ในร4ปภาพ– ใช R แทำนค,า x– ใช G แทำนค,า y– ใช B แทำนค,า z
• ความจร�ง normal จะเป.นเวกเตอร�ห้น2�งห้น,วย– ด�งน��น z = sqrt(1 – x2 – y2)– ฉะน��นเก-บแค, x แล้ะ y ก-ได
Normal Mapping
• x, y, แล้ะ z จะม�ค,าไดต��งแต, -1 ถุ2ง 1• แต, R, G, แล้ะ B ม�ค,าไดต��งแต, 0 ถุ2ง 1 เทำ,าน��น• เพราะฉะน��นตองแทำน– -1 ดวย 0– 1 ดวย 1
• กล้,าวค1อ R = x/2 + 0.5• ส�ของ normal map จ2งด4สว,างๆ
Normal Mapping
• ต�วอย,าง normal map
จาก http://www.bencloward.com/ จาก http://planetpixelemporium.com/
Normal Map ทำ�าให้เก�ดความขร"ขระไดอย,างไร?
• ใน Phong lighting model เราใช normal ในการค�านวณ– ส� diffuse– ส� specular
• เราไม,ไดใชต�าแห้น,งของ fragment โดยตรงในการค�านวณส�– เวนแต,ตอนทำ��ห้าเวกเตอร�จากตาไปย�ง fragment
• พ1�นผิ�วขร"ขระ ความส4งเปล้��ยนเร-ว normal เปล้��ยนเร-ว
• ใช normal map เก-บ normal ไว สามารถุห้าส�ไดเห้ม1อนก�บพ1�นผิ�วขร"ขระ โดยไม,ตองเก-บพ1�นผิ�ว
Normal Mapping
• โมเดล้ทำ��ทำ�าจาก polygon เร�ยบๆ ไม,ก�� polygon
จาก http://www.bencloward.com/
Normal Mapping
• เพ��ม normal map
จาก http://www.bencloward.com/
Normal Mapping
• ภาพทำ��ม�รายล้ะเอ�ยดส4ง
จาก http://www.bencloward.com/
Normal Mapping
Normal Mapping
http://amber.rc.arizona.edu/lw/normalmaps.html
Normal Mapping
http://amber.rc.arizona.edu/lw/normalmaps.html
เราจะสราง normal map อย,างไร?
• ม�สองว�ธ�– สรางจากโมเดล้รายล้ะเอ�ยดส4ง• ไปด2งเอา normal ณ จากต�าแห้น,งต,างๆ มาเก-บไวใน
texture• ซอฟิต�แวร�สรางเน1�อห้าสามม�ต�ส,วนให้ญ่,ม� feature ให้ค"ณ
สามารถุสราง normal map ได– ค�านวณจาก bump map
Bump Mapping
• ว�ธ�การสรางความขร"ขระโดยใช texture ทำ��ก�าห้นด ความส4ง ของพ1�นผิ�ว“ ”– Texture แบบเด�ยวก�บทำ��ใชทำ�า displacement mapping
• ตองการได normal ส�าห้ร�บแต,ล้ะ fragment เห้ม1อน normal map– Normal map ผิ4ใชก�าห้นด normal ให้– Bump map ค�านวณเองจากความส4ง
Surface Parameterization
• ก,อนทำ�า bump mapping ไดเราจะตองสามารถุระบ"จ"ดแต,ล้ะจ"ดบนพ1�นผิ�วไดดวยพ�ก�ด (u,v)
• ยกต�วอย,างเช,น ถุาเป.นพ1�นผิ�วส��เห้ล้��ยมธรรมดา เราอาจจะก�าห้นดพ�ก�ด (u,v) ด�งต,อไปน��
(0,0)
(1,1)
Surface Parameterization
• ในกรณ�ทำ��เป.นพ1�นผิ�วอ1�นๆ surface parameterization ค1อฟิ:งก�ช�น
• ฟิ:งก�ช�นน��จะร�บพ�ก�ด (u,v) แล้วค1นจ"ด (x,y,z) ในสามม�ต�มาให้
• สมมต�ว,าพ1�นผิ�วส��เห้ล้��ยมจ�ต"ร�สในขอทำ��แล้วม�– ม"มล้,างซายทำ��จ"ด (-1,-1,0) แล้ะ– ม"มบนขวาทำ��จ"ด (1,1,0) แล้ว
เราจะไดว,า
p : R2 ! R3
p(u;v) =
2
42u ¡ 12v¡ 10
3
5
Surface Parameterization
• ส�าห้ร�บทำรงกล้ม เราอาจจะใช spherical coordinate
• แต,ปกต�แล้ว u แล้ะ v จะม�ค,าต��งแต, 0 ถุ2ง 1 ฉะน��นเราจะใช
p(µ;Á) =
2
4cosÁsinµsinÁsinµcosµ
3
5
p(u;v) =
2
4cos(2¼v) sin(¼u)sin(2¼v) sin(¼u)
cos(¼u)
3
5
Surface Parameterization
• ถุาเป.นโดน�ทำทำ��ม�ร�ศม�ห้ล้อดเทำ,าก�บ r แล้ะร�ศม�ของวงกล้มให้ญ่,เทำ,าก�บ Rเราอาจใช
p(u;v) =
2
4(R +r cos(2¼v)) cos(2¼u)(R +r cos(2¼v)) sin(2¼u)
r sin(2¼v)
3
5
Bump Map
• Bump map เป.นฟิ:งก�ช�น โดยทำ�� ม�ค,าเทำ,าก�บระยะทำางทำ��พ1�นผิ�ว ณ พ�ก�ด (u,v) ถุ4กทำ�าให้ส4งข2�นห้ร1อต��าล้งตามแนวของ normal ทำ��จ"ดน��น
• ฉะน��นพ1�นผิ�วให้ม,ทำ��ไดค1อ
โดยทำ�� ค1อ normal ทำ��พ1�นผิ�วพ�ก�ด (u,v)
d : R2 ! R d(u;v)
p¤(u;v) = p(u;v) +d(u;v)n(u;v)
n(u;v)
Bump Map
การค�านวณ Normal
• เราตองการค�านวณ normal ของพ1�นผิ�วให้ม, p*• ปกต�แล้วเขาจะค�านวณ normal ก�นอย,างไร?• ถุาเราม�ฟิ:งก�ช�น p ของพ1�นผิ�วใดๆ เราจะไดว,า
เม1�อ ค1อ partial derivative ของ p เม1�อเทำ�ยบก�บ u ค1อ partial derivative ของ p เม1�อเทำ�ยบก�บ vnormalize ค1อการทำ�าให้เป.น vector ห้น2�งห้น,วย
n(u;v) = normalizeµ@p@u
£@p@v
¶
@p@u@p@v
ต�วอย,าง• ส�าห้ร�บฟิ:งก�ช�น p ของร4ปส��เห้ล้��ยม
• เราจะไดว,า
p(u;v) =
2
42u ¡ 12v¡ 10
3
5
@p@u
=
2
4200
3
5 ;@p@v
=
2
4020
3
5
n(u;v) = normalizeµ@p@u
£@p@v
¶=
2
4001
3
5
การค�านวณ Normal ของ p*
• เราไดว,า
• เพ1�อความง,าย เราจะค�านวณ
ก,อน• m* เป.นเวกเตอร�ทำ��ต� �งฉากก�บพ1�นผิ�ว แต,ม�นไม,ใช,
เวกเตอร�ห้น2�งห้น,วย
n¤(u;v) = normalizeµ@p¤
@u£@p¤
@v
¶
m¤ =@p¤
@u£@p¤
@v
การค�านวณ Normal ของ p*
• เราจะไดอ�กว,า
• ในทำ�านองเด�ยวก�น
@p¤
@u=@(p +dn)
@u=@p@u
+@(dn)@u
=@p@u
+@d@u
n +@n@u
d
@p¤
@v=@p@v
+@d@vn +
@n@v
d
การค�านวณ Normal ของ p*
• เพ1�อให้การค�านวณง,ายข2�น เราจะประมาณว,า
• ทำ��งน��เป.นเพราะว,า แล้ะ น��นค�านวณล้�าบาก• การต�ดเทำอมส"ดทำายออกย�งค,อนขางสมเห้ต"สมผิล้
เน1�องจาก– d(u,v) ม�ค,านอย (ถุาม�ค,ามากเก�นไปก-ควรจะทำ�าสรางโมเดล้ให้ม,
เส�ย)– พ1�นผิ�วต��งตนเป.นพ1�นผิ�วเร�ยบ ด�งน��น แล้ะ จ2งม�ค,านอย
(กล้,าวค1อ normal ไม,เปล้��ยนแปล้งอย,างรวดเร-ว)
@p¤
@u¼@p@u
+@d@u
n
@p¤
@v¼@p@v
+@d@vn
@n@u
@n@v
@n@u
@n@v
การค�านวณ Normal ของ p*
• ฉะน��น
• แล้ว
m¤ ¼µ@p@u
+@d@u
n¶£µ@p@v
+@d@vn¶
=µ@p@u
£@p@v
¶+µ@d@u
n £@p@v
¶¡µ@d@vn £
@p@u
¶
n¤ =normalize(m¤) =m¤
km¤k
การค�านวณ Normal ของ p*
• ทำ��เห้ล้1อค1อตองค�านวณ แล้ะ• ถุาม�ส4ตรของ d เราสามารถุทำ�าการค�านวณม�นได
อย,างง,ายดาย• แต,ปกต�แล้ว d จะให้มาเป.น texture• อย,างไรก-ด� เราสามารถุประมาณอน"พ�นธ�ไดด�งต,อไป
น��
โดยทำ�� ค1อค,าคงทำ��ทำ��ม�ค,านอยค,าห้น2�ง
@d@u
@d@v
@d@u
¯¯¯¯(u0;v0)
¼d(u0+";v0) ¡ d(u0;v0)
"
@d@u
¯¯¯¯(u0;v0)
¼d(u0;v0+") ¡ d(u0;v0)
"
การค�านวณ Normal ของ p*
• ในภาษา Cg เราจะให้ d เป.นต�วแปรประเภทำ sampler2D
• สมมต�ว,า d เป.น texture ทำ��ม�ความกวาง w pixel แล้ะส4ง h pixel
• เราสามารถุค�านวณ partial derivative ของ d ณ พ�ก�ด (u,v) ไดด�งต,อไปน��
float dddu = w*(tex2D(d, float2(u+1.0f/w,v)) – tex2D(d, float2(u,v))).r;
float dddv = h*(tex2D(d, float2(u,v+1.0f/h)) – tex2D(d, float2(u,v))).r;
Normal Mapping
ขอจ�าก�ดของ Normal แล้ะ Bump Mapping
• ไม,ม�การทำอดเงาล้งบนต�วเอง• ไม,ม� parallax– ส,วนทำ��น4นข2�นมาเคล้1�อนทำ��ไปพรอมก�บส,วนทำ��เวาล้งไป– ความจร�งแล้วทำ��งสองส,วนน��ควรจะเคล้1�อนทำ��เม1�อเทำ�ยบ
ก�บตาแตกต,างก�นเล้-กนอย
Relief Mapping
• เทำคน�คการแสดงผิล้พ1�นผิ�วทำ��ม�รายล้ะเอ�ยดส4งโดยใชขอม4ล้ความส4งของ fragment แต,ล้ะ fragment ประกอบ
• ค�ดว,าจร�งๆ แล้วพ1�นผิ�วเป.น กล้,อง“ ”
ภาพจาก Oliveira, Bishop, McAllister, Relief Texture Mapping
Relief Mapping
ภาพจาก Oliveira, Bishop, McAllister, Relief Texture Mapping
Relief Mapping
Policarpo, Oliveira, Comba. Real-Time Relief Mapping on Arbitrary Polygonal Surfaces
Relief Map
• ส�าห้ร�บพ1�นผิ�วทำ��ตองการแสดง จะม� texture อย4, 2 texture– Normal map– Height map บอกความ ล้2ก ของแต,ล้ะ “ ” texel• 0 = ต1�น, 1 = ล้2ก
• สามารถุแทำนทำ��งห้มดขางบนน��ไดดวย texture RGBA แค, texture เด�ยว– Normal map RGB– Height map A
Relief Map
Policarpo, Oliveira, Comba. Real-Time Relief Mapping on Arbitrary Polygonal Surfaces
การแสดงผิล้ Relief Map
• วาดพ1�นผิ�วเร�ยบทำ��ม� relief map ทำ��ต�ดอย4,ดวยตามธรรมดา
• เม1�อไปถุ2งข��นของการประมวล้ผิล้ fragment เราจะม�ขอม4ล้– ต�าแห้น,งของ fragment– Texture coordinate
• ค�ดว,า fragment อย4,ทำ�� ผิ�วห้นา ของกล้,อง“ ”• ล้ากร�งส�จากสายตาไปย�ง fragment• เราตองการห้าว,าร�งส�น��นต�ดก�บพ1�นผิ�วจร�งๆ ทำ��ไห้น
การแสดงผิล้ Relief Map
• ต�าแห้น,ง A = ต�าแห้น,งของ fragment• ตองการห้าจ"ด (3) ซ2�งเป.นจ"ดแรกทำ��ร �งส�ต�ดก�บพ1�น
ผิ�ว
การแสดงผิล้ Relief Map
• เราสามารถุจ"ดทำ��ร�งส�ต�ดก�บว�ตถุ"เป.นจ"ดแรกไดดวยการทำ�า binary search– ค�านวณจ"ด B ซ2�งเป.นจ"ดทำ��ร �งส�เด�นทำางถุ2งความล้2ก 1– ค�านวณจ"ดตรงกล้างระห้ว,าง A ก�บ B (ในภาพค1อจ"ด (1))– ถุาจ"ดตรงกล้างน��นอย4,ใตพ1�นผิ�ว
• เปล้��ยน B ไปเป.นจ"ด (1)
– ถุาจ"ดตรงกล้างอย4,เห้น1อพ1�นผิ�ว• เปล้��ยน A ไปอย4,ทำ��จ"ด (1)
– ทำ�าเช,นน��ไปเร1�อยๆ จน A ก�บ B ใกล้ก�นมากๆ (ส,วนให้ญ่, 8 รอบก-พอ)
– ใช normal แล้ะส�ทำ��จ"ดกล้างระห้ว,าง A ก�บ B ในการแสดงผิล้
การแสดงผิล้ Relief Map
• อย,างไรก-ด�การห้าจ"ดด�งกล้,าวอาจทำ�าให้เราเห้-นพ1�นผิ�วทำ��ถุ4กบ�งได
• กรณ�ทำ��ม�พ1�นผิ�วแคบๆ ระห้ว,างจ"ด A ก�บ (1)
การแสดงผิล้ Relief Map
• เพ1�อห้ล้�กเล้��ยงความผิ�ดพล้าดด�งกล้,าว เราจะทำดสอบจ"ดทำ��อย4,ห้,างจากจ"ด A ไปทำ�ล้ะ จนกระทำ��งเจอพ1�นผิ�วแรก
• ห้ล้�งจากน��นใช binary search
การแสดงผิล้ Relief Map
• เราสามารถุน�าอ�ล้กอร�ทำ2มเด�ยวก�นไปใชห้าว,าจ"ดทำ��เห้-นไดร�บแสงห้ร1อไม,ดวย
• ทำ�าการล้ากเสนจากจ"ดบนพ1�นผิ�วไปย�งแห้ล้,งก�าเน�ดแดง
• ห้าว,าม�พ1�นผิ�วระห้ว,างจ"ดต�ดก�บแห้ล้,งก�าเน�ดแสดงห้ร1อไม,
Relief Mapping
Policarpo, Oliveira, Comba. Real-Time Relief Mapping on Arbitrary Polygonal Surfaces
Relief Mapping
Policarpo, Oliveira, Comba. Real-Time Relief Mapping on Arbitrary Polygonal Surfaces
Relief Mapping
Relief Mapping
ขอจ�าก�ดของ Relief Mapping
• ไม,สามารถุทำ�าให้เงาของว�ตถุ"ขร"ขระตามไปดวยได