使用开源工具玩转虚拟乐高

开源虚拟乐高允许您构建任何您可以想象的东西。
111 位读者喜欢这篇文章。
Open Lego CAD
图片版权:CC BY-SA 4.0 Klaatu Einzelgänger

我的童年大约 20% 是《龙与地下城》(D&D),80% 是乐高,两者之间有很强的交叉。 由于种种原因,我实际上不允许玩 D&D,但通过一些堪比 15 级盗贼的精神杂技,我确定构建 AD&D 角色不算玩,而用乐高重现龙枪是相当不错的游戏近似值。

因此,我最喜欢的乐高类型之一是城堡,我花了无数时间为我的迷你人偶设计类似挑战的地下城。 为了记录我的作品,并且因为我看到朋友们在学校绘制地下城地图,我用方格纸绘制了我的乐高作品。 我还试图追踪我的作品是如何构建的,使用方格纸对于主要基于矩形砖块的媒介来说似乎是一个合理的选择,但对等距插图的缺乏理解最终让我困惑。

现在我长大了,我对乐高的热爱并没有减少,虽然我对自己的任何作品(或互联网乐高积木建造者的术语“MOC”)并不自豪,但我最近觉得自己有义务学习如何记录我所建造的东西。 因为我的手绘插画技巧一直不太好,所以我决定用技术来解决这个问题。

简易乐高

开始使用虚拟乐高积木最简单和最快的方法是下载一个包含积木和构建应用程序的一体化软件包。

无论您使用的是 Linux、Windows 还是 macOS,您都可以使用 LeoCAD 获得所需的一切。 使用 LeoCAD,您可以构建有趣的模型,拍摄您的作品的快照,甚至可以将您的作品分解为多个步骤以创建您自己的说明手册。

leoCAD

(Seth Kenlon,CC BY-SA

它易于使用:选择一种颜色,然后将一块砖块拖到构建空间中。 砖块相互“吸附”以帮助您找到正确的位置,并且每块砖块在您单击它时都有手柄,因此您可以移动它们。 完成后,您可以渲染模型的图像。

没有比这更容易的了。 下载一款出色的 开源 应用程序,享受无尽的(几天?几年?)乐趣。

但是,如果您对它的工作原理、积木的定义方式以及模型的渲染方式感兴趣,请继续阅读!

乐高 CAD

我在虚拟 3D 空间工作了几年(甚至在实际 3D 空间工作的时间更长,无论这是否值得)。 我对 3D 应用程序很熟悉,但我使用过的所有应用程序都专门用于运动图形和电影制作。 它们就像电影本身一样,通常只是为了展示。 如何构建某些东西并不像它看起来是否好看那么重要。 如果您必须“作弊”物理上可能发生的事情,以确保某些东西看起来很酷,那没关系,因为您正在构建的东西只存在于虚拟空间中。

计算机辅助设计 (CAD) 则不同。 CAD 软件取代了旧式绘图,在这种绘图中,创建规范是为了演示如何在现实世界中一次或 100 次构建某些东西。 人们期望精确和逼真。

因为乐高迷有很多,所以有一个多产的建造者社区使用 CAD 创建乐高模型。 优点是显而易见的——您可以记录您需要的零件以及构建模型必须采取的步骤。 这不能替代真正的乐高积木,除非您比乐高更喜欢 CAD,但它是您爱好的一个很好的补充。

要构建虚拟乐高模型,您需要两个组件

  • 虚拟乐高积木
  • CAD 应用程序

有几种方法可以满足每个要求,但我发现我更喜欢开源、模块化的方法。

虚拟乐高积木

您可以从开源 LDraw 项目获得几乎所有曾经创建过的乐高积木。 LDraw 是一个 乐高 CAD 开源标准,其中包括一致的测量和相对尺寸,以及用于积木方向的简单语言。 作为 LDraw 定义积木工作的一部分,社区还提供了每个积木的 3D 模型。 这意味着您可以 下载数千个积木定义,下载量相对较小(42 MB 左右)。

安装您的积木

虚拟积木很像网站上的图像或计算机上的字体——只要使用这些文件的应用程序知道在哪里找到它们,您就可以将它们保存在任何地方。 在 Linux 上,通常将积木放在 /usr/share/LDRAW 中。 在 Windows 上,它们通常安装到 C:\Users\Public\Documents\LDraw

LDraw 下载仅提供每个积木的规范。 以下是 1x1 积木的原始形式

0 ~Brick  1 x  1 without Front Face
0 Name: s\3005s01.dat
0 Author: John Riley [jriley]
0 !LDRAW_ORG Subpart UPDATE 2004-01
0 !LICENSE Redistributable under CCAL version 2.0 : see CAreadme.txt

0 BFC CERTIFY CCW

0 BFC INVERTNEXT
1 16 0 24 0 0 0 6 0 -20 0 -6 0 0 box5.dat
4 16 10 24 -10 6 24 -6 6 24 6 10 24 10
4 16 10 24 10 6 24 6 -6 24 6 -10 24 10
4 16 -10 24 10 -6 24 6 -6 24 -6 -10 24 -10
4 16 -10 24 -10 -6 24 -6 6 24 -6 10 24 -10
1 16 0 24 0 10 0 0 0 -24 0 0 0 10 box4t.dat
1 16 0 0 0 0 0 1 0 1 0 -1 0 0 stud.dat
0

为了以更熟悉的形式查看您的作品,您需要一个积木查看器。

LDView 用于乐高渲染

应用程序 LDView 是一个 3D 渲染器,很像 POVray 或 Blender 的 Cycles。 它专门用于渲染 .ldr 文件,这些文件是使用 LDraw 零件定义的 CAD 文件。

如果您使用的是 Linux,则 LDview 可能在您的软件存储库中可用,如果不是,您可以从项目网站下载安装程序。 如果您使用的是 Mac 或 Windows,请从项目网站下载安装程序。

查看单个积木

开始使用乐高 CAD 最简单的方法是尝试查看单个积木。

首先,打开您最喜欢的文本编辑器。 它可以是任何文本编辑器,但它必须能够以纯文本保存。 有些文本编辑器过于有用,试图以臃肿的文件格式(如 .rtf 或 .docx)保存您的文本。 有许多优秀的跨平台文本编辑器。 为此,我推荐相对简约的 Geany 编辑器。

创建一个名为 1brick.ldr 的新文件,并将以下文本输入其中

0 Name: 1brick.ldr
0 Author: Seth Kenlon

0 clr  x y z  a b c  d e f   g h i <file>
1   1  0 0 0  0 0 1  0 1 0  -1 0 0 3001.dat

查看您简陋的创造

$ LDView 1brick.ldr

one blue brick

您刚刚创建了一个简单的 CAD 文件,定义了一个积木(零件号 3001),颜色索引为 1(蓝色),位于 X 轴上的坐标 0,Y 轴上的坐标 0 和 Z 轴上的坐标 0。 积木的旋转由矩阵变换控制,诚然这并不是完全微不足道的数学运算。 但是,任意旋转在乐高中相对罕见,因为大多数积木必须根据饰钉网格进行组装。

以 0 开头的任何行都表示注释或元数据。 以 1 开头的行表示添加积木。

您可以通过添加到您的 CAD 文件来练习在空间中重新定位和旋转积木。 一个普通的积木高 24 个 LDraw 单位 (LDU)。 因此,您可以通过将 Y 轴位置调整 24 个单位来“堆叠”积木。 您可以通过执行矩阵变换来旋转积木。

试试这个

0 Name: 1brick.ldr
0 Author: Seth Kenlon

0 clr  x y z  a b c  d e f   g h i  file
1   1  0 0 0  0 0 1  0 1 0  -1 0 0  3001.dat
1   2 0 24 0 -1 0 0  0 1 0   0 0 -1 3001.dat

在 LDView 中查看它,并尝试单击并在窗口中拖动以从不同的角度查看它。 请注意,我已将第二个积木的颜色从 1(蓝色)更改为 2(绿色)。

one blue and one green brick

当然,您可以沿任何轴移动积木。 LDraw 规范声明 1x1 积木的宽度为 20 LDU,长度为 20 LDU,因此您可以通过将 X 轴递增 20 来调整您的 2 积木设计。

0 Name: 1brick.ldr
0 Author: Seth Kenlon

0 clr  x y z  a b c  d e f   g h i  file
1   1  0 0 0  0 0 1  0 1 0  -1 0 0  3001.dat
1   2 0 24 0 -1 0 0  0 1 0   0 0 -1 3001.dat

blue and green bricks linked

积木序列

LDraw 最常见的用途是演示如何构建模型。 这意味着一系列步骤,LDraw 用 STEP 元命令表示。

要在您的说明中引入一个步骤,请添加此行

0 STEP

在您简单的 2 积木示例文件中,您可以在两个积木之间添加一个步骤

0 Name: 1brick.ldr
0 Author: Seth Kenlon

0 clr  x y z  a b c  d e f   g h i  file
1   1  0 0 0  0 0 1  0 1 0  -1 0 0  3001.dat

0 STEP

1   2 0 24 0 -1 0 0  0 1 0   0 0 -1 3001.dat

您的设计现在包含两个步骤; 第一个步骤显示一个积木,第二个步骤显示一个额外的积木。 您可以通过单击顶部工具栏中“步骤”标签旁边的箭头在 LDView 中逐步浏览您的说明。

Steps menu in terminal

您不必在每个积木中都创建一个新步骤。 与官方乐高套装的说明一样,您可以将几个额外的积木组合到一个步骤中,只要它们的放置足够明显即可。

LDraw 中还有其他命令类型,例如绘制线条以阐明积木放置等。 这些都在规范中记录。

查找积木零件号

我过去常常将我的乐高系列放在渔具盒中,这样我就可以快速找到任何套装中的任何零件。 然而,随着我的收藏不断增长,我对容器的需求也随之增加,并且我在查找积木方面的效率有所下降。

由于有超过 11,000 个独特的零件,因此查找数字乐高积木同样麻烦。 每个官方乐高积木都有一个零件号。 例如,示例 CAD 文件中使用的 2x4 积木是 3001。如果您知道零件号,则可以在 CAD 文件中使用它,并且会出现积木。

LDraw 发行版包含 parts.lst 文件,您可以 grep 以搜索特定的积木。 但是,语法并不总是一致的,并且关键字(积木是“弯曲的”还是“倾斜的”还是“成角度的”?)有时难以预测。

但是,有一些在线资源可能很有用

  • Lugnet 是一个在线乐高用户组,其零件参考数据库由 LDraw 构建。
  • BrickLink 是一个有用的积木目录。
  • Rebrickable 还提供了一个在线积木目录。

其他渲染器

一旦你创建了你的杰作,LDView可以导出你的模型,这样你就可以获得高质量的渲染图。 POVray是一个流行的开源照片级真实感渲染器,所以你可以获得非常精美的作品图像。 你可以在你的Linux发行版的软件仓库中找到POVray,或者从 POVray网站下载。

$ povray +I1brick.pov +Q11 +W4196 +H2160 +O1brick-high.png

POVray blue and green brick render

对于一个专注于教学布局的渲染器,可以试试开源的 LPub3D 项目,它可以显示带有每个步骤的积木清单的说明。

LPub 3d blue and green brick render

探索乐高

用乐高积木搭建是一件有趣的事情,创造你自己的模型是它所激发的创造力的重要组成部分。你自己的模型设计不再需要是短暂的了。你可以通过创建你自己的说明手册来保存它们。

此外,玩数字乐高积木可以让你使用任何可用的部件(无论你是否已经拥有该部件)来创建虚拟的乐高模型和场景。你可以使用数字乐高积木来制作你自己的动画,你自己的复杂套装的照片,甚至设计你自己的积木。有几个在线社区,其中许多,比如 BrickHub.org,发布精美的渲染图,并附带LDraw文件。

无论你喜欢以数字方式搭建模型,设计你自己的积木,还是做一些完全独特的事情,数字乐高场景都是一个有趣且富有创造力的地方。今天就开始吧!


这篇文章最初发表于2020年6月,并由作者更新了最新信息。

接下来要读什么
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,通常是同时进行。

6 条评论

太棒了!!! (尤其是考虑到乐高现在的价格哈哈哈)我会尝试用我的树莓派来做这个!=)

太棒了,但乐高的复数形式是 Lego,末尾没有 s。 乐高集团对此非常挑剔。

我声明一下,我写这篇文章时使用的是“Lego”而不是“Legos”,但在文案编辑中被更改了。 关于谁是正确的似乎存在一场激烈的争论:乐高集团还是大众。 我不是语言学家或人类学家,所以我不会参与这场辩论。

回复 作者 drajt

别忘了 ldraw (ldraw.org)

来自他们的网站

LDraw™ 是乐高 CAD 程序的开放标准,允许用户创建虚拟乐高模型和场景。 你可以用它来记录你实际搭建的模型,创建像乐高一样的搭建说明,渲染虚拟模型的 3D 照片级真实感图像,甚至制作动画。 可能性是无限的。 与真实的乐高积木受到零件和颜色数量的限制不同,在 LDraw 中一切皆有可能。

确实! 这正是本文的内容:LDraw 和 LDView,以及对用于渲染的 LPub3D 和 Povray 的简要介绍。 本文将引导您完成下载 LDraw 资源、使用这些资源编写 CAD 文件,然后渲染结果的步骤。

回复 作者 Tom Tucker

谢谢!

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.