How to Force All Mesh Normals to Point Along a Vector

I’m trying to make all of a mesh’s normals face along a particular direction.

I want them to point in the opposite direction of the single directional light in the game. This is so that the mesh doesn’t have any lighting on it but can still cast and receive light mapped shadows.

Using an unlit / emissive material is no good in this case because I want it to receive light mapped shadows.

Hey Feanix -

Currently there is no way to change the vertex normals in the editor. They would have to be changed in your modeling program and reimported. That is not to say that it cannot be done, but you would have to go in and change and add source code in order to accomplish what you are describing.

Thank You

Eric Ketchum

Editing the normals isn’t possible in the editor, but it is possible to output a different normal value in the material to achieve the same result. This would work since the OP has only one directional light.

You can set the normals in a material by plugging any vector into the normals input. You will want to turn off “Tangent Space Normal” in the material, and then set a vector input parameter that says the location of the light source. Get the vector from the light source to the world position, then normalise this and you’ve got your new normal value.

Copied answer from other comment - Editing the normals isn’t possible in the editor, but it is possible to output a different normal value in the material to achieve the same result. This would work since the OP has only one directional light.

You can set the normals in a material by plugging any vector into the normals input. You will want to turn off “Tangent Space Normal” in the material, and then set a vector input parameter that says the location of the light source. Get the vector from the light source to the world position, then normalise this and you’ve got your new normal value.