[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4762] trunk/py/scripts/addons/ io_scene_fbx: fbx import cycles materials - set image mapping from diffuse for other channels that have no mapping set .

Campbell Barton ideasman42 at gmail.com
Wed Sep 18 12:35:37 CEST 2013


Revision: 4762
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4762
Author:   campbellbarton
Date:     2013-09-18 10:35:36 +0000 (Wed, 18 Sep 2013)
Log Message:
-----------
fbx import cycles materials - set image mapping from diffuse for other channels that have no mapping set.

Modified Paths:
--------------
    trunk/py/scripts/addons/io_scene_fbx/cycles_shader_compat.py
    trunk/py/scripts/addons/io_scene_fbx/import_fbx.py

Modified: trunk/py/scripts/addons/io_scene_fbx/cycles_shader_compat.py
===================================================================
--- trunk/py/scripts/addons/io_scene_fbx/cycles_shader_compat.py	2013-09-16 14:41:05 UTC (rev 4761)
+++ trunk/py/scripts/addons/io_scene_fbx/cycles_shader_compat.py	2013-09-18 10:35:36 UTC (rev 4762)
@@ -467,3 +467,50 @@
                          translation=None, rotation=None, scale=None):
         return self._mapping_create_helper(
             self.node_image_bump, self.node_texcoords.outputs[coords], translation, rotation, scale)
+
+    def mapping_set_from_diffuse(self,
+                                 specular=True,
+                                 hardness=True,
+                                 reflect=True,
+                                 alpha=True,
+                                 normal=True,
+                                 bump=True):
+        """
+        Set all mapping based on diffuse
+        (sometimes we want to assume default mapping follows diffuse).
+        """
+        # get mapping from diffuse
+        links = self.node_image_diff.inputs["Vector"].links
+        if not links:
+            return
+
+        mapping_out_socket = links[0].from_socket
+
+        tree = self.material.node_tree
+        links = tree.links
+
+        def node_image_mapping_apply(node_image_attr):
+            # ensure strings are valid attrs
+            assert(node_image_attr in self.__slots__)
+
+            node_image = getattr(self, node_image_attr, None)
+
+            if node_image is not None:
+                node_image_input_socket = node_image.inputs["Vector"]
+                # don't overwrite existing sockets
+                if not node_image_input_socket.links:
+                    links.new(mapping_out_socket,
+                              node_image_input_socket)
+
+        if specular:
+            node_image_mapping_apply("node_image_spec")
+        if hardness:
+            node_image_mapping_apply("node_image_hard")
+        if reflect:
+            node_image_mapping_apply("node_image_refl")
+        if alpha:
+            node_image_mapping_apply("node_image_alpha")
+        if normal:
+            node_image_mapping_apply("node_image_normalmap")
+        if bump:
+            node_image_mapping_apply("node_image_bump")

Modified: trunk/py/scripts/addons/io_scene_fbx/import_fbx.py
===================================================================
--- trunk/py/scripts/addons/io_scene_fbx/import_fbx.py	2013-09-16 14:41:05 UTC (rev 4761)
+++ trunk/py/scripts/addons/io_scene_fbx/import_fbx.py	2013-09-18 10:35:36 UTC (rev 4762)
@@ -1338,6 +1338,11 @@
                         mtex.use_map_alpha = True
                         mtex.alpha_factor = 1.0
 
+            # propagate mapping from diffuse to all other channels which have none defined.
+            if use_cycles:
+                ma_wrap = cycles_material_wrap_map[material]
+                ma_wrap.mapping_set_from_diffuse()
+
     _(); del _
 
     def _():



More information about the Bf-extensions-cvs mailing list