Ruby bibliotēka, lai izveidotu un renderētu 3D grafiku un spēļu izstrādi
Atvērtā koda Ruby 3D bibliotēka 3D grafikas un ainu veidošanai un renderēšanai spēļu izstrādē, simulācijās un robotikā, izmantojot bezmaksas Ruby API.
Kas ir Ray bibliotēka?
Ja esat Ruby izstrādātājs, kuram patīk eleganti DSL un ir interese par termināļa grafiku, Ray bibliotēka ir atvērtā koda gems, kas noteikti ir vērts apskatīt. To ir izveidojis Mon-Ouie, Ray piedāvā domēna specifisku valodu (DSL) skaistu ASCII un ANSI grafiku veidošanai tieši jūsu terminālī. Atšķirībā no smagākām grafikas bibliotēkām, Ray uzsver vienkāršību un izteiksmīgumu, ļaujot definēt vizuālus elementus ar minimālu kodu. Bibliotēka atbalsta gan 2D, gan 3D staru operācijas, padarot to daudzpusīgu dažādām lietojumprogrammām. Iepazīsimies ar dažām konkrētām bibliotēkas piedāvātajām funkcijām. Tā atbalsta vienkāršotu spēļu/logu iestatīšanu (DSL), skatu izveidi un pārvaldību, biežāk izmantoto 2D formu un teksta zīmēšanu, pamata ģeometrisko formu izveidi, vektoru matemātikas radīšanu, pielāgotu transformācijas matricu atbalstu, ārpus ekrāna renderēšanas atbalstu un tā tālāk.
Ray ir Ruby DSL termināla grafikas zīmēšanai, kas ļauj definēt formas, krāsas, gradientus un izkārtojumus, izmantojot deklaratīvu sintaksi. Galvenā ideja ir iztvert termināli kā audeklu un veidot strukturētus grafiskos elementus, kurus var salikt kā UI logrīkus. Domājiet par to kā par HTML un CSS jūsu terminālim. Tas izmanto ANSI izbēgšanas kodus un Unicode rakstzīmes, lai attēlotu sarežģītus vizuālus elementus. Ray var attēlot grafiku, izmantojot Unicode rakstzīmes un kastes zīmēšanas simbolus, kas ir būtiski asu un tīru izkārtojumu izveidei termināla vidēs. Ray ir patīkama maza Ruby bibliotēka, kas iemūžina minimalisma un izteiksmīguma garu. Lai gan tas var neatstāt vietu pilnvērtīgām TUI (Terminal User Interface) ietvariem, piemēram, curses vai tty, tas izcili pārspēj ātru izkārtojuma prototipēšanu, skaistu izvades formatēšanu un sniedz jautru, Ruby‑idiomātisku veidu, kā veidot termināla vizuālus elementus.
Sākšana ar Ray
Visvieglākais veids, kā instalēt Ray stabilo versiju, ir izmantot RubyGem. Lūdzu, izmantojiet šo komandu, lai veiktu vienkāršu instalāciju.
Instalējiet Ray, izmantojot RubyGem
gem 'ray', github: 'Mon-Ouie/ray' Jūs varat lejupielādēt kompilēto koplietojamo bibliotēku no Github repozitorija.
Pamata Raycasting vizualizācija, izmantojot Ruby bibliotēku
Ray Ruby bibliotēka sniedz spēcīgu 3D matemātiku un staru izmešanas iespējas Ruby izstrādātājiem eleganta pakotnē. Staru izmešana ir būtiska, lai noteiktu krustpunktus starp stariem un objektiem 2D vai 3D telpā. Ray bibliotēka nodrošina vienkāršu veidu, kā izstarot stari un iegūt sadursmes datus. Šeit ir ļoti noderīgs piemērs, kas parāda, kā veikt pamata staru izmešanas vizualizāciju, izmantojot Ruby bibliotēku.
Kā veikt pamata staru izkliedes vizualizāciju, izmantojot 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
Atspoguļošanas un laušanas aprēķini
Atvērtā koda Ray bibliotēka nodrošina pilnīgu atbalstu atspoguļošanas un laušanas aprēķiniem Ruby lietojumprogrammās. Bibliotēka ietver funkcijas, lai aprēķinātu staru atspoguļojumus un laušanas, kas ir noderīgi apgaismojuma efektiem, spoguļiem un optiskām simulācijām. Šeit ir vienkāršs piemērs, kas demonstrē, kā programmatūras izstrādātāji var aprēķināt staru atspoguļojumu, izmantojot Ruby 3D bibliotēku.
Kā aprēķināt staru atspoguļošanu, izmantojot Ruby bibliotēku??
# 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}"
Līdzināšana un pozicionēšana
Atvērtā koda 3D Ray bibliotēka nodrošina pilnīgu atbalstu 2D un 3D elementu izlīdzināšanai Ruby lietojumprogrammās. Tā piedāvā vienkāršas metodes elementu izlīdzināšanai un pozicionēšanai: align, padding un margin metodes dod izstrādātājiem kontroli pār izkārtojumu, līdzīgi kā CSS kastes modeļi. Zemāk esošais vienkāršais piemērs parāda, kā, izmantojot Ruby komandas, iegūt vairākas rindas, kas izlīdzinātas abos audekla galos.
Kā iegūt vairākas līnijas, kas ir izlīdzinātas abos audekla galos, izmantojot Ruby API?
Ray.draw(width: 40, height: 10) do
text "Left aligned" do
align :left
end
text "Right aligned" do
align :right
end
end
Kastes zīmēšana ar Unicode robežām
Ray 3D bibliotēka ļauj programmatūras izstrādātājiem viegli zīmēt kastes ar Unicode zīmējumu Ruby lietojumprogrammās. Kastes padara jūsu termināla izvadi strukturētāku. Ray izmanto Unicode kastes zīmēšanas rakstzīmes, lai izveidotu elegantas robežas. box metode aptver jūsu saturu kārtīgā robežā, izmantojot tādas rakstzīmes kā ┌ ─ ┐ un └ ┘, kā parādīts zemāk esošajā koda piemērā.
Kā ietvert saturu kārtīgā kastē ar apmali, izmantojot Ruby bibliotēku?
Ray.draw(width: 50, height: 8) do
box do
text "Welcome to Ray UI!" do
align :center
end
end
end