简介
本插件通过UnrealEngine的MeshDraw框架实现类似Unity的多Pass效果,无需后处理即可实现BackFace描边、剖切效果。并且可以让一个部位同时渲染Unlit与Lit光照模式的Material。
- 商城地址:https://www.unrealengine.com/marketplace/zh-CN/product/multidraw
- 轮廓组件演示视频:https://www.bilibili.com/video/BV11a411j777/
- Email:378100977@qq.com
- Discord:https://discord.gg/y4fWqYsf4U
MultiDraw案例项目
使用方法:下载在Plugins文件中放入MultiDraw,即可运行。
注意:本项目只有5.0及以上版本才可以打开。
更新日志
2022.12.19
- 更新UE5.1版本。
- 支持OverlayMaterial。
- Outline与MultiDraw现在支持Translucent材质。
2022.10.30
1、更新实时更换材质功能。
快速入门
描边案例:
- 新建一个Actor蓝图类并挂载OutlineComponent。
- 设置模型以及材质。
- 创建Outline材质并且放入OutlinePassMaterialSet中。
- 将这个Actor放入场景中。
MultiPass演示:
- 新建一个Actor蓝图类并挂载MultiDrawComponent。
- 设置模型以及材质。
- 根据需要将需要绘制的材质与参数放入PerPassDrawSettingses中。
- 根据需求给材质设置PixelOffset,以便让材质按照想要顺序进行渲染。
- 将这个Actor放入场景中。
剖切案例:
- 进入Simulation模式。
- 旋转Plant模型即可。
说明
OutlineComponent
组件名为OutlineSkeletalMeshComponent与OutlineStaticMeshComponent。材质为一对一模式,即Mesh中Material Element Slot Index与OutlinePassMaterialSet中的相同。如果不想绘制只需要将OutlinePassMaterialSet中对应材质设置为空即可。
选项:
- CullingMode:所有Outline材质的剔除模式。有正面剔除、背面剔除、与双面渲染3个选项。
- bCastShadow:所有Outline材质的投影模式。即是否可以投射阴影到其他物体上。
- OutlinePassMaterialSet:指定Outline材质的数组。
MultiDrawComponent
组件名为MultiDrawSkeletalMeshComponent与MultiDrawStaticMeshComponent。材质为一对多模式,即模型的每个部位都会使用所有指定的材质渲染一次。但是因为深度剔除,所以需要使用深度偏移来控制渲染排序。
选项:
- CullingMode:材质的剔除模式。有正面剔除、背面剔除、与双面渲染3个选项。
- bCastShadow:材质的投影模式。即是否可以投射阴影到其他物体上。
- bDraw:控制材质是否需要渲染。
- MaterialInterface:指定用于渲染的材质。
角色类
为了方便用户,本插件实现了替换Mesh组件的ThirdPersonChracter类:AOutlineCharacter与MultiDrawCharacter。
代码操作如下:
class AOutlineCharacter : public ACharacter
{
GENERATED_BODY()
public:
AOutlineCharacter(const FObjectInitializer& ObjectInitializer);
};
AOutlineCharacter::AOutlineCharacter(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer.SetDefaultSubobjectClass<UOutlineSkeletalMeshComponent>(ACharacter::MeshComponentName))
{}
描边材质说明
本插件提供了2种Outline材质。
- ExampleContent\Materials\Outline\M_FixedOffsetOutline:固定WorldPositionOffset的Outline材质,仅用作演示。
- ExampleContent\Materials\Outline\M_ViewFixOffsetOutline:根据摄像机距离来调整Outline宽度的材质。但在距离较近时,轮廓会变得很细。
- ExampleContent\Materials\Outline\M_PerfectionViewFixOffsetOutline:修正上面问题的材质。
组件并没有限制材质类型,所以也可以使用其他ShaderModel的材质来制作你想得到的效果。
实时更换材质功能
取得对应组件,调用函数即可。对于SkeletalMesh需要确保材质有勾选Use for SkeletalMesh 以及Use for cloth。
其他平台效果
只在编辑器里进行了测试。