1. Produktai
  2.   3D
  3.   Ruby
  4.   Ray
 
  

Ruby biblioteka, skirta kurti ir atvaizduoti 3D grafiką bei žaidimų kūrimui

Atviro kodo Ruby 3D biblioteka, skirta kurti ir atvaizduoti 3D grafiką ir scenas žaidimų kūrime, simuliacijose ir robotikoje, naudojant nemokamą Ruby API.

Kas yra Ray biblioteka?

Jei esate Ruby kūrėjas, mylintis elegantiškas DSL ir turintis skonį terminalo grafikai, Ray biblioteka yra atviro kodo gem, kurį verta išbandyti. Sukurta Mon‑Ouie, Ray siūlo domeno specifinę kalbą (DSL) gražios ASCII ir ANSI grafikos kūrimui tiesiai jūsų terminale. Skirtingai nuo sunkesnių grafikos bibliotekų, Ray pabrėžia paprastumą ir išraiškingumą, leidžiant apibrėžti vaizdus minimaliai kodu. Biblioteka palaiko tiek 2D, tiek 3D spindulių operacijas, todėl ji yra universalus įvairioms programoms. Panagrinėkime kai kurias konkrečias bibliotekos savybes. Ji palaiko supaprastintą žaidimų/lango nustatymą (DSL), scenų kūrimą ir valdymą, įprastų 2D formų ir teksto piešimą, pagrindinių geometrinių formų kūrimą, vektorinės matematikos kūrimą, pasirinktinių transformacijos matricų palaikymą, išorinį (off‑Screen) atvaizdavimą ir t.t.

Ray yra Ruby DSL terminalo grafikų piešimui, leidžiantis apibrėžti formas, spalvas, gradientus ir išdėstymus naudojant deklaratyvią sintaksę. Pagrindinė idėja – traktuoti terminalą kaip drobę ir kurti struktūruotus grafinus elementus, kuriuos galima komponuoti kaip UI valdiklius. Pagalvokite apie tai kaip apie HTML ir CSS savo terminalui. Jis išnaudoja ANSI escape kodus ir Unicode simbolius sudėtingų vaizdų atvaizdavimui. Ray gali atvaizduoti grafiką naudojant Unicode simbolius ir linijų braižymo ženklus, kurie yra būtini kuriant aštrų ir švarų išdėstymą terminalo aplinkoje. Ray yra miela maža Ruby biblioteka, kuri įkūnija minimalizmo ir išraiškingumo dvasią. Nors ji gali nepakeisti pilnaverčių TUI (Terminal User Interface) sistemų, tokių kaip curses ar tty, ji puikiai tinka greitam išdėstymo prototipų kūrimui, gražiam išvesties formatavimui ir suteikia smagią, Ruby‑idiomatinę priemonę terminalo vizualizacijoms kurti.

Previous Next

Pradžia su Ray

Paprastausia būdas įdiegti Ray stabilųjį leidimą – naudoti RubyGem. Prašome naudoti šią komandą sklandžiam įdiegimui.

Įdiekite Ray per RubyGem

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

Galite atsisiųsti sukompiliuotą bendrinamą biblioteką iš Github saugyklos.

Pagrindinis Raycasting vizualizavimas per Ruby biblioteką

Ray Ruby biblioteka suteikia galingą 3D matematiką ir spindulių metimo galimybes Ruby kūrėjams elegantiškai paketu. Spindulių metimas yra būtinas norint aptikti spindulių ir objektų sankirtas 2D arba 3D erdvėje. Ray biblioteka suteikia paprastą būdą mesti spindulius ir gauti susidūrimo duomenis. Štai labai naudingas pavyzdys, kuris demonstruoja, kaip atlikti pagrindinę spindulių metimo vizualizaciją naudojant Ruby biblioteką.

Kaip atlikti pagrindinį spindulių atvaizdavimą naudojant 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

Atspindžio ir lūžio skaičiavimai

Atviro kodo Ray biblioteka suteikia visapusišką palaikymą atspindžių ir lūžimo skaičiavimams Ruby programose. Biblioteka apima funkcijas, leidžiančias apskaičiuoti spindulių atspindžius ir lūžius, kurie yra naudingi apšvietimo efektams, veidrodžiams ir optiniams simuliacijoms. Štai paprastas pavyzdys, kuris demonstruoja, kaip programinės įrangos kūrėjai gali skaičiuoti spindulių atspindį naudojant Ruby 3D biblioteką.

Kaip apskaičiuoti spindulio atspindį per Ruby biblioteką??

# 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}"

Lygiavimas ir pozicionavimas

Atviro kodo 3D Ray biblioteka suteikė visišką 2D ir 3D elementų lygiavimo palaikymą Ruby programose. Ji siūlo paprastus metodus elementų lygiavimui ir pozicionavimui: align, padding ir margin metodai suteikia kūrėjams kontrolę dėl išdėstymo, panašiai kaip CSS dėžutės modeliai. Žemiau pateiktas paprastas pavyzdys rodo, kaip gauti kelias eilutes, lygiuotas abiejų drobės kraštų, naudojant Ruby komandas.

Kaip gauti kelias eilutes, lygiuotas iki abiejų drobės galų naudojant Ruby API?

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

  text "Right aligned" do
    align :right
  end
end

Dėžutės braižymas su Unicode rėmeliais

Ray 3D biblioteka leidžia programų kūrėjams lengvai braižyti dėžutes su Unicode piešiniu Ruby programose. Dėžutės padaro jūsų terminalo išvestį struktūruotesnę. Ray naudoja Unicode dėžutės piešimo simbolius, kad sukurtų elegantiškas rėmelius. box metodas supakuoja jūsų turinį tvarkingame rėmelyje, naudojant simbolius kaip ┌ ─ ┐ ir └ ┘, kaip parodyta toliau pateiktame kodo pavyzdyje.

Kaip supakuoti turinį tvarkingame rėmeliui su riba naudojant Ruby biblioteką?

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