3DBlender

การออกแบบ Hex Map ของเกมด้วย Blender กับภาษา Python

สำหรับสาย Level Design นั้นบางครั้งเราจะได้รับโจทย์ของการออกแบบเกม สไตล์ Hex Map มักจะมีความปวดหัวประมาณนึงที่ต้องออกแบบ Mesh 6 เหลี่ยมแล้ว Copy วางเรื่อยๆ ใน Blender จะมีเทคนิคนึงที่จะทำให้ง่ายขึ้น

สำหรับคนที่คิด Hex Map ไม่ออกให้นึกถึงเกมแนว Turn-Based Strategy เก่าๆ อย่าง Heroes 3 หรือ ใหม่หน่อยก็ War Load ดังภาพ:

สำหรับสาย 3D ออกแบบ ที่ใช้ Blender เป็นหลักจะมีเทคนิคนึงคือ ออกแบบ Mesh 6 เหลี่ยม แล้ว Shift D จัดเรียงไปจนครบ Map แต่สำหรับใครที่ต้องการตัวช่วยง่ายๆ เร็วๆ ให้ลองเปิดโหมด scripting ของ blender ที่จะมี Console ให้ใส่ภาษา Python ลงไป:

เปิด Blender ขึ้นมาแล้วก็ปรับโหมดการทำงานเป็น Scripting

เราจะเจอหน้าจอการทำงาน ดังภาพข้างล่าง ประกอบไปด้วยส่วนของ console ให้เราใส่ code ภาษา Python ลงไป

แต่วิธีที่ดีที่สุดคือการสร้างไฟล์ Script นามสกุล .bpy ขึ้นมาโดยการคลิกที่ปุ่ม New จะทำให้เราพิมพ์คำสั่งได้ยาวกว่า และสะดวกกว่าพิมพ์ผ่าน Console:

จะเห็นว่าเราจะสามารถพิมพ์คำสั่งได้ยาวๆ ในส่วนของ Editor ด้านบนซ้ายใหญ่ได้เลย

คำสั่งข้างต้นคือการประกาศ Header ของ Blender Python และ การเรียก Match มาใช้งาน

import bpy
import math

ส่วนการเลือกวัตถุทุกชิ้น หรือ Mesh ทุกชิ้น (เทียบเท่าการกดปุ่ม Ctrl+A) คือ

bpy.ops.object.select_all(action='SELECT')

และทำการลบทุกวัตถุในฉาก เหมือนกดปุ่ม X เพื่อ delete

bpy.ops.object.delete(True)

เราสามารถเรียกคำสั่งการสร้าง Mesh ขึ้นมาโดยเราจะเลือก cylinder แต่ปรับ Vertices เป็น 6 จากคำสั่งใน Library คือ

bpy.ops.mesh.primitive_cylinder_add()

โดยการทำงานคือการ รันวน Loop ซ้อน และทำการคำนวณ Cylinder วัตถุ Vertices 6 ชิ้นให้ปรากฏต่อเนื่องกันดังนี้:

import bpy
import math

bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(True)

for i in range(-5,5):
    for j in range(-5,5):
        bpy.ops.mesh.primitive_cylinder_add(vertices = 6,location=( math.sqrt(3)*j+(i%2)*math.sqrt(3)/2, 1.5*i, 1))

Loop แรกจะเป็นการวนสลับฟันปลาให้สร้างงวัตถุ 5 ชิ้นเรียงกัน จากระยะ -5 ไปถึง 5 ส่วน Loop ที่สองคือการวนสลับในร่องฟันปลาในการวนจำนวนเท่ากัน ผ่านสมการ

math.sqrt(3)*j+(i%2)*math.sqrt(3)/2

ผลลัพธ์คือ:

จัดแสงหน่อยก็สวยละ

เสร็จเรียบร้อย!

Asst. Prof. Banyapon Poolsawas

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

Back to top button
Game & Mobile Development AR VR XR
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน