[Bf-extensions-cvs] [8304b9ba] blender-v2.82-release: glTF exporter: convert extensions to dict
Julien Duroure
noreply at git.blender.org
Fri Jan 10 22:00:15 CET 2020
Commit: 8304b9bac7dcd34a85e93cbb23c25a28cbee763d
Author: Julien Duroure
Date: Fri Jan 10 21:58:16 2020 +0100
Branches: blender-v2.82-release
https://developer.blender.org/rBA8304b9bac7dcd34a85e93cbb23c25a28cbee763d
glTF exporter: convert extensions to dict
===================================================================
M io_scene_gltf2/__init__.py
M io_scene_gltf2/io/com/gltf2_io.py
===================================================================
diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py
index d8381d0c..ab7946b5 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, 36),
+ "version": (1, 1, 37),
'blender': (2, 81, 6),
'location': 'File > Import-Export',
'description': 'Import-Export as glTF 2.0',
diff --git a/io_scene_gltf2/io/com/gltf2_io.py b/io_scene_gltf2/io/com/gltf2_io.py
index 790ab52c..b8c4b9dd 100755
--- a/io_scene_gltf2/io/com/gltf2_io.py
+++ b/io_scene_gltf2/io/com/gltf2_io.py
@@ -19,6 +19,10 @@
# TODO: add __slots__ to all classes by extending the generator
# TODO: REMOVE traceback import
+
+# NOTE: this file is modified for addonExtension use. See
+# https://github.com/KhronosGroup/glTF-Blender-IO/commit/62ff119d8ffeab48f66e9d2699741407d532fe0f
+
import sys
import traceback
@@ -87,6 +91,25 @@ def to_float(x):
return x
+def extension_to_dict(obj):
+ if hasattr(obj, 'to_list'):
+ obj = obj.to_list()
+ if hasattr(obj, 'to_dict'):
+ obj = obj.to_dict()
+ if isinstance(obj, list):
+ return [extension_to_dict(x) for x in obj]
+ elif isinstance(obj, dict):
+ return {k: extension_to_dict(v) for (k, v) in obj.items()}
+ return obj
+
+def from_extension(x):
+ x = extension_to_dict(x)
+ assert isinstance(x, dict)
+ return x
+
+def from_extra(x):
+ return extension_to_dict(x)
+
class AccessorSparseIndices:
"""Index array of size `count` that points to those accessor attributes that deviate from
their initialization value. Indices must strictly increase.
@@ -117,9 +140,9 @@ class AccessorSparseIndices:
result["bufferView"] = from_int(self.buffer_view)
result["byteOffset"] = from_union([from_int, from_none], self.byte_offset)
result["componentType"] = from_int(self.component_type)
- result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+ result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
self.extensions)
- result["extras"] = self.extras
+ result["extras"] = from_extra(self.extras)
return result
@@ -152,9 +175,9 @@ class AccessorSparseValues:
result = {}
result["bufferView"] = from_int(self.buffer_view)
result["byteOffset"] = from_union([from_int, from_none], self.byte_offset)
- result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+ result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
self.extensions)
- result["extras"] = self.extras
+ result["extras"] = from_extra(self.extras)
return result
@@ -182,9 +205,9 @@ class AccessorSparse:
def to_dict(self):
result = {}
result["count"] = from_int(self.count)
- result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+ result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
self.extensions)
- result["extras"] = self.extras
+ result["extras"] = from_extra(self.extras)
result["indices"] = to_class(AccessorSparseIndices, self.indices)
result["values"] = to_class(AccessorSparseValues, self.values)
return result
@@ -236,9 +259,9 @@ class Accessor:
result["byteOffset"] = from_union([from_int, from_none], self.byte_offset)
result["componentType"] = from_int(self.component_type)
result["count"] = from_int(self.count)
- result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+ result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
self.extensions)
- result["extras"] = self.extras
+ result["extras"] = from_extra(self.extras)
result["max"] = from_union([lambda x: from_list(to_float, x), from_none], self.max)
result["min"] = from_union([lambda x: from_list(to_float, x), from_none], self.min)
result["name"] = from_union([from_str, from_none], self.name)
@@ -272,9 +295,9 @@ class AnimationChannelTarget:
def to_dict(self):
result = {}
- result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+ result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
self.extensions)
- result["extras"] = self.extras
+ result["extras"] = from_extra(self.extras)
result["node"] = from_union([from_int, from_none], self.node)
result["path"] = from_str(self.path)
return result
@@ -301,9 +324,9 @@ class AnimationChannel:
def to_dict(self):
result = {}
- result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+ result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
self.extensions)
- result["extras"] = self.extras
+ result["extras"] = from_extra(self.extras)
result["sampler"] = from_int(self.sampler)
result["target"] = to_class(AnimationChannelTarget, self.target)
return result
@@ -334,9 +357,9 @@ class AnimationSampler:
def to_dict(self):
result = {}
- result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+ result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
self.extensions)
- result["extras"] = self.extras
+ result["extras"] = from_extra(self.extras)
result["input"] = from_int(self.input)
result["interpolation"] = from_union([from_str, from_none], self.interpolation)
result["output"] = from_int(self.output)
@@ -367,9 +390,9 @@ class Animation:
def to_dict(self):
result = {}
result["channels"] = from_list(lambda x: to_class(AnimationChannel, x), self.channels)
- result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+ result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
self.extensions)
- result["extras"] = self.extras
+ result["extras"] = from_extra(self.extras)
result["name"] = from_union([from_str, from_none], self.name)
result["samplers"] = from_list(lambda x: to_class(AnimationSampler, x), self.samplers)
return result
@@ -401,9 +424,9 @@ class Asset:
def to_dict(self):
result = {}
result["copyright"] = from_union([from_str, from_none], self.copyright)
- result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+ result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
self.extensions)
- result["extras"] = self.extras
+ result["extras"] = from_extra(self.extras)
result["generator"] = from_union([from_str, from_none], self.generator)
result["minVersion"] = from_union([from_str, from_none], self.min_version)
result["version"] = from_str(self.version)
@@ -443,9 +466,9 @@ class BufferView:
result["byteLength"] = from_int(self.byte_length)
result["byteOffset"] = from_union([from_int, from_none], self.byte_offset)
result["byteStride"] = from_union([from_int, from_none], self.byte_stride)
- result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+ result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
self.extensions)
- result["extras"] = self.extras
+ result["extras"] = from_extra(self.extras)
result["name"] = from_union([from_str, from_none], self.name)
result["target"] = from_union([from_int, from_none], self.target)
return result
@@ -475,9 +498,9 @@ class Buffer:
def to_dict(self):
result = {}
result["byteLength"] = from_int(self.byte_length)
- result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+ result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
self.extensions)
- result["extras"] = self.extras
+ result["extras"] = from_extra(self.extras)
result["name"] = from_union([from_str, from_none], self.name)
result["uri"] = from_union([from_str, from_none], self.uri)
return result
@@ -508,9 +531,9 @@ class CameraOrthographic:
def to_dict(self):
result = {}
- result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict(lambda x: x, x), x), from_none],
+ result["extensions"] = from_union([lambda x: from_dict(from_extension, x), from_none],
self.extensions)
- result["extras"] = self.extras
+ result["extras"] = from_extra(self.extras)
result["xmag"] = to_float(self.xmag)
result["ymag"] = to_float(self.ymag)
result["zfar"] = to_float(self.zfar)
@@ -544,9 +567,9 @@ class CameraPerspective:
def to_dict(self):
result = {}
result["aspectRatio"] = from_union([to_float, from_none], self.aspect_ratio)
- result["extensions"] = from_union([lambda x: from_dict(lambda x: from_dict
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list