2
$\begingroup$

This is a similar question to what I had asked before. But this time I want to render camera view-invariant (world-space) surface Normal maps using Blender Internal renderer. How can I do that?

In Cycles, I can get something like the followings which are consistent no matter what the camera angle is:

enter image description here

enter image description here

But using Blender Internal, I get something like this which changes as the camera angle changes:

enter image description here

enter image description here

You can download the .blend file with the object and cameras from here:

$\endgroup$
1
$\begingroup$
  1. Create a "Normals" material using nodes:

    enter image description here

  2. Apply it to all objects. The Material Override option in Properties > Render Layers may be useful for this, but if you want to preserve transparency of existing materials you may have to tweak every material individually, ideally with python scripting:

    I'd suggest making a node group containing the geometry node (so future tweaking is easier), connecting that group's output to the Color input of every material's output node, and setting the Alpha according to however you decide a material is transparent or not. Here is an example of some node scripting, hopefully that helps.

  3. Enable World Space Shading in Properties > Shading:

    enter image description here

Render:

enter image description here

$\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.