Skew/transform event images

horror_n_oates

Villager
Member
Joined
Apr 25, 2018
Messages
9
Reaction score
2
First Language
English
Primarily Uses
RMMV
This is an addendum to my previous question from this thread

Here's general background to what I want to achieve:
Been playing with js to get a pseudo 3d look. (via a mode7 plugin)
I get great results when using it, but there's no easy way to mimic 3D objects in 3D space.

Event images behave similar to 2d cards that always face the camera.
Is there a call to apply a skew method to an event's image?

There is a method, however, for skewing the entire scene as below (left:normal, right: skew by x):
scene_skew.png

Looking through the js library, globals I could use to apply the skew method are Sprite, Spriteset_Map, etc

Not sure if the syntax would be as follows:

Code:
// I was thinking the syntax would be similar to this (Pixi skew, from the above thread)
SceneManager._scene.rotation = 0.1
SceneManager._scene.skew.x = 0.6
SceneManager._scene.skew.y = 0.15

// Not sure something like this works
Spriteset_Base(???).skew.x = 0.6
//or
Spriteset_Map(??eventidentifier??).skew.x = 0.6
Or another global entirely.

If this is a one liner, I could just put the amount skewed to a variable and increment/decrement it based on your perspective to get a somewhat 3D look on a plane.
 

standardplayer

Keeper of Kitties
Veteran
Joined
Apr 6, 2016
Messages
698
Reaction score
3,451
First Language
English
Primarily Uses
N/A
What you're asking isn't gonna probably look right, I know what you're getting at. However, I've not done extensive testing. I could get you to the stuff you'd like to experiment with, though.

JavaScript:
let scn = SceneManager._scene;
let spriteset = scn._spriteset //All of the map/event visual graphics are in here
let chars = spriteset._characterSprites //All character graphics have references here
let sMap = spriteset.children[0].children[2] //ShaderTileMap object, all screen graphics except parallax
let uLayer = sMap.upperLayer //Map Graphics the characters can pass behind
let lLayer = sMap.lowerLayer //Map Graphics the characters walk on top of
So lets say I have a map with some events, some trees with parts that you pass behind, and some graphics that are children of the scene itself, like some PIXI text I'm displaying on screen.

JavaScript:
scn.skew.set(1) //Will skew EVERYTHING, including graphics like
                //PIXI Text that were added as a child of the scene

spriteset.skew.set(1) //Will skew everything including parallax, but will NOT skew
                      //other children of the scene
                 
sMap.skew.set(1) //Will skew all graphics except parallax and any other children of the
                 //scene
           
uLayer.skew.set(1) //Will skew only the elements of the map that characters pass behind
                   //Does NOT skew character/event graphics
lLayer.skew.set(1) //Will skew all elements of the map that characters can NOT pass behind
                   //Does NOT skew character/event graphics
chars.forEach((item) => {item.skew.set(1)}) //Will skew ONLY character/event graphics

chars.forEach((item)=>{if(item._character._eventId == x) item.skew.set(1)}) //skew specific event

The problem with all of this is that when you skew graphics, individually or as a whole, instead of gaining that third dimension, they actually lose the sense of even being 2D.

At it's base, the skewing concept works with Polygon shapes, because you can use mathematical logic to determine what the skew should be as you 'turn' a graphic. You also skew other 'connected' shapes that represent other visible sides of it. It doesn't just come from skewing one image

However, the problem is that there is no data for other sides to the 2D graphics, not in the traditional sense. The character sprites can't be skewed because they're sprites, they are meant to show their 'dimensions' with direction.

Honestly, if you haven't checked out Mv3D (or 3dMV, I can never remember which) that's what I think the definitive 3D RPG Maker MV experience is right now. It's got a ton of interest, people post almost every day in it's thread and a lot of testing and support right now
 
Last edited:

horror_n_oates

Villager
Member
Joined
Apr 25, 2018
Messages
9
Reaction score
2
First Language
English
Primarily Uses
RMMV
Thanks for the snippets!
Tried experimenting with skew-ing a specific event and was able to get the intended result. But after messing around with the X and Y skews, I realized that the effect goes beyond just a 2D skew effect. As described similarly here(on stackoverflow), transforming a rectangle to a trapezium-shape takes a more complex, 3D transformation.
Annotation 2020-06-16 194807.png

Also fiddled around with the vertexData property with somewhat transformed the image, but the change doesn't stay if the player is moving.

The main goal was to get the illusion of a 3D wall, specifically walls in a hallway. This way the only data needed would be just the one visible side of the wall, but to get the effect of perspective is something I was trying to hard-code

An example of what I was aiming for was something like old first-person dungeon crawlers
YEsDhpJM52kSTnjD3MrpLT-1200-80.jpg

I am aware of MV3D, it's available on itch.io and assuming it's quite easy to pick up, but I was more interested in recreating how older games got the illusion of 3D and wanted to do what I can with mode 7.

There's another method to getting a 3D representation of a top-down map called Raycasting, and was lucky enough to find that someone was able to implement it in MV! Although I would definitely reach out to the author/dev if someone wanted to build further on their project.

But I'll be experimenting further with the snippets above
 

Attachments

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

Our latest feature is an interview with... me?!

People4_2 (Capelet off and on) added!

Just beat the last of us 2 last night and starting jedi: fallen order right now, both use unreal engine & when I say i knew 80% of jedi's buttons right away because they were the same buttons as TLOU2 its ridiculous, even the same narrow hallway crawl and barely-made-it jump they do. Unreal Engine is just big budget RPG Maker the way they make games nearly identical at its core lol.
Can someone recommend some fun story-heavy RPGs to me? Coming up with good gameplay is a nightmare! I was thinking of making some gameplay platforming-based, but that doesn't work well in RPG form*. I also was thinking of removing battles, but that would be too much like OneShot. I don't even know how to make good puzzles!
one bad plugin combo later and one of my followers is moonwalking off the screen on his own... I didn't even more yet on the new map lol.

Forum statistics

Threads
106,033
Messages
1,018,441
Members
137,820
Latest member
georg09byron
Top