[RELEASED] PaintZ - Splatoon like paint system

**Contact info is out of date on the Asset Store
**Current support email: support@bocs.software (as of 10-13-2024)
**Sorry, this is fully supported for compatible unity versions

*Based on the technique by Michael Voeller

Manual:

WebGL Demo:
http://bocs.software/demo/paintz1/

Paint unlimited “splats” on objects!

Now a youtube video on how to setup:
*Hint…just add “Paint Target” and a Material with the Paint Shader!

Approved on Asset store:

I’ll make a post in the asset section soon.

Fantastic. Your price is way too low, man!

The first million-star reviews are hitting the asset store.

This is the way to make Splatoon -like scenes in Unity, and many more uses too.

THANKS…glad you like it

Just an FYI to everyone…
this has been tested with Unity 2018+
BUT…only works with built-in render…so can’t use the custom pipelines yet.
I plan to add support sometime

@Fattie
Thanks for the review.

I made a simple test…
Plane is scaled 10 1 10

I then tried 25x, 100x…
can’t seem to repro it not painting.

as for the stretching…try a higher texture value here:

remember, the bigger the object the paint needs more resolution
100x is just too big even for 4096x4096, 25x looks ok.

what version of unity, OS, and platform do you have selected?
My test was 2018.1.9f2, Windows 10, Windows Build

I tested a cube at 25,1,25 scale…
is this the “stretching”? if so just need to increase Texture size.

Left: Increased Right: Default 256

I was playing around and created an overlay version…
this means you can use custom shaders, or just a blank area.

check it out…paint on a glass shader, or invisible wall.

still have some work to do but i thought it was cool.

Scaling issue:

Here’s a video:

  1. using Windows10 (highest nvidia etc)
  2. absolutely latest Unity (18.2.6 presently)
  3. create brand new totally empty project
  4. import, from asset store, current PaintZ asset
  5. click “Add … 3D … Plane”
  6. add PaintTarget; chooseMaterial
  7. put PaintExample quick test script on Camera

Play and paint, using various scale on the Plane. it is only necessary to change the “x” scale.

Notice when you get above about 10, it behaves strangely. How to understand this?

Like I said, if you scale it up…you need to also increase the texture size.
see in your video you have it set to 256x256
you are trying to paint an object 10 times bigger, but with the same amount of “paint”

Try 1024x1024…

  • or 2048x2048 or 4096x4096

That makes perfect sense - good one. I’m sure that will help a lot of readers.

Next question! I know how to paint on a surface, which, is textured using one of the supplied “Paint Materials” (white, orange, blue etc).

3649783--298417--screenshot.png

Say I have a floor surface which is a conventional texture (i.e., it’s an image of a floor).

3649783--298420--screenshot 1.png

In fact, how do I paint on that? Can I create a “paintable texture”, using, a PNG to begin with?

(your “invisible texture” idea mentioned above could work, but surely a “png based paintable” texture is the way to go, no?)

Thanks, PaintZ Pals! :slight_smile:

“Say I have a floor surface which is a conventional texture”
just create a new Material
change shader type to PaintStandard
assign your textures like you would any Standard shader.

I can make a quick video if this is not clear.

“how many splats per second”

all splats are queued, then later blit to the texture.
this option is the one that effects performance.

checked it will paint all queued that frame.
unchecked it will paint 10 per frame until que is empty.

“Does it matter how many splats in total exist”
no, this is not a decal system.
once painted, it’s just part of a texture that is always displayed.
0 splats, or 1 million…same performance

Floor: fantastic info, I’m sure it will help many users. It’s totally clear.

Splats per second: AHHHHHH. Fantastic. Got it now. In fact I am limiting splats per frame to 2 or 3, so, fantastic.

Undecal: AHHHHHHHHH. Totally fantastic. That is magic: got it now. Magnificent!

{Thought: when you build a, say, racetrack (let’s say 10km long), you always chop it in to sections (perhaps 100m each) so that it can occlude as the viewpoint spins around. (If you dynamically build a racetrack or similar, this is an important task - to dynamically chop it up for occlusion.) In fact, is this issue relevant to Splatz? Does it occlude, does it need to, or is it a non-issue?}

It’s just a shader, so it has nothing to do with occlusion or anything else.

Tips:
Use as small “Paint Texture” for each object that looks good to you.

Don’t put it on small objects, then spread them around (like rocks)
Each object will create a new Texture, possible to run out of GPU memory.

“Setup On Startup” will create the texture even if you haven’t painted that object yet.
suggest keeping this unchecked, so it will create the textures only when it gets painted the first time.

What about drawing on Terrain?

3663499--299986--screenshot.png

(that’s an attempt using a dynamic decals library, which is hopeless unfortunately)

Terrain shaders are very specific - I wonder if it’s possible??

2 Likes

Submitted V1.5 to asset store

Added New Shaders and API to raycast colors/channels

Hi i sent you an email about splat rect issue.

Got it and replied
*keep in mind timezones for reply time, it was 3AM my time when you sent the message.

Hey man, great asset. Interested to get but a few questions:

Any idea when the new rp support might be ready?

Also, is it possible to detect if a game object touched the exact paint color type?

say @Rumbleboxer , what did you mean by “rp” rp support?

Thanks! Yes, it’s a fantastic asset.

@Rumbleboxer
I don’t plan to support SRP until it comes out of preview.
*Unless I can convert the shaders to Amplify shaders

It has a special raycast function that will return the color

@Fattie
rp = Scriptable Rendering Pipeline

@everyone
I’m currently out of town for the holidays, limited support
*will be back Jan 5, 2019