3
\$\begingroup\$

we are working on a tactics game, with a hand drawn 2D backgrounds and 3D models moving on them. The game generates a 2D grid placed on a XY plane, with faux isometric tiles (Diamond Grid).

I have tried following the guides found here to create the "isometric" effect on the 3D models: prepared two ortho cameras, one perpendicular to the 2D elements and seeing only them and another rotated (30,45,0) which sees only 3D models. Like this:

enter image description here

The issue we're having is the mismatch of the positions between the elements seen by the cameras.

The characer should be standing on the tile with the green border

Character should be standing on the tile with the green border. This cannot be solved by simply moving the 3D camera to match these positions because the seem to differ for objects placed in different parts of the screen.

Could anyone please help?

Thanks!

\$\endgroup\$
3
\$\begingroup\$

You could try applying some form of vertex shader (or similar model modification) to fake some of the perspective:

Link between worlds trick

As I understand it, all models in the game are actually at a kind of shear slant. When viewed from above, it gives all the objects in the scene the same kind of look and perspective that they had in the snes days:

Link to the past

There should be a way to transform the 3d model (at run time I guess) to make it look more like an isometric/othogonal projection.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

I think your problem might be related to the "Size" attribute of your camera. A higher value will cover a bigger area, and also make the displayed objects move slower. When using several cameras, this might cause the illusion of one objects being further/closer and moving slower/faster.

This could also mess up the position where the object is being rendered, like in your example.

You should try to tweak the size of the amera that renders the charaters.

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

You can not do this in your current state. You'll have to split your background into tiles and render them in a correct order, also your character should be in this render queue. You need to either preserve the right amount of space on Z axis to fit sprites and characters, or make a render texture use it in your queue. This way everything will be flat and even 0.0001 difference on Z axis will give you proper rendering order. And render your character into that render texture.

| improve this answer | |
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.