Ruby-bibliotek for å lage og rendre 3D-grafikk & spillutvikling
Åpen kildekode Ruby 3D-bibliotek for å lage og rendre 3D-grafikk og scener i spillutvikling, simuleringer og robotikk via gratis Ruby API.
Hva er Ray-biblioteket ?
Hvis du er en Ruby-utvikler med en forkjærlighet for elegante DSL-er og en smak for terminalbasert grafikk, er Ray-biblioteket en åpen kildekode-gem som er verdt å sjekke ut. Opprettet av Mon-Ouie, tilbyr Ray et domenespesifikt språk (DSL) for å bygge vakker ASCII- og ANSI-grafikk rett i terminalen din. I motsetning til tyngre grafikkbiblioteker, legger Ray vekt på enkelhet og uttrykksfullhet, slik at du kan definere visuelle elementer med minimal kode. Biblioteket støtter både 2D- og 3D-stråleoperasjoner, noe som gjør det allsidig for ulike typer applikasjoner. La oss dykke ned i noen av de spesifikke funksjonene som biblioteket tilbyr. Det støtter forenklet spill/vindu-oppsett (DSL), opprettelse og håndtering av scener, tegning av vanlige 2D-former og tekst, opprettelse av grunnleggende geometriske former, vektor-matematikk, støtte for egendefinerte transformasjonsmatriser, støtte for off-screen rendering og så videre.
Ray er et Ruby-DSL for å tegne terminalgrafikk, som lar deg definere former, farger, gradienter og oppsett ved hjelp av en deklarativ syntaks. Hovedideen er å behandle terminalen som et lerret og bygge strukturerte grafiske elementer som kan settes sammen som UI‑widgets. Tenk på det som HTML og CSS for terminalen din. Det utnytter ANSI‑escape‑koder og Unicode‑tegn for å gjengi komplekse visuelle elementer. Ray kan gjengi grafikk ved hjelp av Unicode‑tegn og bokstegning‑symboler, som er essensielle for å lage skarpe og rene oppsett i terminalmiljøer. Ray er et herlig lite Ruby‑bibliotek som fanger ånden av minimalisme og uttrykksfullhet. Selv om det kanskje ikke erstatter fullverdige TUI‑rammeverk (Terminal User Interface) som curses eller tty, utmerker det seg i rask prototyping av oppsett, vakker utdataformatering, og gir en morsom, Ruby‑idiomatisk måte å bygge terminalvisualiseringer på.
Kom i gang med Ray
Den enkleste måten å installere den stabile versjonen av Ray på er ved å bruke RubyGem. Vennligst bruk følgende kommando for en smidig installasjon.
Installer Ray via RubyGem
gem 'ray', github: 'Mon-Ouie/ray' Du kan laste ned det kompilerte delte biblioteket fra Github-repoet.
Grunnleggende Raycasting-visualisering via Ruby-biblioteket
Ray Ruby-biblioteket gir kraftig 3D-matematikk og raycasting-funksjonalitet til Ruby-utviklere i en elegant pakke. Raycasting er essensielt for å oppdage skjæringspunkter mellom stråler og objekter i et 2D- eller 3D-rom. Ray-biblioteket gir en enkel måte å kaste stråler på og hente kollisjonsdata. Her er et svært nyttig eksempel som demonstrerer hvordan man utfører grunnleggende raycasting-visualisering ved hjelp av Ruby-biblioteket.
Hvordan utføre grunnleggende raycasting-visualisering med 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
Beregningsmetoder for refleksjon og refraksjon
Det åpne kildekodebiblioteket Ray har gitt full støtte for beregning av refleksjon og refraksjon i Ruby-applikasjoner. Biblioteket inneholder funksjoner for å beregne strålerefleksjoner og -refraksjoner, som er nyttige for lyssettingseffekter, speil og optiske simuleringer. Her er et enkelt eksempel som viser hvordan programvareutviklere kan beregne stråle‑refleksjon ved bruk av Ruby 3D‑biblioteket.
Hvordan beregne stråle-refleksjon via Ruby-biblioteket??
# 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}"
Justering og posisjonering
Det åpne kildekode 3D Ray-biblioteket har gitt full støtte for 2D- og 3D-elementjusteringer i Ruby-applikasjoner. Det tilbyr enkle metoder for å justere og posisjonere elementer: align-, padding- og margin-metoder gir utviklere kontroll over layout, lik CSS-boksmodeller. Det følgende enkle eksemplet viser hvordan du får flere linjer, justert til begge ender av lerretet ved hjelp av Ruby-kommandoer.
Hvordan få flere linjer, justert til begge ender av lerretet via Ruby API?
Ray.draw(width: 40, height: 10) do
text "Left aligned" do
align :left
end
text "Right aligned" do
align :right
end
end
Tegning av bokser med Unicode-kanter
Ray 3D-biblioteket gjør det enkelt for programvareutviklere å tegne bokser med Unicode-tegning i Ruby-applikasjoner. Bokser gjør terminalutdataene dine mer strukturerte. Ray bruker Unicode-bokstegningskarakterer for å lage elegante rammer. box-metoden omslutter innholdet ditt i en pen ramme ved hjelp av tegn som ┌ ─ ┐ og └ ┘ som vist i følgende kodeeksempel.
Hvordan pakke inn innhold i en pen boks med kant ved hjelp av Ruby-biblioteket?
Ray.draw(width: 50, height: 8) do
box do
text "Welcome to Ray UI!" do
align :center
end
end
end