[Bf-extensions-cvs] [6790f39c] master: glTF importer: code refactoring, texture node + mapping + UVMap
Julien Duroure
noreply at git.blender.org
Wed Nov 13 22:00:27 CET 2019
Commit: 6790f39ca64ddfe9c3b00666f4b4f78004e754ab
Author: Julien Duroure
Date: Wed Nov 13 21:59:45 2019 +0100
Branches: master
https://developer.blender.org/rBA6790f39ca64ddfe9c3b00666f4b4f78004e754ab
glTF importer: code refactoring, texture node + mapping + UVMap
===================================================================
M io_scene_gltf2/__init__.py
M io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_pbrSpecularGlossiness.py
M io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_unlit.py
M io_scene_gltf2/blender/imp/gltf2_blender_image.py
M io_scene_gltf2/blender/imp/gltf2_blender_map_emissive.py
M io_scene_gltf2/blender/imp/gltf2_blender_map_normal.py
M io_scene_gltf2/blender/imp/gltf2_blender_map_occlusion.py
M io_scene_gltf2/blender/imp/gltf2_blender_material.py
A io_scene_gltf2/blender/imp/gltf2_blender_material_utils.py
M io_scene_gltf2/blender/imp/gltf2_blender_mesh.py
M io_scene_gltf2/blender/imp/gltf2_blender_pbrMetallicRoughness.py
M io_scene_gltf2/blender/imp/gltf2_blender_primitive.py
===================================================================
diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py
index e92d8bee..cddc50fd 100755
--- a/io_scene_gltf2/__init__.py
+++ b/io_scene_gltf2/__init__.py
@@ -15,7 +15,7 @@
bl_info = {
'name': 'glTF 2.0 format',
'author': 'Julien Duroure, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors',
- "version": (1, 1, 4),
+ "version": (1, 1, 5),
'blender': (2, 81, 6),
'location': 'File > Import-Export',
'description': 'Import-Export as glTF 2.0',
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_pbrSpecularGlossiness.py b/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_pbrSpecularGlossiness.py
index 387db56f..7e5e11e4 100755
--- a/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_pbrSpecularGlossiness.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_pbrSpecularGlossiness.py
@@ -13,8 +13,8 @@
# limitations under the License.
import bpy
-from .gltf2_blender_texture import BlenderTextureInfo
-from ..com.gltf2_blender_conversion import texture_transform_gltf_to_blender
+from .gltf2_blender_material_utils import make_texture_block
+from ...io.com.gltf2_io import TextureInfo
class BlenderKHR_materials_pbrSpecularGlossiness():
@@ -87,18 +87,15 @@ class BlenderKHR_materials_pbrSpecularGlossiness():
math_vc_B = node_tree.nodes.new('ShaderNodeMath')
math_vc_B.operation = 'MULTIPLY'
- BlenderTextureInfo.create(gltf, pbrSG['diffuseTexture'], dict_=True)
-
# create UV Map / Mapping / Texture nodes / separate & math and combine
- text_node = node_tree.nodes.new('ShaderNodeTexImage')
- if gltf.data.images[
- gltf.data.textures[pbrSG['diffuseTexture']['index']].source].blender_image_name is not None:
- text_node.image = \
- bpy.data.images[
- gltf.data.images[
- gltf.data.textures[pbrSG['diffuseTexture']['index']].source].blender_image_name
- ]
- text_node.location = -1000, 500
+ text_node = make_texture_block(
+ gltf,
+ node_tree,
+ TextureInfo.from_dict(pbrSG['diffuseTexture']),
+ location=(-1000, 500),
+ label='DIFFUSE',
+ name='diffuseTexture',
+ )
combine = node_tree.nodes.new('ShaderNodeCombineRGB')
combine.location = -250, 500
@@ -121,24 +118,6 @@ class BlenderKHR_materials_pbrSpecularGlossiness():
separate = node_tree.nodes.new('ShaderNodeSeparateRGB')
separate.location = -750, 500
- mapping = node_tree.nodes.new('ShaderNodeMapping')
- mapping.location = -1500, 500
- mapping.vector_type = 'POINT'
- tex_transform = text_node.image['tex_transform'][str(pbrSG['diffuseTexture']['index'])]
- mapping.inputs['Location'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0]
- mapping.inputs['Location'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1]
- mapping.inputs['Rotation'].default_value[2] = texture_transform_gltf_to_blender(tex_transform)['rotation']
- mapping.inputs['Scale'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0]
- mapping.inputs['Scale'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1]
-
- uvmap = node_tree.nodes.new('ShaderNodeUVMap')
- uvmap.location = -2000, 500
- if 'texCoord' in pbrSG['diffuseTexture'].keys():
- uvmap["gltf2_texcoord"] = pbrSG['diffuseTexture']['texCoord'] # Set custom flag to retrieve TexCoord
- else:
- uvmap["gltf2_texcoord"] = 0 # TODO: set in precompute instead of here?
- # UV Map will be set after object/UVMap creation
-
# Create links
if vertex_color:
node_tree.links.new(separate_vertex_color.inputs[0], vertexcolor_node.outputs[0])
@@ -162,16 +141,12 @@ class BlenderKHR_materials_pbrSpecularGlossiness():
node_tree.links.new(math_G.inputs[0], separate.outputs[1])
node_tree.links.new(math_B.inputs[0], separate.outputs[2])
- node_tree.links.new(mapping.inputs[0], uvmap.outputs[0])
- node_tree.links.new(text_node.inputs[0], mapping.outputs[0])
node_tree.links.new(separate.inputs[0], text_node.outputs[0])
node_tree.links.new(diffuse.inputs[0], combine.outputs[0])
elif pbrSG['diffuse_type'] == gltf.TEXTURE:
- BlenderTextureInfo.create(gltf, pbrSG['diffuseTexture'], dict_=True)
-
# TODO alpha ?
if vertex_color:
# Create vertexcolor / separate / math nodes
@@ -201,41 +176,18 @@ class BlenderKHR_materials_pbrSpecularGlossiness():
separate.location = -1500, 500
# create UV Map / Mapping / Texture nodes / separate & math and combine
- text_node = node_tree.nodes.new('ShaderNodeTexImage')
- if gltf.data.images[
- gltf.data.textures[pbrSG['diffuseTexture']['index']].source].blender_image_name is not None:
- text_node.image = bpy.data.images[
- gltf.data.images[gltf.data.textures[pbrSG['diffuseTexture']['index']].source].blender_image_name
- ]
- if vertex_color:
- text_node.location = -2000, 500
- else:
- text_node.location = -500, 500
-
- mapping = node_tree.nodes.new('ShaderNodeMapping')
- if vertex_color:
- mapping.location = -2500, 500
- else:
- mapping.location = -1500, 500
- mapping.vector_type = 'POINT'
- tex_transform = text_node.image['tex_transform'][str(pbrSG['diffuseTexture']['index'])]
- mapping.inputs['Location'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0]
- mapping.inputs['Location'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1]
- mapping.inputs['Rotation'].default_value[2] = texture_transform_gltf_to_blender(tex_transform)['rotation']
- mapping.inputs['Scale'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0]
- mapping.inputs['Scale'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1]
-
-
- uvmap = node_tree.nodes.new('ShaderNodeUVMap')
if vertex_color:
- uvmap.location = -3000, 500
- else:
- uvmap.location = -2000, 500
- if 'texCoord' in pbrSG['diffuseTexture'].keys():
- uvmap["gltf2_texcoord"] = pbrSG['diffuseTexture']['texCoord'] # Set custom flag to retrieve TexCoord
+ location = (-2000, 500)
else:
- uvmap["gltf2_texcoord"] = 0 # TODO: set in precompute instead of here?
- # UV Map will be set after object/UVMap creation
+ location = (-500, 500)
+ text_node = text_node = make_texture_block(
+ gltf,
+ node_tree,
+ TextureInfo.from_dict(pbrSG['diffuseTexture']),
+ location=location,
+ label='DIFFUSE',
+ name='diffuseTexture',
+ )
# Create links
if vertex_color:
@@ -260,11 +212,6 @@ class BlenderKHR_materials_pbrSpecularGlossiness():
else:
node_tree.links.new(diffuse.inputs[0], text_node.outputs[0])
- # Common for both mode (non vertex color / vertex color)
-
- node_tree.links.new(mapping.inputs[0], uvmap.outputs[0])
- node_tree.links.new(text_node.inputs[0], mapping.outputs[0])
-
if pbrSG['specgloss_type'] == gltf.SIMPLE:
combine = node_tree.nodes.new('ShaderNodeCombineRGB')
@@ -276,85 +223,36 @@ class BlenderKHR_materials_pbrSpecularGlossiness():
node_tree.links.new(glossy.inputs[0], combine.outputs[0])
elif pbrSG['specgloss_type'] == gltf.TEXTURE:
- BlenderTextureInfo.create(gltf, pbrSG['specularGlossinessTexture'], dict_=True)
- spec_text = node_tree.nodes.new('ShaderNodeTexImage')
- if gltf.data.images[
- gltf.data.textures[pbrSG['specularGlossinessTexture']['index']].source
- ].blender_image_name is not None:
- spec_text.image = bpy.data.images[
- gltf.data.images[
- gltf.data.textures[pbrSG['specularGlossinessTexture']['index']].source
- ].blender_image_name
- ]
- if spec_text.image:
- spec_text.image.colorspace_settings.is_data = True
- spec_text.location = -500, 0
-
- spec_mapping = node_tree.nodes.new('ShaderNodeMapping')
- spec_mapping.location = -1000, 0
- spec_mapping.vector_type = 'POINT'
- tex_transform = spec_text.image['tex_transform'][str(pbrSG['specularGlossinessTexture']['index'])]
- spec_mapping.inputs['Location'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0]
- spec_mapping.inputs['Location'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1]
- spec_mapping.inputs['Rotation'].default_value[2] = texture_transform_gltf_to_blender(tex_transform)['rotation']
- spec_mapping.inputs['Scale'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0]
- spec_mapping.inputs['Scale'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1]
-
-
- spec_uvmap = node_tree.nodes.new('ShaderNodeUVMap')
- spec_uvmap.location = -1500, 0
- if 'texCoord' in pbrSG['specularGlossinessTexture'].keys():
- # Set custom flag to retriev
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list