มาเร่ิมสร้าง Terrain กัน
posted on 16 May 2008 22:41 by azimuth3d in Programmingก่อนอื่นเราต้องหาวิธีเก็บข้อมูลของภูมิประเทศของเราก่อนวิธีที่ง่าย และ ใช้เนื้อที่ในการเก็บน้อยคือ
Height Field Terrain
แปลงตรงตัวคือ "สนามความสูง" แค่นี้เราก็รู้แล้วละว่า terrain ของเราจะแบ่งออกเป็น Cell ย่อยๆ ซึ่งแต่ละส่วนย่อยๆ นั้นจะมีค่าความสูงต่างกันไป เพื่อให้เกิดภูมิประเทศ
จากรูป ด้านซ้ายจะเป็นข้่อมูลที่เราเก็บไว้ในไฟล์ เราจะเก็บในภาพ แบบ Grey Scale 256 สี เพราะเราต้องการเก็บความสูงเท่านั้น เพียงพอครับ ข้างล่างตัวอย่างของไฟล์ที่ใช้เก็บ height map
อยู่ในรูปแบบของภาพครับ ลองมาดูวิธีิีสร้างกันคร่าวๆ ก่อนอื่น เปิด
gimp ขึ้นมาทำงานก่อน แล้วไปที่ Script Fu->Patterns->Render Map
จะได้หน้าต่าง Set ค่าสำหรับสร้าง height mเลือก
เลือก gradient เป็น Default เพราะต้องการแค่ ดำ -> ขาว เท่านั้น ส่วน image size และ granularity ซึ่งเป็นค่าความละเอียดของแต่ละหน่วยใน terrain แล้วจะ Set ครับ ตามใจชอบ
มีอีกวิธีหนึ่งที่จะสร้าง heightmap ได้หลากหลายและ ได้ดั่งใจกว่านี้ครับ คือใช้โปรแกรมที่สร้าง Terrain ด้วยเฉพาะอย่าง
Terraform สำหรับผู้้ที่ใช้ linux และ Mac OS ถ้าใช้ Debian Base ( ubuntu , mint , TLE ....) ลงได้จาก synaptic หรือ apt-get เลยครับ
หรือว่าถ้าใช้ M$ Windows และ Mac OS ก็ต้อง Terragen (free for non-commercial)
ใน blog นี่ผมจะอธิบาบวิธีใช้คร่าวๆ แค่ Terraform เพราะผมเป็นแฟน linux อิอิ
พอเราได้ terraform มาอยู่่ในมือแล้ว จัดการ new terrain เลยวิธีการสร้างของ เค้ามีหลายแบบคือ
- perlin noise สร้างความสูงจากการใช้ noise function
- fractal ข้อมูลจากากรคำนวนที่รููปแบบซ้ำๆ มีแบบแผน
- subdivision แบ่งพื้นผิวเป็นส่วนย่อยสร้างรายละเอียด ของ terrain
ผมเลือก Perlin noise นะครับ จากนั้นไปที่ File->New->Perlin noise
จะได้ Terrain ที่มีหลายสี แสดงสำหรับแต่ละส่วน คือ พื้นน้ำ พื้นราบ แล้ว ที่สูง เรียงตามลำดับความสูงซึ่งพื้นที่แต่ละชนิดสูงต่างกัน
เปลี่ยน view เป็น 3d light จะเห็นภาพคร่าวว่า Render ออกมาแล้วจะเป็นอย่างไร สวยงามหรือเปล่า
ื
จบไปอีกหนึ่งตอน พักก่อนครับ ติดตามต่อไปตอนหน้า :D
edit @ 16 May 2008 22:42:54 by azimuth3d
edit @ 16 May 2008 23:02:42 by azimuth3d

#1 By GMz on 2008-05-18 00:19