1. Товары
  2.   3D
  3.   Ruby
  4.   Ray
 
  

Ruby-библиотека для создания и рендеринга 3D графики и разработки игр

Открытая Ruby 3D библиотека для создания и рендеринга 3D графики и сцен в разработке игр, симуляциях и робототехнике с помощью бесплатного Ruby API.

Что такое Ray Library?

Если вы разработчик Ruby, любящий элегантные DSL и интересующийся графикой в терминале, библиотека Ray — это открытый гем, который стоит изучить. Созданная Mon-Ouie, Ray предлагает предметно-ориентированный язык (DSL) для создания красивой ASCII и ANSI графики прямо в вашем терминале. В отличие от более тяжёлых графических библиотек, Ray делает упор на простоту и выразительность, позволяя определять визуальные элементы с минимальным количеством кода. Библиотека поддерживает как 2D, так и 3D операции с лучами, что делает её универсальной для различных типов приложений. Давайте рассмотрим некоторые конкретные возможности, предлагаемые библиотекой. Она поддерживает упрощённую настройку игры/окна (DSL), создание и управление сценами, рисование обычных 2D фигур и текста, создание базовых геометрических фигур, построение векторной математики, поддержку пользовательских матриц преобразования, рендеринг вне экрана и многое другое.

Ray — это DSL на Ruby для рисования графики в терминале, позволяющая определять формы, цвета, градиенты и макеты с помощью декларативного синтаксиса. Основная идея состоит в том, чтобы рассматривать терминал как холст и создавать структурированные графические элементы, которые можно комбинировать как UI‑виджеты. Представьте себе HTML и CSS для вашего терминала. Ray использует ANSI‑коды и символы Unicode для отображения сложных визуальных элементов. Ray может рендерить графику с помощью символов Unicode и символов рисования рамок, что необходимо для создания чётких и чистых макетов в терминальных средах. Ray — это приятная небольшая библиотека Ruby, воплощающая дух минимализма и выразительности. Хотя она не заменит полноценные фреймворки TUI (Terminal User Interface), такие как curses или tty, Ray отлично подходит для быстрого прототипирования макетов, красивого форматирования вывода и предоставления весёлого, идиоматичного Ruby‑подхода к построению терминальной визуализации.

Previous Next

Начало работы с Ray

Самый простой способ установить стабильную версию Ray — использовать RubyGem. Пожалуйста, используйте следующую команду для беспроблемной установки.

Установите Ray через RubyGem

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

Вы можете скачать скомпилированную общую библиотеку из репозитория Github.

Базовая визуализация лучевого трассирования через Ruby Library

Библиотека Ray для Ruby предоставляет мощные возможности 3D‑математики и лучевого трассирования разработчикам Ruby в элегантном пакете. Лучевое трассирование необходимо для обнаружения пересечений лучей и объектов в 2D‑ или 3D‑пространстве. Библиотека Ray предлагает простой способ бросать лучи и получать данные о столкновениях. Ниже приведён очень полезный пример, демонстрирующий, как выполнить базовую визуализацию лучевого трассирования с использованием Ruby‑библиотеки.

Как выполнить базовую визуализацию лучевого трассирования с использованием 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

Вычисления отражения и преломления

Открытая библиотека Ray предоставляет полную поддержку расчётов отражения и преломления лучей в приложениях Ruby. Библиотека включает функции вычисления отражения и преломления лучей, которые полезны для световых эффектов, зеркал и оптических симуляций. Ниже приведён простой пример, показывающий, как разработчики могут рассчитывать отражение лучей с использованием 3D‑библиотеки Ruby.

Как вычислить отражение луча с помощью 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}"

Выравнивание и позиционирование

Открытая библиотека 3D Ray предоставляет полную поддержку выравнивания 2D и 3D элементов внутри Ruby‑приложений. Она предлагает простые методы для выравнивания и позиционирования элементов: методы align, padding и margin дают разработчикам контроль над макетом, аналогично CSS‑моделям коробок. Ниже приведён простой пример, показывающий, как получить несколько строк, выровненных по обоим краям холста с помощью команд Ruby.

Как получить несколько строк, выровненных по обеим сторонам холста с помощью Ruby API?

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

  text "Right aligned" do
    align :right
  end
end

Рисование коробок с границами Unicode

Библиотека Ray 3D упрощает разработчикам программ рисовать коробки с использованием Unicode‑рисования внутри Ruby‑приложений. Коробки делают вывод в терминале более структурированным. Ray использует символы Unicode для рисования рамок, создавая элегантные границы. Метод box оборачивает ваш контент в аккуратную рамку, используя символы вроде ┌ ─ ┐ и └ ┘, как показано в следующем примере кода.

Как обернуть содержимое в аккуратный блок с рамкой, используя Ruby-библиотеку?

Ray.draw(width: 50, height: 8) do
  box do
    text "Welcome to Ray UI!" do
      align :center
    end
  end
end
 Русский