เทคโนโลยีโดย milo อ่าน 4 นาทีเรียบเรียงโดยมี AI ช่วย

สร้างเกม 3D แผนที่โลกจริง: ดึง Terrain Heightfield มาทำโลกเปิดในเกมของคุณ

เคยนึกอยากทำเกมให้ผู้เล่นปีนเขาเอเวอเรสต์ หรือเดินสำรวจย่านบ้านของคุณในโลก 3D ไหม? บทความนี้จะพาคุณดึงข้อมูล Terrain Heightfield มาสร้าง Open World แบบจับต้องได้

สารบัญ

เคยนึกสงสัยไหมว่า ในเกม Open World แนวสงครามหรือเอาชีวิตรอด ทำไมภูมิประเทศถึงดูคุ้นตาเหมือนของจริง? บางเกมอย่าง Microsoft Flight Simulator ถึงกับสร้างโลกทั้งใบมาให้บินสำรวจแบบ 1:1

วันนี้ การจะดึงเอาภูเขา หุบเขา หรือแม่น้ำในโลกความจริง มาวางลงในเกม 3D ของเรา ไม่ใช่เรื่องเฉพาะของทีมพัฒนาเกมระดับ AAA อีกต่อไป ด้วยข้อมูล GIS (Geographic Information System) ที่เปิดให้ใช้งานฟรี และ Game Engine ที่ทรงพลัง เราสามารถเอา "แผนที่โลกจริง" มาทำเป็น Terrain ในเกมได้แล้ว

บทความนี้จะพาคุณก้าวจากไอเดีย ไปสู่การลงมือดึงข้อมูล Terrain Heightfield มาปั้นเป็นโลก 3D ในเกมของคุณเอง

ทำความเข้าใจ Terrain Heightfield กับข้อมูลแผนที่จริง

ก่อนจะลงลึก เราต้องเข้าใจคำว่า Heightfield หรือ Heightmap ก่อน มันคือภาพ Grayscale (ขาวดำ) ที่ใช้ค่าความสว่างของพิกเซลแทนความสูงต่ำของพื้นที่ พิกเซลสีดำสนิทคือระดับน้ำทะเล (ความสูง 0) และสีขาวสนิทคือจุดสูงสุดที่เราตั้งค่าไว้

เมื่อนำภาพ Heightmap นี้เข้าไปใน Game Engine (เช่น Unity หรือ Unreal) เอนจินจะอ่านค่าพิกเซลและยก Mesh ขึ้นมาเป็นภูเขา 3D ได้ทันที

ส่วน "แผนที่โลกจริง" ในบริบทนี้ คือข้อมูล DEM (Digital Elevation Model) ที่รวบรวมโดยดาวเทียม เช่น ข้อมูล SRTM (Shuttle Radar Topography Mission) ที่มีความละเอียดระดับโลกให้ใช้งานฟรี

ขั้นตอนการดึงแผนที่โลกจริงมาสร้างเกม 3D

เราจะใช้เครื่องมือที่นักพัฒนาเข้าถึงง่าย ทั้งซอฟต์แวร์ฟรีและข้อมูลเปิด มาเริ่มกันเลย

1. ดาวน์โหลดข้อมูลความสูง (Elevation Data)

แหล่งข้อมูลที่นิยมในปัจจุบันคือ OpenTopography หรือ USGS EarthExplorer คุณสามารถเลือกพื้นที่ที่ต้องการบนแผนที่ แล้วดาวน์โหลดไฟล์ GeoTIFF ซึ่งเป็นไฟล์ภาพที่บรรจุข้อมูลพิกัดและความสูงที่แท้จริงมาให้

  • ความละเอียด (Resolution): ข้อมูล SRTM มีความละเอียดประมาณ 30 เมตรต่อพิกเซล (1 arc-second) พอใช้ทำเกมระดับภูมิภาคได้ดี
  • หากต้องการละเอียดกว่านั้น: อาจต้องใช้บริการ LIDAR ที่ละเอียดถึงระดับเมตร แต่อาจมีค่าใช้จ่ายหรือจำกัดพื้นที่

2. ประมวลผลด้วย Blender (สร้าง Mesh)

เมื่อได้ไฟล์ GeoTIFF มาแล้ว หลายคนเลือกใช้ Blender เป็นตัวกลาง เพราะจัดการ Mesh ได้อิสระกว่าในเอนจินโดยตรง

  1. เปิดใช้ Add-on Import-Export: Import DEM as Mesh ใน Blender
  2. นำเข้าไฟล์ GeoTIFF
  3. ปรับ Scale ให้สมจริง (เช่น 1 Unit = 1 Meter) แต่อาจต้องลดความสูงลง (Z-scale) เล็กน้อยเพื่อความสมจริงทางสายตาในเกม
  4. ใช้ Decimate ลดจำนวน Polygon เพื่อให้เอนจินรับมือได้
# ตัวอย่างโค้ด Python ใน Blender สำหรับลด Poly แบบรักษารูปทรง
import bpy
bpy.ops.object.modifier_add(type='DECIMATE')
bpy.context.object.modifiers["Decimate"].decimate_type = 'COLLAPSE'
bpy.context.object.modifiers["Decimate"].ratio = 0.1

3. ดึงพื้นผิว (Texture) จากดาวเทียม

โลก 3D จะไร้ชีวิตถ้าไม่มีสี การดึงภาพถ่ายดาวเทียมมาแปะบน Terrain สามารถทำได้ผ่านบริการอย่าง Mapbox หรือ Google Maps API

  • สร้าง Orthophoto จากบริการแผนที่ โดยตัดขอบเขตให้ตรงกับพิกัดที่ดึง Heightmap มา
  • นำภาพนี้ไปเป็น Albedo Map ใน Material ของเกม

4. นำเข้า Game Engine (Unity / Godot)

นำไฟล์ Mesh (.fbx หรือ .obj) ที่ได้จาก Blender นำเข้า Game Engine ของคุณ

  • Unity: หากใช้ Unity Terrain สามารถใช้ Toolbox อย่าง Mapbox Unity SDK หรือ Terrain Tools เพื่ออ่าน Heightmap รูปแบบ .raw ได้โดยตรง
  • Godot: นำเข้าเป็น MeshInstance3D แล้วตั้งค่า Material และ Collision ตามปกติ

กรณีศึกษา: สร้างภูเขาดอยสุเทพในเกม

สมมติเราอยากทำเกมแนวเอาชีวิตรอดบนดอยสุเทพ เราเริ่มจากเข้า OpenTopography กรอกพิกัดละติจูด-ลองจิจูดของเชียงใหม่ ดาวน์โหลดข้อมูล SRTM มาแปลงเป็น Mesh ใน Blender

เราจะเห็นร่องรอยของภูเขาที่มีความลาดชันสมจริง จากนั้นดึงภาพถ่ายดาวเทียมจาก Mapbox มาทาสีให้กับผืนป่า และที่สำคัญคือการเพิ่ม Asset ต้นไม้หรือหมอกเข้าไป เพื่อสร้างบรรยากาศที่ทำให้ผู้เล่นรู้สึกเหมือนยืนอยู่บนดอยจริงๆ

สรุปและก้าวต่อไป

การสร้างเกม 3D ด้วยแผนที่โลกจริงและ Terrain Heightfield ไม่ใช่เรื่องยากอย่างที่คิด มันเป็นการผสมผสานระหว่างศาสตร์ของ GIS และการพัฒนาเกม ที่จะยกระดับความสมจริงให้กับเกมของคุณได้อย่างท่วมท้น

ลองเริ่มจากพื้นที่เล็กๆ ใกล้บ้านคุณก่อนสิ ดาวน์โหลดข้อมูล DEM มาปั้นดู แล้วอย่าลืมแชร์ผลงานโลก 3D ของคุณให้ชุมชนดูบ้างนะ

คุณมีพื้นที่บนโลกใบนี้ที่อยากเปลี่ยนให้เป็นแผนที่ในเกมมากที่สุดคือไหนมาเล่าให้ฟังได้เลย!

เนื้อหาที่จัดทำโดยมี AI ช่วยจะมีป้ายกำกับ "เรียบเรียงโดยมี AI ช่วย" เพื่อให้คุณทราบอย่างชัดเจน เราถือว่าความโปร่งใสเรื่องการใช้ AI เป็นสิ่งสำคัญต่อความไว้วางใจของผู้อ่าน

พบข้อมูลที่ไม่ถูกต้องหรือคลาดเคลื่อน?เข้าสู่ระบบเพื่อทักท้วง
บทความนี้เป็นอย่างไร?

ยังไม่มีความคิดเห็น — มาเป็นคนแรกกันเถอะ!