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

Ruby-kirjasto 3D-grafiikan luomiseen ja renderöintiin sekä pelikehitykseen

Avoimen lähdekoodin Ruby 3D -kirjasto 3D-grafiikan ja -kohtauksien luomiseen ja renderöintiin pelikehityksessä, simulaatioissa ja robotiikassa, ilmaisella Ruby-API:lla.

Mikä on Ray-kirjasto?

Jos olet Ruby-kehittäjä, joka rakastaa elegantteja DSL:itä ja pitää terminaalipohjaisesta grafiikasta, Ray-kirjasto on avoimen lähdekoodin gem, joka kannattaa tutustua. Mon-Ouien luoma Ray tarjoaa toimialakohtaisen kielen (DSL) kauniiden ASCII- ja ANSI-grafiikoiden rakentamiseen suoraan terminaalissasi. Toisin kuin raskaammat grafiikkakirjastot, Ray korostaa yksinkertaisuutta ja ilmaisukykyä, jolloin voit määritellä visuaaleja minimaalisella koodilla. Kirjasto tukee sekä 2D- että 3D-sädeoperaatioita, mikä tekee siitä monipuolisen erilaisiin sovelluksiin. Sukelletaanpa kirjaston tarjoamiin erityisominaisuuksiin. Se tukee yksinkertaistettua peli-/ikkunankokoonpanoa (DSL), kohtauksien luomista ja hallintaa, yleisten 2D-muotojen ja tekstin piirtämistä, perusgeometrisia muotoja, vektorilaskennan luomista, mukautettujen muunnosmatriisien tukea, näytön ulkopuolista renderöintiä ja niin edelleen.

Ray on Ruby DSL terminaalin grafiikan piirtämiseen, jonka avulla voit määritellä muotoja, värejä, liukuvärejä ja asetteluja deklaratiivisella syntaksilla. Keskeinen ajatus on käsitellä terminaalia kanvaana ja rakentaa rakenteellisia graafisia elementtejä, joita voidaan yhdistellä kuin UI‑komponentteja. Ajattele sitä kuin HTML:ää ja CSS:ää terminaalissasi. Se hyödyntää ANSI‑pakotuskoodia ja Unicode-merkkejä monimutkaisten visuaalien renderöintiin. Ray voi renderöidä grafiikkaa Unicode-merkkejä ja laatikkopiirto‑symboleja käyttäen, jotka ovat olennaisia terävien ja siistien asettelujen luomisessa terminaaliympäristöissä. Ray on hurmaava pieni Ruby‑kirjasto, joka vangitsee minimalismin ja ilmaisun hengen. Vaikka se ei ehkä korvaa täysimittaisia TUI‑ (Terminal User Interface) -kehyksiä kuten curses tai tty, se loistaa nopeassa asetteluprototyyppien tekemisessä, kauniissa tulosteen muotoilussa ja tarjoaa hauskan, Ruby‑idiomaattisen tavan rakentaa terminaalin visuaaleja.

Previous Next

Rayn aloitus

Helpoin tapa asentaa Rayn vakaa julkaisu on käyttää RubyGem:iä. Käytäthän seuraavaa komentoa sujuvaa asennusta varten.

Asenna Ray RubyGemin avulla

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

Voit ladata käännetyn jaetun kirjaston Github-varastosta.

Perus Raycasting -visualisointi Ruby-kirjaston avulla

Ray Ruby -kirjasto tuo tehokkaat 3D-matematiikka- ja säteenseurantaominaisuudet Ruby-kehittäjille tyylikkäässä paketissa. Säteenseuranta on olennaista säteiden ja objektien leikkauspisteiden havaitsemiseksi 2D- tai 3D-tilassa. Ray-kirjasto tarjoaa yksinkertaisen tavan heittää säteitä ja hakea törmäystiedot. Tässä on erittäin hyödyllinen esimerkki, joka näyttää, miten suorittaa perus-säteenseurannan visualisointi Ruby-kirjastoa käyttäen.

Kuinka suorittaa perus Raycasting -visualisointi Rubylla?

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

Heijastus- ja taittumislaskelmat

Avoimen lähdekoodin Ray-kirjasto on tarjonnut täyden tuen heijastus- ja taittumislaskelmille Ruby-sovelluksissa. Kirjasto sisältää funktioita säteiden heijastusten ja taittumien laskemiseen, jotka ovat hyödyllisiä valaistusefekteissä, peileissä ja optisissa simulaatioissa. Tässä on yksinkertainen esimerkki, joka osoittaa, miten ohjelmistokehittäjät voivat laskea säteen heijastuksen Ruby 3D -kirjastoa käyttäen.

Kuinka laskea säteen heijastus Ruby-kirjaston avulla??

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

Tasaus ja sijoittelu

Avoimen lähdekoodin 3D Ray -kirjasto on tarjonnut täyden tuen 2D- ja 3D-elementtien kohdistuksille Ruby-sovelluksissa. Se tarjoaa yksinkertaisia menetelmiä elementtien tasaamiseen ja sijoittamiseen: align-, padding- ja margin-menetelmät antavat kehittäjille hallinnan asetteluun, samankaltaisesti kuin CSS:n laatikkomallit. Seuraava yksinkertainen esimerkki näyttää, miten saada useita rivejä, jotka on kohdistettu molempiin kanvaasin reunoihin Ruby-komentoja käyttäen.

Kuinka saada useita rivejä, jotka on kohdistettu kanvaasin molempiin reunoihin Ruby API:n avulla?

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

  text "Right aligned" do
    align :right
  end
end

Laatikon piirtäminen Unicode-reunoilla

Ray 3D -kirjasto tekee ohjelmistokehittäjille helppoa piirtää laatikoita Unicode-piirroksilla Ruby-sovelluksissa. Laatikot tekevät terminaalin tulosteesta rakenteellisemman. Ray käyttää Unicode-laatikonpiirto-merkkejä luodakseen tyylikkäitä reunoja. box-menetelmä käärii sisältösi siistiin reunaan käyttäen merkkejä kuten ┌ ─ ┐ ja └ ┘ kuten seuraavassa koodiesimerkissä on esitetty.

Kuinka kääriä sisältö siistiin laatikkoon reunuksella Ruby-kirjaston avulla?

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