"Ghost Movement Highlighting"

I’m not sure what the real term for this is, so I’m going to call it ghost movement highlighting in this post.

Ghost movement highlighting is when a spatial leaves behind stationary “ghosts” or silhouettes that eventually fade away. This ends up with a trail of ghosts that highlighting the movement of the spatial.

To achieve this, I assume it requires transparent materials (not sure how that works at all), and a way to highlight the edge of the silhouettes. The transparent materials would somehow have to be animated or reapplied to the spatial constantly :grimacing: in order to get the fading effect.

I haven’t seen anything tutorial on transparency besides transparency sorting which doesn’t seem to be relevant. Edit: nevermind, I found a transparent material in the pallete in the SDK.

Does anybody have a method that works in v3.2?

3 Likes

Can you provide us with some sample screenshots or videos?

1 Like

Here is an example of 2D ghost movement highlighting.

ghost movement highlighting example

The player is moving up and right, and leaves a trail of ghosts that gradually fade out to highlight the movement of the player.

2 Likes

Maybe you find this useful

2 Likes

Sorry, I don’t think that is the same as what I want.

I want the spatial to emit stationary copies of itself (I call them “ghosts”) that slowly fade away.

I think if you don’t want a full expressioned ghost of your spatial, you can do this using a particle emitter & an image that is just a 2d lining of your spatial, & you can use the glow color to display only the hollow 2d image lining of the Spatial while moving…, you can handle the direction of fading using gravity & linear velocity later on.

When the Spatial is stationary, the gravity of the particle would decide which direction the “ghost” would move.

1 Like

How would I do that (taking an image of the spacial)?

You just described the solution.

Make stationary copies that have an alpha that decreases over time. When it reaches 0 then remove them.

If the spatial has only one mesh then you can pretty easily stack them together in one mesh. You have to understand some about meshes and stuff.

If all of this seems scary then you may want to scale back your desirements.

1 Like

Setting the GlowMap to a texture that is similar to the spatial shape…

this example :

    private ParticleEmitter loadElectricWaves(int id){
            ParticleEmitter electricWaves = new ParticleEmitter("ElectricShocks "+id, ParticleMesh.Type.Triangle, 500);
            electricWaves.setParticlesPerSec(FastMath.pow(5,2));
            Material electrics = new Material(getApplication().getAssetManager(), "Common/MatDefs/Misc/Particle.j3md");
            electrics.setBoolean("PointSprite",true);
            electrics.setTexture("Texture", getApplication().getAssetManager().loadTexture("AssetsForRenderer/Textures/Fire.png"));
            electrics.setTexture("GlowMap", getApplication().getAssetManager().loadTexture("AssetsForRenderer/Textures/Fire.png"));
            electrics.selectTechnique("Glow",getApplication().getRenderManager());
            electrics.setColor("GlowColor",ColorRGBA.Blue);
            electricWaves.setMaterial(electrics);
            electricWaves.getParticleInfluencer().setInitialVelocity(Vector3f.ZERO.negate().mult(3.5f));
            electricWaves.setImagesX(1);
            electricWaves.setImagesY(1);
            electricWaves.setStartColor(ColorRGBA.White.mult(ColorRGBA.Blue));
            electricWaves.setEndColor(ColorRGBA.Blue);
            electricWaves.setStartSize(0.35f);
            electricWaves.setEndSize(0.15f);
            electricWaves.setGravity(electricWaves.getParticleInfluencer().getInitialVelocity().mult(2f));
            electricWaves.setLowLife(0.2f);
            electricWaves.setHighLife(1f);
        return electricWaves;
    }

While moving :

Would that work with spatials that aren’t round? It seems that a square-ish spatial would require a “snapshot” of it mid-game to get the glowmap (unless I don’t understand what you’re saying…).

It depends on the texture you are setting to the GlowMap & the emitter…if its a square one then the emitter would be squared, after doing so attach the emitter to the spatial node

I’m afraid I don’t understand.

I need a silhouette of this spatial based on how it is being viewed.

stickguy in blender

I don’t think I can do that on this spatial since its silhouette changes based on its orientation relative to the camera.

1 Like

I see, it may not work by this way…

1 Like

Thanks for your help anyway.

It seems like nobody really has a better way thus far…

1 Like

I think you have 2 options now left, to try Paul’s suggestion, or to draw a 2d representation template of your character on Photoshop & use it as a GlowMap with a ParticleEmitter…

There is really only one way to do what you want without compromise and I already described it.

Sorry, I missed that post for some reason. :man_facepalming:

Is there a way to stroke around the border of the spatial (like in blender object mode when you’ve selected an object, there’s a thin border stroke around it)?

1 Like

You can search the forum for border stuff… there are a bunch of threads on it. The problem is that you want to render ONLY the border and even Blender would have some trouble with doing that easily.

Easy to render a border for an object that you are also drawing. For the copy, set the material to wireframe, turn up the line width, flip the face culling. But that only draws a border if the object will be drawn on top of it. (Else you will see the wire frame of every triangle.)

Probably you can do what you want with a custom shader. Only draw fragments where the normal is not facing the camera by some threshold.

1 Like
2 Likes