-> กว่าจะมาเป็น 3D ให้เราได้เห็น

เดี๋ยวนี้ เกมต่าง ๆ เริ่มต้องการทรัพยากรของ CPUและ Display Card ที่สูงมากขึ้น โดยเฉพาะ ทางด้านการแสดงภาพ ที่ต้องการความสามารถทางด้าน 3D ดังนั้น เราก็จะมาพูดกันถึง ขั้นตอน เบื้องต้น ของการสร้างภาพ 3D ที่เราเห็น ๆ กันในเกม หรือ CAD/CAM/CAE

สร้าง 3D Models
วัตถุทุกชิ้น ในระบบ 3D นั้น สร้างขึ้นมาจากกลุ่ม polygons ซึ่งแต่ละ polygon จะประกอบด้วย ค่าพิกัด (coordinate), ค่าสีของ vertices (color), เส้นสมมติระหว่างจุด vertices (vector), และ พื้นผิว ของทรง polygon


ปกติแล้ว polygons มักจะอยู่ในรูปแบบเบื้องต้นที่สุด นั่นคือ ประกอบด้วย 3 vertices ซึ่งจะเรียก ว่า triangles

Vertices จะเป็นจุดกำหนดขอบเขตของ polygons โดยมี Coordinate เป็นตัวบอกตำแหน่ง ว่า vertices แต่ละจุด อยู่ห่างกันเท่าไหร่ ในทิศทางไหน และค่า color ของแต่ละ vertices จะเป็นตัว กำหนดสีของ polygon และค่า Vector เพื่ออ้างอิงตำแหน่งผิวของ polygon

ปกติแล้ว เวลาเรามองภาพ 3D เราจะมองเห็นได้จากเพียงด้านเดียว คือด้านมุมมองที่เราเห็น ใน ส่วนอีกด้านที่อยู่ด้านหลังนั้น เราจะมองไม่เห็น ดังนั้น จึงไม่มีความจำเป็นใด ๆ ที่จะต้องเอา ทรัพยากรของเครื่อง ไปใช้เพื่อสร้างภาพด้านหลัง ค่า vector จะช่วยเป็นตัวกำหนดว่า พื้นผิวใด อยู่ ส่วนที่มองไม่เห็น ก็จะไม่ต้อง render ออกมา


Transform
หลังจากที่ได้มีการสร้าง model เรียบร้อยแล้ว ตัว model จะถูกส่งเข้าไปยังโลก 3D โลกที่ ประกอบด้วย ตำแหน่งในแกน x, y, z โดยถือเอามุมมองที่จะปรากฎภาพบนจอ เป็นจุดเริ่มต้น เส้นที่ วิ่งตรง ตั้งฉากกับระนาบจอ จะเป็นแกน z ขั้นตอนการวางตำแหน่งมุมมองนี้ เรียกว่า Viewport Transformation
ขั้นต่อมา คือการอ้างอิงค่าพิกัดของตำแหน่ง polygons แต่ละชิ้น วัดตุที่มีระยะห่างจากจุดเริ่มต้น ต่างกัน จะมองเห็นมีขนาดที่แตกต่างกันไป ของที่อยู่ใกล้ จะใหญ่กว่าของที่อยู่ไกล ขั้นตอนนี้เรียก ว่า Perspective Transformation


Clipping
เนื่องจาก ภาพที่จะแสดงให้เห็นบนจอภาพนั้น อาจจะแสดงให้เห็นทั้งหมดของโลก 3D หรือ อาจจะแค่มุมเล็ก ๆ เท่านั้น การทำ clipping คือการใส่กรอบว่า มุมมองที่ภาพจะปรากฎบนจอภาพ นั้น มีขอบเขตเท่าไหร่ ทำให้ ไม่จำเป็นต้องเสียเวลาไปกับการคำนวณภาพ ที่อยู่นอกเหนือมุมมองที่ จะแสดงผล

Lighting
สำหรับการให้แสงในฉาก 3D นั้น อาจจะแบ่งได้ 2 แบบย่อย ๆ คือ Ambient และ Direct
Ambient Lighting คือการให้แสงแบบ สว่างเท่ากันหมด กับวัตถุทุกชิ้น


Direct Lighting จะเป็นการให้แสง แบบที่มีการกำหนดตำแหน่งเกิดแสง และทิศทางแสง แสง แบบนี้ จะให้ความสว่างกับวัตถุที่อยู่ในทิศทางของแสงเท่านั้น

ในขั้นตอนของการ Lighting นี้ จะมีการใช้การคำนวณลักษณะพื้นผิวของวัตถุ ซึ่งมีผลต่อแสง และเงาสะท้อนของวัตถุ และยังมีการคำนวณค่าสีของแต่ละ vertices ด้วย

Shading และ Texturing
Shading คือการเต้มช่องว่างใน polygons ให้เป็นแผ่น โดยอาศัยค่าสีจาก vertices ที่ได้ หลังจาก ผ่านขั้นตอน Lighting แล้ว ปกติ จะใช้การ shading 3 แบบคือ

Flat Shading จะเป็นการเติม polygons ด้วยสีสีเดียว ซึ่งอาจจะเลือกเอามาจาก vertices ใด vertices หนึ่ง หรือเอาค่าสีของแต่ละ vertices มาเฉลี่ย แล้วใช้สีนั้นเติมจนเต็มแผ่น polygon


Gouraud Shading เป็นการเติม polygons ด้วยสีที่มาจาก การผสมสีระหว่าง 2 vertices ไล่จาก ด้านของ polygons เข้ามาเรื่อย ๆ และมีการไล่ค่าสีไปตามสัดส่วนของระยะทางจาก จุดเริ่มต้น ไป จนถึงจุดสุดท้าย จน ด้านแต่ละด้านของ polygons กลายเป็นแผ่นสี และค่อย ๆ เฉลี่ยสีเข้ากับสีจาก ด้านอื่น ๆ จนกลายเป็นแผ่นเต็ม polygons


Phong Shading เป็นขั้นตอนที่ซับซ้อนขึ้นจาก Gouraud Shading นั่นคือ จะมีการระบุ vector เพิ่มขึ้นบนพื้น polygons เพื่อเป็นตัวกำหนดทิศทางของพื้นผิวในแต่ละจุด ของพื้นผิว polygons ทำ ให้ขั้นตอนการทำ Lighting สามารถคำนวณค่าสีที่ถูกต้อง ของแต่ละจุดภายใน polygons ได้ ปัจจุบัน ประสิทธิภาพของ hardware ยังไม่ถึงพอ ที่จะทำ shading ระดับนี้ในเกมได้

Texturing เป็นขั้นตอนการแปะภาพ ลงไปบน polygons ที่ขึ้นรูปทรงไว้แล้ว ทำให้วัตถุนั้น ดู ใกล้เคียงความเป็นจริงมากขึ้น


อ้างอิง: Step-by-Step Analysis on Generating a 3D Scenery http://www.asus.com/


Copyright 2000-2001 CADTHAI.COM