(July 2016) Monthly WIP screenshot thread

I can’t say I have as I’ve never heard of it! :slight_smile: I’ll take a look though. Thanks.

Here we have the most basic heavy armor set lying on the floor.

10 Likes

Converting the Lemur TextField to the TrueTypeFont library with a few improvements. I’ve added in word wrapping, while you can scroll left/right in singleLine mode, in word wrap mode you can scroll up/down to reveal text that extends beyond the visible bounds. Also added in the ability to place the cursor by clicking the left mouse button, this works for 2d and 3d UIs even if your text field is scaled and rotated.

I noticed there is a localToWorld method on spatials, but no worldToLocal method so I wrote my own:

local.subtractLocal(node.getWorldTranslation());
node.getWorldRotation().inverse().mult(local, local);
local.divideLocal(node.getWorldScale());```

Also made a few bug fixes to the TrueTypeFont library, I'll get that uploaded after adding in a few planned extra features.
13 Likes

??? There definitely is a worldToLocal() method on Spatials.

public Vector3f worldToLocal(final Vector3f in, final Vector3f store) {
    checkDoTransformUpdate();
    return worldTransform.transformInverseVector(in, store);
}

mild cough

Otherwise great work on the ttfs, you essentially made notepad inside jme lol

2 Likes

Is that available on Node or Spatial, because I needed it on Node and didn’t see it.

I copied that code from Spatial.java, but since Node inherits from it…

Works fine for me.

Okay yeah, just looked it up and it is available on Spatials, but not Nodes and I needed it for a Node.

In Lemur instead of attaching the text geometry directly to the parent node I attach it to an intermediary Node which is then attached to the getNode() method of the component. The reason for this is the cursor which is also attached to that intermediary Node.

With BitmapFonts the cursor is attached to the text Geometry so it is moved with it, but with TrueTypeFonts this doesn’t work when there is no text to display which happens if the text is empty or contains only line breaks and/or spaces. When there is no text to display there is no mesh so the text geometry is removed from the node and attached again when there is text to display. However the cursor still needs to be displayed so I cannot detach it when there are only spaces and/or line breaks so instead I attach both to a Node which is positioned by the layout.

Um…

public class Node extends Spatial {

Unless your node somehow doesn’t extend Spatial then I don’t know how you wouldn’t see that method since it’s not private.

Hmm, well using NetBeans 8.1 the code completion does not list worldToLocal as an option.

Edit: I just pulled up my laptop and the code completion does list it as an option. I guess I must’ve glanced over it, I looked and looked for that and couldn’t find it haha. I actually wrote the worldToLocal code for CarpeDiem, I needed it for bones which, I’m fairly certain, did not have a method for projecting from world space to local and back again.

Actually thanks @pspeed and @MoffKalast for bringing it up since I ended up breaking out my laptop and adding a new feature to the TextField. Previously text that extended beyond the visible area was clipped out and you could use the arrow keys to move the cursor left/right up/down to reveal it, but that wouldn’t have been very useful on Android since, unless you have a keyboard attached, there are no arrow keys. I have it now so that it moves the cursor while the mouse button is held down over the TextField and if the mouse goes farther left/right up/down than the displayed text it will autoscroll to the previous/next line or previous/next character which makes the TextField actually usable on Android. I have it scrolling at 15 frames per second. Scrolling faster was more fluid, but probably would be too easy to scroll past whatever area the user might be trying to reach.

I wanted to emulate the typical ‘low poly scene’ look so i ripped this out this afternoon ::

What I learned :

  • I made many artistic mistakes, which for now I will ignore, but I’m pretty sure I know how to fix them and not make them again in future eg diffuse maps that are the final colour I want, rather than accurate colours I can tone back later to achieve the desired effect.
  • jME is one hell of a rapid prototyping beast !!!, but we already knew that :wink:
24 Likes

Looks awesome

@thetoucher: Can you detail what you did for specific low-poly “feel”? We also want to fiddle around with low-poly assets. Anything specific in jME (like post process filters, etc.) or what you had to change/what artistic mistakes you made? Not sure if all of it will translate, but it may help our artist with some low-poly touches.

The models I made myself, which took most of the time, by following PigArt’s Style.

I then baked Ambient Occlution lightmaps from Blender.

I tweaked Lighting to including MatCap calculations and baked exagurated normals from Blender.

I brightened all my diffuse textures, then fixed up the colours in post.

The rest is just post effects.

7 Likes

Thanks for the tips @thetoucher. I’m the artist for the game @machspeeds is working on, and we’ve got a Main Menu in game now. You can check out the blog post too, it’s a 1 minute read.

4 Likes

its looking really cool. It would be nice if there was a laser or something at the front of the rockets so you can see them coming around the hard to see corners.

What is TTFX?

@thetoucher Actually, you are totally right. We got you covered, here’s a concept I made a while ago:

See those red arrows? Those are indicators for what’s coming. But having the rocket emit a light to see around corners might actually better integrate into the experience than an artificial arrow helping you out. We’ll give that a shot. Nice idea!

6 Likes

my post processor effects library

Hello, I am going through my new jmonkeyengine book and am looking for something to get involved in. I also wanted use skype as social outlet to talk to other jMonkies, learn, assist, and stay motivated.