Thickness "modifier" in threejs WITHOUT increasing poly count

To save performance, is there any kind of way to make a plane (or single “flat” mesh) LOOK like its thick, but without actually making it thick / without actually increasing the poly count?

Essentially, you are asking, to save money, is there any kind of way to make a picture of a car look like a real car. Like in this video.

As you ask for any kind, here are two of the possible ways:

  • use a specially designed texture that will mimic a 3D appearance, similar to how some zebra crossings are made to look 3D, although they are 2D; disadvantage is that it looks 3D from a specific view point:

  • use a bump map that simulates thickness; disadvantage is that it can make only thin thickness (click on the image to see it live):


I’m guessing you’re asking about leaf textures on trees/vegetation. The way to make them look less 2d is to add polygons, instead of mapping the textures to a flat plane, put them on a subdivided plane with the center vertex raised, sort of like the shape of a palm frond, so that from any angle it will have a visible 3d profile.

Another solution is to use billboard sprites that always face the camera, but implementing that is tricky, and doesn’t work as well close up, since you can notice the billboards rotating as you move around them. The THREE.Sprite class is also not very efficient, since it’s a unique object per sprite, and you would need 10s-100s of them per tree. Do-able if you only have 1 tree, but not really feasible for a forest. They also don’t have control over the center of rotation, and for vegetation sprites, they need to rotate around their twig origin… (unless you’re using a more abstract foliage cluster style in which case it can still work) A better approach used in some games, is to use (again) a custom vertex shader that is designed for the specific task. for instance a vertex/fragment shader that fades out the leaves when the angle to the camera is too oblique, or checks for obliqueness and rotates the face a bit to compensate.