跳至正文
版本:最新版 - a1.148.0 ⚖️

绘制网格

如何使用可用的新的材质自定义方法。

在虚幻引擎中,材质是一种可以应用到网格体上的资产,用于控制场景的视觉外观。 从宏观角度来看,最简单理解材质的方式就是将其视为涂在物体上的“油漆”。 你可以定义它的颜色、光泽度、是否透明等许多属性。

在虚幻引擎中,创建材质时可以为其定义自定义参数。 因此,如果你为网格体材质定义了某些参数,就可以在 nanos world 中通过简单指令来调整它们!

注意

nanos world 提供了大量方法,允许你通过脚本与为材质创建的参数进行交互!

在继续之前,请先阅读 Base Paintable 类以了解所有可用方法!

将网格体材质替换为默认材质

为了进行演示,我们使用 Lua 生成一个立方体并修改其材质:

Server/Index.lua
-- 生成静态网格体立方体
local my_cube = StaticMesh(Vector(300, 0, 100), Rotator(0, 45, 0), "nanos-world::SM_Cube")

-- 将其材质替换为 nanos 默认的 Masked 材质
my_cube:SetMaterial("nanos-world::M_Default_Masked_Lit")

应用默认 Masked 材质的空白立方体

将网格体染色为红色

现在我们将其材质设置为红色! 为此,我们必须设置名为 Tint 的颜色参数。如上所述,该参数连接到了材质的基础颜色。

Server/Index.lua
-- 生成静态网格体立方体
local my_cube = StaticMesh(Vector(300, 0, 100), Rotator(0, 45, 0), "nanos-world::SM_Cube")
-- 将其材质替换为 nanos 默认的 Masked 材质
my_cube:SetMaterial("nanos-world::M_Default_Masked_Lit")

-- 将其涂成红色
my_cube:SetMaterialColorParameter("Tint", Color(1, 0, 0))

应用带有红色参数的默认 Masked 材质的立方体

让网格体呈金属质感

现在让我们赋予它金属质感! 你可以了解更多关于基于物理的材质的信息,了解每个输入如何影响表面的最终展现效果!

Server/Index.lua
-- 生成静态网格体立方体
local my_cube = StaticMesh(Vector(300, 0, 100), Rotator(0, 45, 0), "nanos-world::SM_Cube")
-- 将其材质替换为 nanos 默认材质
my_cube:SetMaterial("nanos-world::M_Default_Masked_Lit")

-- 将其涂成红色
my_cube:SetMaterialColorParameter("Tint", Color(1, 0, 0))

-- 设置金属感
my_cube:SetMaterialScalarParameter("Metallic", 0.85)

-- 设置光泽感
my_cube:SetMaterialScalarParameter("Roughness", 0)

应用带有红色和金属度参数的默认 Masked 材质的立方体

制作镜面效果

一个有趣的尝试是让材质完全反射,就像镜子一样:

Server/Index.lua
-- 生成静态网格体立方体
local my_cube = StaticMesh(Vector(300, 0, 100), Rotator(0, 45, 0), "nanos-world::SM_Cube")

-- 将其材质替换为 nanos 默认材质
my_cube:SetMaterial("nanos-world::M_Default_Masked_Lit")

-- 设置为全金属和高光泽
my_cube:SetMaterialScalarParameter("Metallic", 1)
my_cube:SetMaterialScalarParameter("Roughness", 0)

应用带有金属度和粗糙度参数的默认 Masked 材质的立方体

将纹理加载到网格体

甚至可以从磁盘加载图像(.jpg、.png 等)并应用到网格体上! 为此,你需要将图像放在资产包或包(的 Client/ 文件夹)中。 我们将使用这张图 (imgur),命名为 syed.jpg,并将其放置在包的 Client/ 文件夹中。

现在你可以像这样设置它:

-- 生成静态网格体立方体
local my_cube = StaticMesh(Vector(300, 0, 100), Rotator(0, 45, 0), "nanos-world::SM_Cube")

-- 将其材质替换为 nanos 默认材质
my_cube:SetMaterial("nanos-world::M_Default_Masked_Lit")

-- 将自定义纹理应用到名为 "Texture" 的参数
my_cube:SetMaterialTextureParameter("Texture", "package://testing/Client/syed.jpg")

提示

瞧! 轻而易举! 尽情创建你自己的材质和纹理并在游戏内进行调整吧!

注意

请注意! 直接从磁盘加载原始图像速度较慢,可能会导致不必要的卡顿! 此外,原始图像在加入服务器时既不会被缓存,也不会被自动预加载。