Unreal Engine Runtime Vertex Color Paint & Detection Plugin UE7532

Runtime Vertex Color Paint & Detection Plugin

TRAILERTUTORIAL300+ DISCORD COMMUNITYSHOWCASE BUILD & EXAMPLE PROJECTDOCUMENTATIONEXAMPLE PROJECT SHOWCASE

This plugin makes it possible to Detect, Paint and Remove Vertex Colors in Runtime on Static, Skeletal, Spline, Dynamic and Instanced Meshes such as Foliage, in several different ways that can enable New Mechanics, Game Modes or incredible attention to detail!

You paint on Geometry Collection Meshes as well, but it is 5.3 Editor Only and quite Experimental.

With Detect you can Get All Vertex Colors, or Get Closest Vertex Data to a Hit Location such as Vertex Color, Position, Normal, Material, UVs, Native EPhysicsSurface, as well as Compare colors if you want to check if a specific Pattern or similar has been painted.

You can also get the Colors of Each Bone, and the Average Color and Physics Surface Within an Area, so you can run logic in case the player has for instance Painted / Removed Vertex Colors on the Majority of an area.

You can also get the Estimated Color and Physics Surface at the Actual Hit Location, which is highly useful if the Mesh has few vertices. Includes a Rapid Json Module so you can Serialize & De-Serialize data up to 5x faster, and get vertex colors as Serialized String.

Supports Multithreading which makes it possible to perform multiple tasks at the same time on heavy meshes without significant performance loss!

Showcases

-PrismaticaDev

-Instanced Mesh / Foliage

-Dynamic Mesh Component

-Geometry Collection (Experimental 5.3 Editor Only)

-Graffiti, Whiteboard & Paper Painting

-Vehicle and Paint on Wheel

Line of Sight Condition: Dry Surfaces where the Sun Hits Dry Character where the Sun HitsCombined with UDS

UDS: UDS + Plugin TutorialUDS + Paint at Random Vertices

-Unreal Water

-Paint Circles

-UIWS

-Snow Melting

-Fire Spread

-Mario Galaxy x Epic Mickey

-Rolling Around in Filth

-Optimized Particle Painting using Randomization

Performance Showcases

-Paint Task Speed

-Painting on 980k Vertices FPS

-Painting on 50k Vertices 5 LODs FPS

User Showcases

-Crazy Mikes Skeletal Mesh Procedural Deforming

-3D人-3dnchus Particle

-WowzThirds Line of Sight

-Peter Gubins Electricity

Other

-Porting Fire Example to a new Project

-80LV Article

Vertex Colors vs. Runtime Virtual Texture & Decals

With Vertex Colors you have the power of the Material Editor to manipulate things per Vertex like Paint/Removing Colors! This may require you to have a higher vertex count for something that may otherwise not need it like a flat floor, which ofc isn’t an issue for RVTs or Decals.

Decals are also faster than painting with colors, but each Decal is also a Draw Call, which may affect performance.

With Vertex Colors we can also Detect, and not just what Physics Surface and Colors on Closest Vertex, but also what % of each channel is painted, and a lot of other more.

Using Latest Plugin with old Engine Versions

We can’t update plugins for 4.27-5.0 anymore. However, you can use the latest if you have a C++ project by copying the plugin from a new version, and do some modifications, just follow this Tutorial.

For 5.0 you only have to change the engine version in the .uplugin file and re-compile.

Planned Features

-Paint up to 12 Surfaces on one Material

Landscape Layer Info Painting in Runtime (Hopefully this is possible)

Post Launch Added Features

-Instanced Mesh / Foliage Support

-Dynamic Mesh & Geometry Collection Component Support

-Override Vertex Colors to Apply. So users can create their own Paint Conditions!

-Paint Using Physics Surface. So instead of hard setting the values on RGBA, you can for instance paint Water Surface, and it applies colors to whatever channel Water is registered to. If Physics Surface Families is setup, then even if it doesn’t have Water, but has child, for instance Asphalt-Water, then it can apply to that instead, or vice versa, which makes this extremely useful.

-Compare Colors to Detect Painted Pattern. So when painting/detecting, we can compare the result of those colors with a color array the player sent in.

-Paint With different types of Conditions. For instance Line of Sight, to the Sun for example to Dry Faster on parts of a wet Mesh.

-Paint Wheels Component. A component that enables you to paint the wheels of a vehicle with what it drives over, and/or paint the surface under the wheel with whatever is on it.

-Paint Entire Mesh at Random Vertices. Simulate for instance Rain or Snow by having the colors be applied randomly over the Mesh (cheaper than using Particle Collisions).

NOTE

-Spline Mesh Vertex Painting is bugged in 5.2-5.3, even in Editor Time and isn’t plugin related: UE-186643

-Geometry Collection support is 5.3 & Editor Only. Not possible to override colors in build, but will hopefully come in the future!

technical details

Features:

  • Detect Get Closest Vertex Data
  • Detect Get Estimated Color at Actual Hit Location
  • Detect Get All Vertex Colors Only
  • Paint Vertex Colors at Location
  • Paint Vertex Colors Within Area
  • Paint Vertex Color on Entire Mesh or on Random Vertices Over the Entire Mesh. Great for Rain or Snow etc.
  • Create and Paint Color Snippets
  • Affect Chaos Cloth Physics (UE5 EXCLUSIVE)
  • Multithreading for greatly improved performance
  • Rapid Json Module which is up to 5x faster than the built in one. Pretty much the same module that is in my other Rapid Json Plugin, so if you own this plugin, then you don’t need to buy that one.

Number of Blueprints: 5

Number of Widget Blueprints: 4

Number of C++ Classes: 52

Network Replicated: The plugin does extremely little with replication, so the user has more control of How they want things to Replicate, since all projects has different needs depending on optimization, anti cheat structure etc.

The Cloth Overlap Component is the only one that does anything with replication and has an clothOverlapEnabled Replicated bool, so if changed in Runtime, even hot joiners will get the cloth to overlap.

Supported Development Platforms: Windows, Linux, Mac