มาเร่ิมสร้าง 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

Comment



smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

Tweet

ยากแต้ อ้อ จะบอกว่า ถ้าจะแก้ไขอะไร เมื่อ publish แล้ว ครั้งต่อไปให้กด Save แทน พวก edit @ ... จะได้ไม่ขึ้นมาให้รกตา

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

big smile

#2 By azimuth3d on 2008-05-18 10:51