Instructional videos for wiki and jME promotion

Blender is probably best suited as a video editor for people who are already comfortable with it.

As far as alternatives to After Effects goes though, Blender is probably as good as it gets. But that’s polish stuff, i.e. not relevant at this point.

1 Like

In fact, VSE was my first real use of blender before Modeling :slight_smile: . The linked videos were a big help, ease to follow and to apply (far better than the online doc). But VSE has also some limitations.

1 Like

Hi all,

It’s me from “Derp land”. I got seriously sidetracked for a couple of weeks learning Lightworks and playing Dwarf Fortress to record video to play with. It’s springtime here in Goodwell, so for the past week I’ve been refraining from jumping into code so that I can attempt house cleaning for spring. My house is more organized now and I’ve caught up on a lot of pending IRL tasks. WOOT! I’m back on task for getting stuff rolling on the video side of things…

@nehon or @erlend_sh, what font would you like me to use for the JME video splash screen? I would like to use the font that is on the 3.0…

but yeah, I’m cobbling stuff together with what I’ve learned thus far… I want to make sure that y’all have a copy available at core if it turns out well. edit: I guess I should ask: What is the name of the font used?

Game on,

The font is Foo.

It is free for commercial use. :thumbsup:


Thanks @erlend_sh, I’ll d/l it. Working on a simple flash n fade, atm, whilst trying to get my brain wrangled from cleaning back over to coding.

Later on,

Please take note that the branding of the sdk has been updated on master:

Hey all,

Here’s something that just popped out the hatch. It’s my first shared Lightworks edit…

I slapped some stuff down, and here’s what came out. Thoughts?

edit: oh, and I have a wall paper for folks to enjoy from the final frames:


I dont get the reference if it is any :confused:

No reference, purely original.

It sometimes happens. :laughing:

Hey! Now that we have a fully accelerated MovieAppState, that video could become the “powered-by-jme.mp4” intro movie for games!

It needs some “powered by” and “platform/technology” and of course it should be shorter (I think that more than 5 seconds risks to be boring, it is intended to be showed every time you run a game). @erlend_sh ?

Nice idea, @Pesegato

I hadn’t planned on actually using that video as anything other than an amusing prototype… kind of like a drawing to put on the fridge for myself… I’m trying to cobble something together for the official intro for the jme video tutorial series.

I could whip up a prototype “powered by” 5 second video easily enough if that art style was nice. The main frame would probably be this one…

and I would probably make a 4:3 and 16:9 version rather than my monitor’s native 16:10, so that the boxing wouldn’t be so bad.

I give the call to y’all if you’d like one of those. Oh, and anyone who wants the master Gimp file used to make the vid, just let me know… I will put it on my google drive and share it.

Game on,

My suggestion for a logo would be a simpler approach,

My suggestion would be:
Logo+test static image
and like 15fps background glow images that just get switched.

All neatly packaged together in an appstate.

Pro: it could be somwhat small in size (~250kb)
maximum platform compability, as no special stuff apart from textures is used.


Yes, for an actual video game “powered by” type intro… the textured appstate with programmatic blending would be Ideal.

Here’s a set of pngs for folks to play with on that front…
The “Middleground” base:

The “Actual Art”:

and a couple of separate “Glow” effects, positioned correctly:

Total size: ~140kb for assets

Go play with it, and have fun. I’m heading back to my debug for DarkMonkey, today.

And let’s not forget the sound: I propose some “jungle” sound with monkeys screaming and bongo drums :chimpanzee_amused:

1 Like

Nay no sounds or only a small 3-10 note sound. It should not be annoying!.

I might take a look at that next week for the intro appstate.

I’d also want a rather simple intro like a simple fade in and fade out of that plain “JmeTitle4a.png”.
Possibly in conjunction with a kick or some smash sound.

Of course you can always have some Credits AppState with some monkeys jumping over the screen or some crazy move, but if you are honest:

We all hammer ESC like idiots in order to skip that annoying intro.

So maybe some slight fading for a few seconds would be cool (but please make it disable-able using the AppSettings) .

I would just make it an appstate/or something similar. Then its up to the user to use it or not.

Deliverd as promised:

Now we just need a short small chime like sound for it?

package jme3.intro;


import com.jme3.material.Material;
import com.jme3.material.RenderState.BlendMode;
import com.jme3.math.ColorRGBA;
import com.jme3.math.FastMath;
import com.jme3.renderer.queue.RenderQueue.Bucket;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Quad;
import com.jme3.texture.Texture;

public class IntoAppState extends RootNodeState {
	public final static float	bgEnd		= 1f;
	public final static float	logoEnd		= 0.5f;
	public final static float	glow1		= 0.15f;
	public final static float	glow2		= 0.25f;
	public final static float	blendOut	= 1f;

	EIntroState					state		= EIntroState.Background;
	float						current		= 0;

	private Material			bgMat;
	private Material			logoMat;
	private Material			glowMat;
	private Material			glow2Mat;
	private AppStateManager		stateManager;
	private Application			app;
	private Material			blackBG;

	public void initialize(AppStateManager stateManager, Application app) {
		super.initialize(stateManager, app); = app;
		this.stateManager = stateManager;


		this.blackBG = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
		this.blackBG.setColor("Color", ColorRGBA.Black);

		this.bgMat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
		Texture backgroundTex = app.getAssetManager().loadTexture("Intro/back.png");
		this.bgMat.setTexture("ColorMap", backgroundTex);
		this.bgMat.setFloat("AlphaDiscardThreshold", 0.01f);

		this.logoMat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
		Texture logoTex = app.getAssetManager().loadTexture("Intro/logo.png");
		this.logoMat.setTexture("ColorMap", logoTex);
		this.logoMat.setFloat("AlphaDiscardThreshold", 0.01f);

		this.glowMat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
		Texture glowTex = app.getAssetManager().loadTexture("Intro/glow.png");
		this.glowMat.setTexture("ColorMap", glowTex);
		this.glowMat.setFloat("AlphaDiscardThreshold", 0.01f);

		this.glow2Mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
		Texture glow2Tex = app.getAssetManager().loadTexture("Intro/glow2.png");
		this.glow2Mat.setTexture("ColorMap", glow2Tex);
		this.glow2Mat.setFloat("AlphaDiscardThreshold", 0.01f);

		int width = app.getCamera().getWidth();
		int height = app.getCamera().getHeight();

		Quad geometry = new Quad(width, height);

		Geometry bgQuad = new Geometry("Background", geometry);
		bgQuad.setLocalTranslation(0, 0, 4);

		Geometry logoQuad = new Geometry("Logo", geometry);
		logoQuad.setLocalTranslation(0, 0, 5);

		Geometry glowQuad = new Geometry("Glow", geometry);
		glowQuad.setLocalTranslation(0, 0, 1);

		Geometry bg = new Geometry("Glow", geometry);
		bg.setLocalTranslation(0, 0, 0);

		Geometry glow2Quad = new Geometry("Glow2", geometry);
		glow2Quad.setLocalTranslation(0, 0, 2);

		this.bgMat.setColor("Color", new ColorRGBA(0, 0, 0, 0));
		this.logoMat.setColor("Color", new ColorRGBA(0, 0, 0, 0));
		this.glowMat.setColor("Color", new ColorRGBA(0, 0, 0, 0));
		this.glow2Mat.setColor("Color", new ColorRGBA(0, 0, 0, 0));



	public void update(float tpf) {
		// System.out.println(tpf);
		// System.out.println(this.current);
		this.current += tpf;

		switch (this.state) {
		case Background:
			this.blend(IntoAppState.bgEnd, EIntroState.Logo, this.bgMat);
		case Glow1:
			this.blend(IntoAppState.glow1, EIntroState.Glow2, this.glowMat);
		case Glow2:
			this.blend(IntoAppState.glow2, EIntroState.END, this.glow2Mat);
		case Logo:
			this.blend(IntoAppState.logoEnd, EIntroState.Glow1, this.logoMat);
		case END:

	private void blendOut() {
		float ratio = 1 - FastMath.clamp(this.current / IntoAppState.blendOut, 0, 1);

		this.blackBG.setColor("Color", new ColorRGBA(ratio, ratio, ratio, ratio));
		this.bgMat.setColor("Color", new ColorRGBA(ratio, ratio, ratio, ratio));
		this.logoMat.setColor("Color", new ColorRGBA(ratio, ratio, ratio, ratio));
		this.glowMat.setColor("Color", new ColorRGBA(ratio, ratio, ratio, ratio));
		this.glow2Mat.setColor("Color", new ColorRGBA(ratio, ratio, ratio, ratio));
		if (this.current > IntoAppState.blendOut) {;

	private void blend(float endOfPart, EIntroState nextState, Material stateMat) {
		float ratio = FastMath.clamp(this.current / endOfPart, 0, 1);
		stateMat.setColor("Color", new ColorRGBA(ratio, ratio, ratio, ratio));
		if (this.current > endOfPart) {
			this.state = nextState;
			this.current = 0;

	private enum EIntroState {
		Background, Logo, Glow1, Glow2, END


waiting for the tutorials :smile:

1 Like

haha, yeah… I want to finish up the DarkMonkey debug, and get Iteag announced at the very least, then I’ll get with @normen on where he’d like to start with the whole series…

I love what you did with the artwork. I’ll toss an ogg your way… er… I think that should be an easy format for java.

It’s just a clip from the “fridge art” video, but if it passes, great.
I don’t have any chimy sounds on me, though… back to the debug for me, now.

Game On,