1. Des produits
  2.   3D
  3.   Ruby
  4.   Ray
 
  

Bibliothèque Ruby pour créer et rendre des graphiques 3D & le développement de jeux

Bibliothèque Ruby 3D open source pour créer et rendre des graphiques et scènes 3D dans le développement de jeux, les simulations et la robotique via une API Ruby gratuite.

Qu'est-ce que la bibliothèque Ray ?

Si vous êtes développeur Ruby passionné par les DSL élégants et amateur de graphiques en mode terminal, la bibliothèque Ray est une gem open source qui vaut le détour. Créée par Mon-Ouie, Ray propose un langage spécifique au domaine (DSL) pour créer de magnifiques graphiques ASCII et ANSI directement dans votre terminal. Contrairement aux bibliothèques graphiques plus lourdes, Ray met l'accent sur la simplicité et l'expressivité, vous permettant de définir des visuels avec un code minimal. La bibliothèque prend en charge les opérations de rayons en 2D et 3D, ce qui la rend polyvalente pour différents types d'applications. Explorons quelques-unes des fonctionnalités spécifiques offertes par la bibliothèque. Elle prend en charge la configuration simplifiée du jeu/fenêtre (DSL), la création et la gestion de scènes, le dessin de formes 2D courantes et de texte, la création de formes géométriques de base, la création de mathématiques vectorielles, la prise en charge de matrices de transformation personnalisées, le rendu hors écran et bien plus encore.

Ray est un DSL Ruby pour dessiner des graphiques en terminal, vous permettant de définir des formes, des couleurs, des dégradés et des mises en page à l'aide d'une syntaxe déclarative. L'idée principale est de traiter le terminal comme une toile et de construire des éléments graphiques structurés qui peuvent être composés comme des widgets UI. Pensez-y comme du HTML et du CSS pour votre terminal. Il exploite les codes d'échappement ANSI et les caractères Unicode pour rendre des visuels complexes. Ray peut rendre des graphiques en utilisant des caractères Unicode et des symboles de tracé de boîtes, qui sont essentiels pour créer des mises en page nettes et précises dans les environnements de terminal. Ray est une petite bibliothèque Ruby agréable qui capture l'esprit du minimalisme et de l'expressivité. Bien qu'il ne remplace pas les frameworks TUI (Terminal User Interface) complets comme curses ou tty, il excelle dans le prototypage rapide de mises en page, le formatage élégant de la sortie, et offre une façon amusante et idiomatique Ruby de créer des visuels en terminal.

Previous Next

Premiers pas avec Ray

Le moyen le plus simple d'installer la version stable de Ray est d'utiliser RubyGem. Veuillez utiliser la commande suivante pour une installation fluide.

Installer Ray via RubyGem

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

Vous pouvez télécharger la bibliothèque partagée compilée depuis le dépôt Github.

Visualisation de base du raycasting via la bibliothèque Ruby

La bibliothèque Ray Ruby offre de puissantes capacités de mathématiques 3D et de raycasting aux développeurs Ruby dans un package élégant. Le raycasting est essentiel pour détecter les intersections entre les rayons et les objets dans un espace 2D ou 3D. La bibliothèque Ray fournit un moyen simple de lancer des rayons et de récupérer les données de collision. Voici un exemple très utile qui montre comment réaliser une visualisation de raycasting de base en utilisant la bibliothèque Ruby.

Comment réaliser une visualisation de raycasting basique avec 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

Calculs de réflexion et de réfraction

La bibliothèque open source Ray offre un support complet pour les calculs de réflexion et de réfraction dans les applications Ruby. La bibliothèque comprend des fonctions permettant de calculer les réflexions et les réfractions des rayons, utiles pour les effets d'éclairage, les miroirs et les simulations optiques. Voici un exemple simple qui montre aux développeurs comment calculer la réflexion d'un rayon en utilisant la bibliothèque Ruby 3D.

Comment calculer la réflexion d'un rayon via la bibliothèque 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}"

Alignement et positionnement

La bibliothèque open source 3D Ray a fourni un support complet pour l'alignement des éléments 2D et 3D au sein des applications Ruby. Elle propose des méthodes simples pour aligner et positionner les éléments : les méthodes align, padding et margin offrent aux développeurs un contrôle sur la mise en page, similaire aux modèles de boîtes CSS. L'exemple simple suivant montre comment obtenir plusieurs lignes, alignées aux deux extrémités du canevas en utilisant des commandes Ruby.

Comment obtenir plusieurs lignes, alignées aux deux extrémités du canevas via l'API Ruby ?

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

  text "Right aligned" do
    align :right
  end
end

Dessiner des boîtes avec des bordures Unicode

La bibliothèque Ray 3D facilite le dessin de boîtes avec des caractères Unicode dans les applications Ruby. Les boîtes rendent la sortie de votre terminal plus structurée. Ray utilise des caractères de dessin de boîte Unicode pour créer des bordures élégantes. La méthode box enveloppe votre contenu dans une bordure soignée en utilisant des caractères tels que ┌ ─ ┐ et └ ┘ comme le montre l'exemple de code suivant.

Comment envelopper le contenu dans une boîte soignée avec bordure en utilisant la bibliothèque Ruby ?

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