六一的部落格


关关难过关关过,前路漫漫亦灿灿。



为静态网格体应用材质,使其具有图案和纹理

使用基础颜色

材质类以M_打头

材质实例类以MI_打头,未遵守该约定

修改材质参数后,需要手动保存


材质

虚幻引擎中的一种资产,负责视觉部分,如静态网格物体 static mesh ,骨骼网格物体 skeletal mesh ,粒子系统 particle system ,以及其他物体的外观

更确切地说,材质是一种着色器,即一个微型子例程,可以在GPU上运行并计算场景中像素点的颜色和位置


材质实例

材质实例类派生自材质类

材质类可以有多个派生的材质实例类, 针对材质参数, 给出不同值


创建材质类


在内容浏览器创建材质类

M_Color

  1. 创建文件夹 Content/Material
  2. 右键 >(创建基础资产)材质

在虚幻编辑器中打开材质类

双击材质类,在材质编辑器中查看材质

材质编辑器: 专门用来编辑材质



为材质设置颜色

BaseColor

  1. 使用 Constant4Vector 作为输入


  2. 转换为参数,命名为 Color



为材质设置金属度

Metallic

  1. 使用 Constant 作为输入


  2. 为0,不具备金属度

  3. 金属度效果图



创建材质实例类

  1. 内容浏览器选中材质类, 右键 > Create Material Intance , 命名为 M_Color_Inst


  2. 双击材质实例类,在材质编辑器中打开

    • 如果Color没有转换为参数,材质实例类不能修改Color值


  3. 创建多个材质实例类,Color值不同



为静态网格体应用材质


方法一: 将材质拖放到视口中的对象上


方法二: 在内容浏览器选中材质, 在细节面板应用

  1. 在内容浏览器中选中材质
  2. 在世界大纲中选中对象
  3. 在细节面板中为静态网格体应用该材质



方法三: 在细节面板设置材质

  1. 在世界大纲中选中对象
  2. 在下拉框选中要应用材质



创建基于C++类的蓝图类

可以在虚幻编辑器中创建蓝图类,使其派生自C++类

可以在虚幻编辑器中编辑蓝图类,设置数据成员初始值及其他

基于C++类的蓝图类命名以BP_打头


创建蓝图类

  1. 创建文件夹 Content/BlueprintClasses
  2. 在内容浏览器右键, 选择 Create Blueprint class based on SimpleGeometry
  3. 名字以BP_开头

在虚幻编辑器中打开蓝图类

双击蓝图类,在蓝图编辑器中查看蓝图类



创建多个蓝图类,使StaticMesh绑定不同模型,并为静态网格体应用不同材质实例类



在代码中设置材质对象的参数


包含头文件

SimpleGeometry.cpp

1#include "Materials/MaterialInstanceDynamic.h"

设置材质参数

已为正方体绑定材质M_Color,获取指向对应材质对象的指针

只有一个材质,索引为0

-
UStaticMeshComponent::CreateAndSetMaterialInstanceDynamic 获取指向材质对象的指针
UMaterialInstanceDynamic::SetVectorParameterValue 设置材质对象参数

添加函数成员, 在BeginPlay中调用

SimpleGeometry.cpp

private

1void ASimpleGeometry::SetMaterialParameter()
2{
3    if (!StaticMesh) return;
4    UMaterialInstanceDynamic *Material = StaticMesh->CreateAndSetMaterialInstanceDynamic(0);
5    if(Material)
6    {
7        Material->SetVectorParameterValue("Color", FLinearColor::MakeRandomColor());
8    }
9}

材质类和材质实例类


为静态网格体应用材质,使其具有图案和纹理

使用基础颜色

材质类以M_打头

材质实例类以MI_打头,未遵守该约定

修改材质参数后,需要手动保存


材质

虚幻引擎中的一种资产,负责视觉部分,如静态网格物体 static mesh ,骨骼网格物体 skeletal mesh ,粒子系统 particle system ,以及其他物体的外观

更确切地说,材质是一种着色器,即一个微型子例程,可以在GPU上运行并计算场景中像素点的颜色和位置


材质实例

材质实例类派生自材质类

材质类可以有多个派生的材质实例类, 针对材质参数, 给出不同值


创建材质类


在内容浏览器创建材质类

M_Color

  1. 创建文件夹 Content/Material
  2. 右键 >(创建基础资产)材质

在虚幻编辑器中打开材质类

双击材质类,在材质编辑器中查看材质

材质编辑器: 专门用来编辑材质



为材质设置颜色

BaseColor

  1. 使用 Constant4Vector 作为输入


  2. 转换为参数,命名为 Color



为材质设置金属度

Metallic

  1. 使用 Constant 作为输入


  2. 为0,不具备金属度

  3. 金属度效果图



创建材质实例类

  1. 内容浏览器选中材质类, 右键 > Create Material Intance , 命名为 M_Color_Inst


  2. 双击材质实例类,在材质编辑器中打开

    • 如果Color没有转换为参数,材质实例类不能修改Color值


  3. 创建多个材质实例类,Color值不同



为静态网格体应用材质


方法一: 将材质拖放到视口中的对象上


方法二: 在内容浏览器选中材质, 在细节面板应用

  1. 在内容浏览器中选中材质
  2. 在世界大纲中选中对象
  3. 在细节面板中为静态网格体应用该材质



方法三: 在细节面板设置材质

  1. 在世界大纲中选中对象
  2. 在下拉框选中要应用材质



创建基于C++类的蓝图类

可以在虚幻编辑器中创建蓝图类,使其派生自C++类

可以在虚幻编辑器中编辑蓝图类,设置数据成员初始值及其他

基于C++类的蓝图类命名以BP_打头


创建蓝图类

  1. 创建文件夹 Content/BlueprintClasses
  2. 在内容浏览器右键, 选择 Create Blueprint class based on SimpleGeometry
  3. 名字以BP_开头

在虚幻编辑器中打开蓝图类

双击蓝图类,在蓝图编辑器中查看蓝图类



创建多个蓝图类,使StaticMesh绑定不同模型,并为静态网格体应用不同材质实例类



在代码中设置材质对象的参数


包含头文件

SimpleGeometry.cpp

1#include "Materials/MaterialInstanceDynamic.h"

设置材质参数

已为正方体绑定材质M_Color,获取指向对应材质对象的指针

只有一个材质,索引为0

-
UStaticMeshComponent::CreateAndSetMaterialInstanceDynamic 获取指向材质对象的指针
UMaterialInstanceDynamic::SetVectorParameterValue 设置材质对象参数

添加函数成员, 在BeginPlay中调用

SimpleGeometry.cpp

private

1void ASimpleGeometry::SetMaterialParameter()
2{
3    if (!StaticMesh) return;
4    UMaterialInstanceDynamic *Material = StaticMesh->CreateAndSetMaterialInstanceDynamic(0);
5    if(Material)
6    {
7        Material->SetVectorParameterValue("Color", FLinearColor::MakeRandomColor());
8    }
9}