ไลบรารี Ruby สำหรับสร้างและเรนเดอร์กราฟิก 3D & การพัฒนาเกม

ไลบรารี Ruby 3D แบบโอเพ่นซอร์สสำหรับสร้างและเรนเดอร์กราฟิก 3D & ฉากในการพัฒนาเกม, การจำลอง, และหุ่นยนต์ผ่าน API Ruby ฟรี.

Ray Library คืออะไร?

หากคุณเป็นนักพัฒนา Ruby ที่รัก DSL ที่สวยงามและชื่นชอบกราฟิกแบบเทอร์มินัล ไลบรารี Ray เป็นเจมโอเพ่นซอร์สที่ควรลองดู สร้างโดย Mon-Ouie Ray ให้ภาษาที่เฉพาะโดเมน (DSL) สำหรับสร้างกราฟิก ASCII และ ANSI ที่สวยงามโดยตรงในเทอร์มินัลของคุณ ไม่เหมือนกับไลบรารีกราฟิกที่หนักหน่วง Ray เน้นความเรียบง่ายและความสามารถในการสื่อสาร ทำให้คุณสามารถกำหนดภาพได้ด้วยโค้ดที่น้อยที่สุด ไลบรารีนี้รองรับการทำงานของ Ray ทั้งในมิติ 2D และ 3D ทำให้มีความหลากหลายสำหรับแอปพลิเคชันประเภทต่าง ๆ มาดูคุณสมบัติเฉพาะบางอย่างที่ไลบรารีนี้มีให้ มันรองรับการตั้งค่าเกม/หน้าต่างแบบง่าย (DSL) การสร้างและจัดการฉาก การวาดรูปทรง 2D ทั่วไปและข้อความ การสร้างรูปทรงเรขาคณิตพื้นฐาน การสร้างคณิตศาสตร์เวกเตอร์ การสนับสนุนเมทริกซ์การแปลงแบบกำหนดเอง การเรนเดอร์แบบออฟสกรีน และอื่น ๆ อีกมาก

Ray เป็น DSL ของ Ruby สำหรับวาดกราฟิกในเทอร์มินัล ซึ่งให้คุณกำหนดรูปทรง สี การไล่สี และเลย์เอาต์โดยใช้ไวยากรณ์แบบ declarative แนวคิดหลักคือการถือเทอร์มินัลเป็นผ้าใบและสร้างองค์ประกอบกราฟิกที่มีโครงสร้างซึ่งสามารถประกอบกันได้เหมือนวิดเจ็ต UI คิดว่าเป็นเหมือน HTML และ CSS สำหรับเทอร์มินัลของคุณ มันใช้ประโยชน์จากรหัส escape ANSI และอักขระ Unicode เพื่อแสดงภาพที่ซับซ้อน Ray สามารถเรนเดอร์กราฟิกโดยใช้ตัวอักษร Unicode และสัญลักษณ์การวาดกล่อง ซึ่งจำเป็นสำหรับการสร้างเลย์เอาต์ที่คมชัดและสะอาดในสภาพแวดล้อมเทอร์มินัล Ray เป็นไลบรารี Ruby เล็ก ๆ ที่น่ารื่นรมย์ซึ่งจับจิตวิญญาณของความเรียบง่ายและการแสดงออก แม้ว่ามันอาจไม่แทนที่เฟรมเวิร์ก TUI (Terminal User Interface) เต็มรูปแบบอย่าง curses หรือ tty แต่ก็โดดเด่นในการสร้างต้นแบบเลย์เอาต์อย่างรวดเร็ว การจัดรูปแบบผลลัพธ์ที่สวยงาม และให้วิธีที่สนุกและเป็น Ruby‑idiomatic ในการสร้างภาพเทอร์มินัล

Previous Next

เริ่มต้นกับ Ray

วิธีที่ง่ายที่สุดในการติดตั้งรุ่นเสถียรของ Ray คือการใช้ RubyGem โปรดใช้คำสั่งต่อไปนี้เพื่อการติดตั้งที่ราบรื่น

ติดตั้ง Ray ผ่าน RubyGem

gem 'ray', github: 'Mon-Ouie/ray' 

คุณสามารถดาวน์โหลดไลบรารีที่คอมไพล์แล้วจาก Github repository.

การแสดงผล Raycasting เบื้องต้นผ่าน Ruby Library

ไลบรารี Ray สำหรับ Ruby นำคณิตศาสตร์ 3 มิติที่ทรงพลังและความสามารถในการเรย์แคสติ้งมาสู่ผู้พัฒนา Ruby ในแพ็คเกจที่สวยงาม การเรย์แคสติ้งเป็นสิ่งสำคัญสำหรับการตรวจจับการตัดกันระหว่างรังสีและวัตถุในพื้นที่ 2 มิติหรือ 3 มิติ ไลบรารี Ray ให้วิธีที่ง่ายต่อการปล่อยรังสีและดึงข้อมูลการชน นี่คือตัวอย่างที่มีประโยชน์มากซึ่งแสดงวิธีทำการแสดงผลการเรย์แคสติ้งพื้นฐานโดยใช้ไลบรารี Ruby

วิธีทำการแสดงผล Raycasting เบื้องต้นโดยใช้ Ruby?

require 'ray'
require 'ruby2d'

# Set up 2D window
set title: "Raycasting Demo", width: 800, height: 600

# Create a ray from center pointing at mouse
ray = Ray::Ray.new(origin: [400, 300], direction: [1, 0])

# Target circle
target = Circle.new(x: 500, y: 300, radius: 30, color: 'red')

update do
  # Update ray direction toward mouse
  ray.direction = [Window.mouse_x - 400, Window.mouse_y - 300].normalize

  # Check intersection
  if ray.intersect_circle(target.position, target.radius)
    target.color = 'lime'
  else
    target.color = 'red'
  end
end

show

การคำนวณการสะท้อนและการหักเห

ไลบรารี Ray แบบโอเพ่นซอร์สได้ให้การสนับสนุนเต็มรูปแบบสำหรับการคำนวณการสะท้อนและการหักเหของรังสีภายในแอปพลิเคชัน Ruby ไลบรารีนี้รวมฟังก์ชันในการคำนวณการสะท้อนและการหักเหของรังสี ซึ่งมีประโยชน์สำหรับเอฟเฟกต์แสง, กระจก, และการจำลองเชิงแสง นี่คือตัวอย่างง่ายที่แสดงให้ผู้พัฒนาซอฟต์แวร์เห็นวิธีการคำนวณการสะท้อนของรังสีโดยใช้ไลบรารี 3D ของ Ruby

วิธีคำนวณการสะท้อนของ Ray ผ่านไลบรารี Ruby??

# Incident ray (light direction)
incident = Ray::Vector[1, -1, 0].normalize

# Surface normal
normal = [0, 1, 0]

# Calculate reflection
reflected = incident.reflect(normal)
puts "Reflected direction: #{reflected}"

การจัดแนวและการวางตำแหน่ง

ไลบรารี 3D Ray แบบโอเพนซอร์สได้ให้การสนับสนุนเต็มรูปแบบสำหรับการจัดแนวขององค์ประกอบ 2 มิติและ 3 มิติภายในแอปพลิเคชัน Ruby มันมีเมธอดง่าย ๆ สำหรับการจัดแนวและตำแหน่งขององค์ประกอบ: เมธอด align, padding, และ margin ให้ผู้พัฒนาควบคุมการจัดวางได้คล้ายกับโมเดลกล่องของ CSS ตัวอย่างง่ายต่อไปนี้แสดงวิธีการสร้างหลายบรรทัดที่จัดแนวไปยังทั้งสองด้านของแคนวาสโดยใช้คำสั่ง Ruby.

วิธีรับหลายบรรทัดที่จัดแนวทั้งสองด้านของแคนวาสผ่าน Ruby API?

Ray.draw(width: 40, height: 10) do
  text "Left aligned" do
    align :left
  end

  text "Right aligned" do
    align :right
  end
end

การวาดกล่องด้วยเส้นขอบ Unicode

ไลบรารี Ray 3D ทำให้ผู้พัฒนาซอฟต์แวร์สามารถวาดกล่องด้วยการวาดแบบ Unicode ภายในแอปพลิเคชัน Ruby ได้อย่างง่ายดาย กล่องช่วยให้ผลลัพธ์ในเทอร์มินัลของคุณมีโครงสร้างมากขึ้น Ray ใช้อักขระวาดกล่อง Unicode เพื่อสร้างขอบที่สวยงาม เมธอด box จะห่อหุ้มเนื้อหาของคุณด้วยขอบที่เรียบร้อยโดยใช้ตัวอักษรเช่น ┌ ─ ┐ และ └ ┘ ตามที่แสดงในตัวอย่างโค้ดต่อไปนี้.

วิธีห่อหุ้มเนื้อหาในกล่องเรียบร้อยพร้อมขอบโดยใช้ไลบรารี Ruby?

Ray.draw(width: 50, height: 8) do
  box do
    text "Welcome to Ray UI!" do
      align :center
    end
  end
end
 ไทย