Python IO: Initial nodal shader support for import AND export.
authorBastien Montagne <montagne29@wanadoo.fr>
Thu, 27 Sep 2018 20:03:30 +0000 (22:03 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Thu, 27 Sep 2018 21:32:56 +0000 (23:32 +0200)
commit6f42eb245b1572c76c8ade0b3fb89d51c796e97c
tree168865455314043392df888fb158b9d9321564cc
parent69c9266d815550b9b5ce6826cc6f013f69700746
Python IO: Initial nodal shader support for import AND export.

That new bpy_extras' node_shader_utils module is remotely based on
existing addons' cycles_shader_compat module. It has some key
differences though:
 - It is based on Principled shader, instead of the noodle combination
   of half a dozen simpler shaders.
 - It does not do any value conversion (like e.g. clamping, which was
   only suited for FBX). Any conversion/adaptation is to be done
   by each IO add-on.
 - It extensively uses accessors to offer:
   - Easy read/write of values, hiding all the hairy noodly nodes
     (principled shader helps a lot here).
   - lazy creation of most nodes on accessing (when generating a
     material), which avoids getting unused nodes in final shader.
 - We only use Principled BSDF so far though, which means some features
   supported by previous system are not yet implemented in new one.

Note that, even though we support 'exporting' side of things, this will
only work for a very specific (and basic) kind of shader. This will have
to be clearly explained in end-user documentation.

Also, that code has had some basic testing, but most certainly needs a
lot more refinement.

As proof-of-concept, OBJ IO script will be updated to use that new
system after that commit.
release/scripts/modules/bpy_extras/node_shader_utils.py [new file with mode: 0644]