Skip to main content

世界创作基础(官方原生方案)

⚠️ 警告:本页面正在进行大量的内容构建。请经常回来查看更新。如果您发现任何错误,请联系VRCD-Resonite分部人员或直接进行编辑。

简介 (Introduction)

与大多数其他 VR 社交平台不同,Resonite 真正的优势之一在于其强大的游戏内世界创建工具,限制你的只有游戏引擎的能力,而不是所谓的“好玩”的界限。虽然好处是你可以创造出几乎任何你能想象到的东西,但缺点是它非常复杂。随着时间的推移,游戏内工具会不断改进并使其变得更加简单,但即便如此,学习世界创建的基础知识仍然是个好主意。有趣的是,虽然本页面的目标是 Resonite,但这里(以及相关链接中)提到的许多基础知识同样适用于其他游戏引擎。

建议你在开始构建之前至少浏览一下本页面,以避免产生挫败感。或者你也可以直接开始,边做边学,Resonite 是一个包容所有类型创作者的平台。

注意事项 (Notes):
  • 本页面旨在演变成为一份“如何在游戏内从头到尾制作一个世界”的指南。它将推广使用官方工具和方法。虽然不打算作为一步一步的傻瓜式教程,但它将包含流程概述、工具和资源的链接。
  • 它不应被视为一份详尽无遗的全面指南,而是一个坚实的起点,涵盖了每个步骤的几种实现方式。Resonite 允许以近乎无限的方式来完成大多数事情。请点击相关链接获取更多详细信息。
  • 在触及更高级主题的同时,本页面试图避免产生“预设读者已经具备某些知识”的问题。本页面的注释和文本旨在将这些流程以及所需的内容置于具体的上下文中,并提供灵感。
  • 本页面的许多内容参考了 Metaverse Academia公共文件夹,虽然在创建本页面时这是一项极其宝贵的资源,但它绝不是唯一的资源。

虽然稍后(或在游戏内资源部分)会提供直接链接,但你也可以从 Resonite Essentials(基础文件夹)通过以下路径找到它:

image.png


如何从 Resonite Essentials 进入 Metaverse Academia 的公共文件夹。

初始世界创建 (Initial world creation)

到底什么是“世界 (World)”? 从宏观上讲,世界是一个已保存的资产,它包含了 Resonite 托管人启动、设置和运行一个环境所需的全部内容,以及引用内部所有元素的方法。除了少数隐藏元素外,关于世界的一切都可以通过场景检查器 (Scene Inspector) 进行编辑。尽管它功能强大,但由于其复杂性,本页面将尽量避免使用它。

可以使用你仪表盘(Dash)中的“创建新世界 (Create New World)”按钮来创建一个新世界。有关更多详细信息,请查看如何创建:世界创建 和管理:世界法球 (World orb)

默认世界 (Default worlds)

对于新世界来说,最受欢迎的两个起点是 Platform(平台)或 Grid(网格)。它们都提供了一个基本的世界设置,包括地面、简单的程序化天空盒、世界光照以及其他核心必备组件,例如 CommonSpawnArea(生成区组件)和 Locomotion Modules(移动模块)。这两个世界都将初始生成点设置在坐标 [0,0,0] 处。它们的主要区别在于地面。

image.png


美妙事物的开端? (网格世界)

Grid(网格世界)

网格世界是创建“建立在地面上”的世界的绝佳起点,它是一个 1 平方公里的方形网格模型(Quad mesh),带有网格纹理,并且碰撞体厚度为 0。你可以使用材质工具将地面更改为更有趣的样式,用不同的模型替换它,或者将其视为一个“摄影棚/工作台”在上面进行创作。


Platform(平台世界)

想要建造空间站、浮空岛或类似的东西吗?这个世界适合你。它是一个扁平的圆柱体,厚度为 0.2 米,直径为 30 米,带有一个匹配的碰撞体,漂浮在一片虚无之中。

Blank(空白世界)

没有地面,你将处于漂浮状态。如果你真的想“从零开始”,这就是你能得到的最纯粹的起点。

天空盒/世界光照 (Skyboxes/World lighting)

默认世界附带了一个 Skybox(天空盒组件) 以及其他已设置好的组件(位于 Root -> Skybox 下),为你提供了“天空”的视觉效果和世界反射。

Skybox 组件将观察者置于一个球形气泡的中心,所选取的纹理会在内部进行完整的 360 度投影。这种效果在 Platform 世界中结合高细节的天空盒图像,并越过边缘向下看时效果最佳。

基础天空 (Basic)

默认情况下,世界自带一个基础的 ProceduralSkyMaterial(程序化天空材质组件),它会创建一个带有太阳的天空。你可以使用检查器(Inspector)选中它并编辑颜色及其他细节。

不过,你也可以通过将任何 360 度全景纹理法球加载到材质工具 (Material Tool) 中,然后对着天空按下主按键 (Primary) 将其更改为静态图像。虽然这会更新环境反射,但它并不会改变来自太阳的光线角度。要改变光线角度,请使用 Light Tool (灯光工具) 并切换至“Sun (太阳)”模式,将其瞄准你希望太阳在天空中的位置。

可以在以下位置找到一系列 CC0 或 CC-BY 授权的天空盒纹理:

  • Resonite Essentials -> Assets -> Resonite Assets -> Skyboxes
  • Metaverse Academia Public -> Public Folders -> World-Building Public Assets -> CC0 Skyboxes
  • Creator Jam Public -> Skyboxes

image.png


它们其实不需要这么复杂,但你在天空盒上的疯狂程度完全可以与你世界的其他部分相媲美。

黎明天空 (Dawn Sky)

云端家园 (Cloud Home) 附带了一个更高级的天空盒系统,称为 Dawn Sky (黎明天空),它包含了昼夜交替、更多可调太阳设置、背景以及飞行生物等元素。虽然视觉效果令人惊叹,但与简单的程序化天空或静态纹理相比,它可能会带来一些性能损耗。你可以通过移除不需要的元素来恢复大量性能。要改变黎明天空的太阳位置,你需要使用太阳枪 (The Sun Gun)而不是灯光工具。

目前有计划推出可一键安装的版本,不过在它作为进阶主题的同时,你也可以在 Dawn Sky#复制到新世界 找到相关说明。如果你遇到困难,导师 (Mentors) 也可以为你提供帮助。


地形/地貌 (Terrain/Landscape)

除非你仅仅想要(或需要)一个带有纹理的巨大平坦表面,或者你计划在你的世界中只使用飞行 (Fly) 或穿墙 (NoClip) 移动模块,否则你会需要一个能站立的表面。在游戏中,“地面”仅仅是指位于你与虚拟形象 (Avatar) 所设定的重力“下方”之间,且带有碰撞体(并勾选了 'CharacterCollider' 角色碰撞体布尔值)的任何物体。因此,地面几乎可以是任何东西。

地形通常通过以下三种方式之一创建:

image.png


任何世界都适用的绝佳构建块。使用操作轴轻松移动。

使用对象/3D 网格 (Using Objects/3D meshes)

这是迄今为止最灵活、最容易上手并且通常最有趣的创建地形方法,它可以完全在游戏内完成。虽然这是最受欢迎的方法之一,但如果不结合其他技术来“塑造”地形,用高细节覆盖大面积区域将是一项艰巨的工作。

它的原理是生成物体:无论是从众多公共文件夹中提取,还是从其他世界中收集的岩石或山脉,或者是使用相应工具生成的简单立方体或圆锥体,并根据需要设置好碰撞体。

在这种情境下派得上用场的工具包括:

一些创意想法:

  • 使用 Shape Tool(形状工具) 创建基本的形状(如圆锥、圆柱和立方体),并将材质更改为银色以建造一艘宇宙飞船。
  • 对于基于地面的岛屿,从网格世界开始,在地面上添加一个覆盖有水材质的模型,然后生成一些突出水面的巨大岩石。
  • 将建筑碎片随机插入覆盖有豆子 (Beans) 材质的网格中来创作艺术。

image.png


一些起伏的丘陵以及用于生成它的灰度图像。

置换网格/纹理 (Displacement Mesh/Textures)

另一种不同但强大的方法是使用灰度图像,并根据其生成高低不平的地形。通常黑色代表低地,白色代表高地。你可以在网上找到许多此类图像并导入它们,或者使用外部工具(如 GIMP 或画图)自行制作,亦或是使用游戏内的绘图工具。

使用 GridMesh(网格模型组件) 并将灰度纹理放入 DisplacementTexture(置换纹理槽位)中以创建修改后的 3D 模型。通过设置 'DisplacementMagnitude' 控制高度,'Points' 控制分辨率,'Size' 控制景观的面积。最后,应用一个 Type(类型)设为 Static,且 CharacterCollider(角色碰撞体)设为 True 的 MeshCollider(网格碰撞体组件),即可使其可供行走。更多细节及示例请参见 GridMesh 组件页面。

这种方法的性能相当不错,因为大多数计算都是在初始加载或发生更改时进行的,你需要在最终网格的大小与由 'Points' 设置的细节之间做出权衡。在大型地图上,处理可能需要一些时间。一旦所有的编辑工作完成,并且你希望提高加载时的性能,你可以“烘焙 (Bake)”网格,以生成一个新的不带此类计算开销的 3D 模型(代价是牺牲了可编辑性)。

这种方法的优点在于,在烘焙之前,只需随时替换纹理即可轻松编辑地形,甚至能制作动态/变化的地貌。然而,它无法用于创建穿透洞穴、悬垂结构、内部空间或其他复杂的 3D 几何体。解决这个问题的一种方法是将其与其他方法结合使用,例如添加突出的岩石物体,或者在房屋下方创建一个陡峭的山谷作为地下室,并用房屋的边缘来隐藏缝隙。

有一些游戏内工具可供编辑图像,例如 MA 公共文件夹中 Asset Editing tools 里的 Neotoshop。


image.png


别被它的年代感骗了,这是一个非常有趣的入门工具。

2D / 3D 网格模型 (2D/3D Mesh)

这是迄今为止最流行的传统地形创建方法,它通常依赖于外部 3D 建模工具。

根据所采用的优化技术,这种方法的性能上限和下限都很高。因为网格模型的大小可以进行动态调整以适应所需的细节:对于相同的三角形数量,你可以在诸如陡坡和山谷等需要高细节的区域分配更多的多边形,而在大平原或开阔空间等平坦区域则大幅降低多边形数量。一旦导入,网格模型就可以与 MeshCollider 配对,并按照上述方法进行设置。

目前至少存在一个容易且有趣的游戏内地形编辑器,不过它有一些局限性。

Terrain Lab MMC22 (作者: rhenium):
https://go.resonite.com/world/G-Shared-Project-rheni/R-59aa7484-032f-4068-a468-9e262b0ed814

注:由于该工具创建的网格分布非常均匀且不够优化,根据密度的不同,往往会导致“低模 (Low poly)”的外观。该工具非常适合制作较小空间的可用网格。


贴图纹理 (Texturing)

为地形添加纹理最简单的方法是使用 Material Tool(材质工具)

有关基于网格的地形(包括置换网格)的纹理化,请参见:颜色混合材质 (Color Splat Materials)(编辑注:该部分需要进一步完善。)

安装/放置 (Installing)

无论你决定使用哪种方法,此时你都可以将世界现有的地面替换为你新制作的地面,或者将其放置在世界的其他地方。如果你选择替换,最好使用检查器将新地面网格的原点设置为世界的 [0,0,0] 坐标。完成后,别忘了禁用该物体的可抓取(Grabbable)属性。有关移动生成点的内容,请参见进阶主题

额外技巧 (Bonus)

如果你想创建一个用于视觉展示的高性能 3D 地形,且不需要任何人在上面行走(例如,悬空人行道下方的地面或窗外的风景),一个有趣的选项是使用置换材质(Displacement Material)。关于如何做到这一点的具体细节,可以参考 ProbablePrime 在前 Resonite 时代使用游戏内图形编辑器和置换贴图创建地形的演示:

ProbablePrime 的公共文件夹:
resrec:///U-ProbablePrime/R-0776eec6-e4d1-46b0-9996-62428b1310b0

相关的公共文件夹 (Related public folders)

  • Textures(纹理)
  • Rocks(岩石)
  • Trees(树木 - 位于 Resonite essentials)

建筑/结构 (Buildings/Structures)

基础 (Basics)

使用形状和其他物品进行构建。

image.png


黎明模块具有极高的多用性,易于使用且看起来非常棒。如果在拼接时卡住了,可以结合黄昏模块使用。

可吸附模块 (Snappable)

Dawn Modular(黎明模块)是一套使用了Module Snapping Tool(模块吸附工具)的建筑套件,几乎在所有的官方世界中都有使用,并采用 CC-BY 许可。这是搭建快速起点,或将部分 Resonite 设计语言融入新世界的便捷方式。

Dusk Modular(黄昏模块)是黎明套件的完全兼容社区补充版,采用 CC0 许可。它具有更简单、性能更高的样式,同时仍能与黎明套件相匹配,既可以完全独立使用,也是为黎明套件创作寻找“缺失碎片”的好去处。

它们都非常容易找到:

  • Resonite Essentials -> Assets -> Resonite Assets -> 3D Models -> Dawn Assets
  • Resonite Essentials -> Assets -> CC0 Assets -> DuskModular

模型重组 (Kitbash)

这是一个包含导入工具和大量预制物品集合的惊艳工具世界,用于建造房屋。

resrec:///U-Crusher/R-3B3105CA14110C8E955083F2B1DA5CCFAD786424E7C15A9D5DAF5BDC7C2B9790

Kitbasher 世界链接。

家具/装饰品 (Furnishing/accessories)

Softpoint 拥有非常可爱的物品(如毛绒玩具),可以用来装饰你的世界,增加趣味性:
resrec:///U-SoftPoint/R-3426de08-2321-4cff-82a8-0f308a6fbd7f

Gearbells 的玩具店!里面有很多好玩的和游戏:
resrec:///U-GearBell/R-d8cf5ff8-cf57-4325-a7b3-feb5dc1cd966

保存 (Saving)

如何保存世界并将新世界设为你的家园,请参见:家园 (Homes)

进阶主题 (Advanced topics)

这些主题将随着时间的推移不断充实和完善。大多数主题将链接到涵盖其特定内容的专属页面。

  • 使用检查器 (Inspectors) 和 操作轴 (Gizmos) 及变换属性移动物品。
  • 如果生成点不再处于设计的最佳位置,如何移动你的生成点 (Spawn Point)。
  • 室内与室外照明,以及如何在你需要关闭世界整体光照以实现“室外明亮而室内黑暗”效果时进行切换。
  • Joshtiger 在他的 'creations' 文件夹中有非常棒的粒子系统:
    resrec:///U-Joshtiger/R-E43F7F9064B3BF6D72634B6EF398835BFBBD6774B3400203F0280E4B742082F0
  • 重力系统。关于如何制作它们的基础知识。
  • 教程:世界优化 (Tutorial:WorldOptimization)
  • 组织世界的层级结构 (Hierarchy)

延伸阅读 (Further reading)

世界创建中心 (World Creation Hub)中可以找到大量指向更专业、更高级主题的链接。

视频教程 (Videos)

Miss Molly 讲解如何从头到尾创建一个世界。

游戏内资源 (In game resources)

在 Resonite 已发布的世界中四处探索,会为你带来许多世界创作的灵感。一旦你变得更加熟练,带着开发工具 (Dev tool) 和场景检查器四处打探并学习事物的运作原理通常是被欢迎的,这也是一种绝佳的学习方式。许多世界都有着令人惊叹且巧妙的系统,非常值得一看。

然而,请务必小心:在未知许可证或许可的情况下,不要随意复制他人世界中的资产。对于某些世界,获取权限比其他世界容易。例如,为 MMC 或 Creator Jam 制作的世界通常会在某个地方标明“致谢(Credits)”,展示他们使用了什么以及来源。

以下是一些已知许可证或所有者欢迎分享和使用的公共文件夹列表:

标题 (Title) 内容 (Content) 链接 (Link) 许可证 (License)
Metaverse Academy (元宇宙学院) 公共文件夹 许多好东西! resrec:///G-1StJATqZXay/R-2387820050A6554644FFF4A2EE2A9A536E516300E61945D45F3D0CC305259874 各种各样 (Assorted)
Creator Jam 世界构建资源 resrec:///U-Medra/R-671603aa-4805-4c2b-bcce-3c9cca675626 CC-BY
Resonite Assets 官方团队创建的资产 Resonite Essentials -> Assets -> Resonite Assets CC-BY 4.0
Team Lagom 公共文件夹 待定 (TBA) resrec:///G-1Vx8VZmrF8S/R-117FF8B6F31A6A9ECCACDEF863F9AF7246B99A3F2CEEEAA2FE7649E42FA9461A  
RedX / UniPocket

非常值得在这里提及它们。这两个都是带有不同索引的搜索工具。请注意,你可能无法确认这些搜索出来的资产的许可证或合法性。

  • RedX:搜索公共文件夹的工具,拥有网页版和游戏内的切面 (Facet) 界面,是非常好用的工具。推荐使用 'fork' 版本。
  • UniPocket:一个日本社区常用的资产发布和搜索工具。