Skip to content

Commit

Permalink
merge main into blender-v3.1-release
Browse files Browse the repository at this point in the history
  • Loading branch information
lpierabella committed Mar 22, 2022
1 parent 3534f88 commit 4e6b970
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 14 deletions.
2 changes: 1 addition & 1 deletion addons/io_scene_gltf2_msfs/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"author": "Luca Pierabella, Wing42, pepperoni505, ronh991, tml1024, and others",
"description": "This toolkit prepares your 3D assets to be used for Microsoft Flight Simulator",
"blender": (3, 1, 0),
"version": (1, 1, 2),
"version": (1, 1, 3),
"location": "File > Import-Export",
"category": "Import-Export",
"tracker_url": "https://github.com/AsoboStudio/glTF-Blender-IO-MSFS"
Expand Down
18 changes: 12 additions & 6 deletions addons/io_scene_gltf2_msfs/blender/msfs_material_function.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,12 +205,16 @@ def createNodetree(self):
self.nodebsdf = self.addNode(
"ShaderNodeBsdfPrincipled", {"location": (500.0, 0.0), "hide": False}
)
gltfSettingsNodeTree = bpy.data.node_groups.new(
"glTF Settings", "ShaderNodeTree"
)
gltfSettingsNodeTree.nodes.new("NodeGroupInput")
gltfSettingsNodeTree.inputs.new("NodeSocketFloat", "Occlusion")
gltfSettingsNodeTree.inputs[0].default_value = 1.000
if bpy.data.node_groups.get(MSFS_ShaderNodes.glTFSettings.value):
gltfSettingsNodeTree = bpy.data.node_groups[MSFS_ShaderNodes.glTFSettings.value]
else:
gltfSettingsNodeTree = bpy.data.node_groups.new(
"glTF Settings", "ShaderNodeTree"
)
gltfSettingsNodeTree.nodes.new("NodeGroupInput")
gltfSettingsNodeTree.inputs.new("NodeSocketFloat", "Occlusion")
gltfSettingsNodeTree.inputs[0].default_value = 1.000

self.nodeglTFSettings = self.addNode(
"ShaderNodeGroup",
{
Expand Down Expand Up @@ -743,11 +747,13 @@ def setNormalScale(self, scale):
def setDetailNormalTex(self, tex):
self.nodeDetailNormalTex = self.getNode(MSFS_ShaderNodes.detailNormalTex.value)
self.nodeDetailNormalTex.image = tex
self.nodeDetailNormalTex.image.colorspace_settings.name = "Non-Color"
self.updateNormalLinks()

def setNormalTex(self, tex):
self.nodeNormalTex = self.getNode(MSFS_ShaderNodes.normalTex.value)
self.nodeNormalTex.image = tex
self.nodeNormalTex.image.colorspace_settings.name = "Non-Color"
self.updateNormalLinks()

def updateNormalLinks(self):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def getMaterial(mat):
return MSFS_Invisible(mat)
elif mat.msfs_material_type == "msfs_fake_terrain":
return MSFS_Fake_Terrain(mat)
elif mat.msfs_material_type == "msfs_fresnel":
elif mat.msfs_material_type == "msfs_fresnel_fade":
return MSFS_Fresnel_Fade(mat)
elif mat.msfs_material_type == "msfs_env_occluder":
return MSFS_Environment_Occluder(mat)
Expand Down
3 changes: 3 additions & 0 deletions addons/io_scene_gltf2_msfs/io/msfs_gizmo.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,9 @@ def export(nodes, blender_scene, export_settings):
child.name
) # The glTF exporter will ALWAYS set the node name as the blender name

if blender_object is None: # However, there are cases where the exporter creates fake nodes that don't exist in the scene
continue

if (
blender_object.parent is None or blender_object.parent.type != "MESH"
): # We only need the collision gizmos that are parented to a mesh
Expand Down
5 changes: 5 additions & 0 deletions addons/io_scene_gltf2_msfs/io/msfs_light.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,11 @@ def create(gltf2_node, blender_node, blender_light, import_settings):

@staticmethod
def export(gltf2_object, blender_object):
# First, clear all KHR_lights_punctual extensions from children. TODO: remove children?
for child in gltf2_object.children:
if child.extensions and child.extensions.get("KHR_lights_punctual"):
child.extensions.pop("KHR_lights_punctual")

angle = 360.0
if blender_object.data.type == 'SPOT':
angle = (180.0 / math.pi) * blender_object.data.spot_size
Expand Down
13 changes: 7 additions & 6 deletions addons/io_scene_gltf2_msfs/io/msfs_multi_export.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,25 +92,26 @@ def execute(self, context):
)
lods = etree.SubElement(root, "LODS")

lod_values = []
lod_files = {}

for lod in lod_group.lods:
if not MSFS_LODGroupUtility.lod_is_visible(context, lod):
continue

if lod.enabled:
lod_values.append(lod.lod_value)
lod_values = sorted(lod_values, reverse=True)
lod_files[lod.file_name] = lod.lod_value

for lod_value in lod_values:
lod_files = sorted(lod_files.items(), reverse=True)

for file_name, lod_value in lod_files:
etree.SubElement(
lods,
"LOD",
minSize=str(lod_value),
ModelFile=os.path.splitext(lod.file_name)[0] + ".gltf",
ModelFile=os.path.splitext(file_name)[0] + ".gltf",
)

if lod_values:
if lod_files:
# Format XML
dom = xml.dom.minidom.parseString(etree.tostring(root))
xml_string = dom.toprettyxml(encoding="utf-8")
Expand Down

0 comments on commit 4e6b970

Please sign in to comment.