1. 产品
  2.   3D
  3.   Ruby
  4.   Ray
 
  

Ruby 库,用于创建和渲染 3D 图形及游戏开发

开源 Ruby 3D 库,用于在游戏开发、仿真和机器人领域通过免费 Ruby API 创建和渲染 3D 图形与场景。

Ray 库是什么?

如果你是一名热爱优雅 DSL 并且喜欢基于终端图形的 Ruby 开发者,Ray 库是一个值得关注的开源 gem。该库由 Mon-Ouie 创建,Ray 提供了一种领域特定语言(DSL),可以在终端中直接构建精美的 ASCII 和 ANSI 图形。与更庞大的图形库不同,Ray 强调简洁和表现力,让你用最少的代码定义视觉效果。该库支持 2D 和 3D 光线操作,适用于各种类型的应用。让我们深入了解库提供的一些具体特性。它支持简化的游戏/窗口设置(DSL)、创建和管理场景、绘制常见的 2D 形状和文本、创建基本几何形状、向量数学运算、支持自定义变换矩阵、离屏渲染等。

Ray 是一个用于绘制终端图形的 Ruby DSL,允许您使用声明式语法定义形状、颜色、渐变和布局。核心思想是将终端视为画布,构建可像 UI 小部件一样组合的结构化图形元素。可以把它想象成终端的 HTML 和 CSS。它利用 ANSI 转义码和 Unicode 字符渲染复杂的视觉效果。Ray 可以使用 Unicode 字符和盒绘制符号来渲染图形,这对于在终端环境中创建清晰锐利的布局至关重要。Ray 是一个令人愉快的 Ruby 小库,捕捉了极简主义和表现力的精神。虽然它可能无法取代像 curses 或 tty 这样的完整 TUI(终端用户界面)框架,但它在快速布局原型、漂亮的输出格式化以及提供一种有趣的、符合 Ruby 习惯的终端可视化构建方式方面表现出色。

Previous Next

Ray 入门

安装 Ray 稳定版的最简方式是使用 RubyGem。请使用以下命令进行顺利安装。

通过 RubyGem 安装 Ray

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

您可以从 Github 仓库下载已编译的共享库。

通过 Ruby 库进行基础光线投射可视化

Ray Ruby 库以优雅的方式为 Ruby 开发者提供强大的 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 应用程序提供了对反射和折射计算的完整支持。该库包含用于计算光线反射和折射的函数,可用于灯光效果、镜面以及光学模拟。以下是一个简单示例,向软件开发者展示如何使用 Ruby 3D 库计算光线反射。

如何通过 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 库为 Ruby 应用程序提供了对 2D 和 3D 元素对齐的完整支持。它提供了简单的方法来对齐和定位元素: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 库让软件开发者能够在 Ruby 应用程序中使用 Unicode 绘制盒子。盒子使终端输出更有结构。Ray 使用 Unicode 框线字符创建优雅的边框。box 方法使用如 ┌ ─ ┐ 和 └ ┘ 等字符将内容包装在整齐的边框中,如以下代码示例所示。

如何使用 Ruby 库将内容包装在带边框的整齐盒子中?

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