ไลบรารี 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 ในการสร้างภาพเทอร์มินัล
เริ่มต้นกับ 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