def __init__(self, copyright=None):
        self.__finalized = False

        asset = gltf2_io.Asset(copyright=copyright,
                               extensions=None,
                               extras=None,
                               generator='Khronos Blender glTF 2.0 I/O',
                               min_version=None,
                               version='2.0')

        self.__gltf = gltf2_io.Gltf(accessors=[],
                                    animations=[],
                                    asset=asset,
                                    buffers=[],
                                    buffer_views=[],
                                    cameras=[],
                                    extensions={},
                                    extensions_required=[],
                                    extensions_used=[],
                                    extras=None,
                                    images=[],
                                    materials=[],
                                    meshes=[],
                                    nodes=[],
                                    samplers=[],
                                    scene=-1,
                                    scenes=[],
                                    skins=[],
                                    textures=[])

        self.__buffer = gltf2_io_buffer.Buffer()
        self.__images = []

        # mapping of all glTFChildOfRootProperty types to their corresponding root level arrays
        self.__childOfRootPropertyTypeLookup = {
            gltf2_io.Accessor: self.__gltf.accessors,
            gltf2_io.Animation: self.__gltf.animations,
            gltf2_io.Buffer: self.__gltf.buffers,
            gltf2_io.BufferView: self.__gltf.buffer_views,
            gltf2_io.Camera: self.__gltf.cameras,
            gltf2_io.Image: self.__gltf.images,
            gltf2_io.Material: self.__gltf.materials,
            gltf2_io.Mesh: self.__gltf.meshes,
            gltf2_io.Node: self.__gltf.nodes,
            gltf2_io.Sampler: self.__gltf.samplers,
            gltf2_io.Scene: self.__gltf.scenes,
            gltf2_io.Skin: self.__gltf.skins,
            gltf2_io.Texture: self.__gltf.textures
        }

        self.__propertyTypeLookup = [
            gltf2_io.AccessorSparseIndices, gltf2_io.AccessorSparse,
            gltf2_io.AccessorSparseValues, gltf2_io.AnimationChannel,
            gltf2_io.AnimationChannelTarget, gltf2_io.AnimationSampler,
            gltf2_io.Asset, gltf2_io.CameraOrthographic,
            gltf2_io.CameraPerspective, gltf2_io.MeshPrimitive,
            gltf2_io.TextureInfo, gltf2_io.MaterialPBRMetallicRoughness,
            gltf2_io.MaterialNormalTextureInfoClass,
            gltf2_io.MaterialOcclusionTextureInfoClass
        ]
Esempio n. 2
0
    def __init__(self, export_settings):
        self.export_settings = export_settings
        self.__finalized = False

        copyright = export_settings[
            gltf2_blender_export_keys.COPYRIGHT] or None
        asset = gltf2_io.Asset(copyright=copyright,
                               extensions=None,
                               extras=None,
                               generator='Khronos glTF Blender I/O v' +
                               get_version_string(),
                               min_version=None,
                               version='2.0')

        self.component_nb_dict = {}
        self.component_nb_dict['SCALAR'] = 1
        self.component_nb_dict['VEC2'] = 2
        self.component_nb_dict['VEC3'] = 3
        self.component_nb_dict['VEC4'] = 4
        self.component_nb_dict['MAT2'] = 4
        self.component_nb_dict['MAT3'] = 9
        self.component_nb_dict['MAT4'] = 16

        self.__gltf = gltf2_io.Gltf(accessors=[],
                                    animations=[],
                                    asset=asset,
                                    buffers=[],
                                    buffer_views=[],
                                    cameras=[],
                                    extensions={},
                                    extensions_required=[],
                                    extensions_used=[],
                                    extras=None,
                                    images=[],
                                    materials=[],
                                    meshes=[],
                                    nodes=[],
                                    samplers=[],
                                    scene=-1,
                                    scenes=[],
                                    skins=[],
                                    textures=[])

        self.__buffer = gltf2_io_buffer.Buffer()
        self.__images = {}

        # mapping of all glTFChildOfRootProperty types to their corresponding root level arrays
        self.__childOfRootPropertyTypeLookup = {
            gltf2_io.Accessor: self.__gltf.accessors,
            gltf2_io.Animation: self.__gltf.animations,
            gltf2_io.Buffer: self.__gltf.buffers,
            gltf2_io.BufferView: self.__gltf.buffer_views,
            gltf2_io.Camera: self.__gltf.cameras,
            gltf2_io.Image: self.__gltf.images,
            gltf2_io.Material: self.__gltf.materials,
            gltf2_io.Mesh: self.__gltf.meshes,
            gltf2_io.Node: self.__gltf.nodes,
            gltf2_io.Sampler: self.__gltf.samplers,
            gltf2_io.Scene: self.__gltf.scenes,
            gltf2_io.Skin: self.__gltf.skins,
            gltf2_io.Texture: self.__gltf.textures
        }

        self.__propertyTypeLookup = [
            gltf2_io.AccessorSparseIndices, gltf2_io.AccessorSparse,
            gltf2_io.AccessorSparseValues, gltf2_io.AnimationChannel,
            gltf2_io.AnimationChannelTarget, gltf2_io.AnimationSampler,
            gltf2_io.Asset, gltf2_io.CameraOrthographic,
            gltf2_io.CameraPerspective, gltf2_io.MeshPrimitive,
            gltf2_io.TextureInfo, gltf2_io.MaterialPBRMetallicRoughness,
            gltf2_io.MaterialNormalTextureInfoClass,
            gltf2_io.MaterialOcclusionTextureInfoClass
        ]

        # These are the 8 predefined buffer views that asobo models use
        # No other buffer views should be created
        self.__asobo_buffer_views = {
            'bufferViewFloatMat4': None,
            'bufferViewAnimationFloatScalar': None,
            'bufferViewAnimationFloatVec3': None,
            'bufferViewAnimationFloatVec4': None,
            'BufferViewVertexND': None,
            'BufferViewIndex': None,
            'BufferViewVertex4Blend': None,
            'BufferViewVertex1Blend': None,
        }

        self.__asobo_buffer_views['bufferViewFloatMat4'] = gltf2_io.BufferView(
            buffer=gltf2_io_asobo_buffer.AsoboBuffer(),
            byte_length=0,
            byte_offset=None,
            byte_stride=None,
            extensions=None,
            extras=None,
            name='bufferViewFloatMat4',
            target=None)
        self.__gltf.buffer_views.append(
            self.__asobo_buffer_views['bufferViewFloatMat4'])

        self.__asobo_buffer_views[
            'bufferViewAnimationFloatScalar'] = gltf2_io.BufferView(
                buffer=gltf2_io_asobo_buffer.AsoboBuffer(),
                byte_length=0,
                byte_offset=0,
                byte_stride=None,
                extensions=None,
                extras=None,
                name='bufferViewAnimationFloatScalar',
                target=None)
        self.__gltf.buffer_views.append(
            self.__asobo_buffer_views['bufferViewAnimationFloatScalar'])

        self.__asobo_buffer_views[
            'bufferViewAnimationFloatVec3'] = gltf2_io.BufferView(
                buffer=gltf2_io_asobo_buffer.AsoboBuffer(),
                byte_length=0,
                byte_offset=0,
                byte_stride=None,
                extensions=None,
                extras=None,
                name='bufferViewAnimationFloatVec3',
                target=None)
        self.__gltf.buffer_views.append(
            self.__asobo_buffer_views['bufferViewAnimationFloatVec3'])

        self.__asobo_buffer_views[
            'bufferViewAnimationFloatVec4'] = gltf2_io.BufferView(
                buffer=gltf2_io_asobo_buffer.AsoboBuffer(),
                byte_length=0,
                byte_offset=0,
                byte_stride=None,
                extensions=None,
                extras=None,
                name='bufferViewAnimationFloatVec4',
                target=None)
        self.__gltf.buffer_views.append(
            self.__asobo_buffer_views['bufferViewAnimationFloatVec4'])

        self.__asobo_buffer_views['BufferViewVertexND'] = gltf2_io.BufferView(
            buffer=gltf2_io_asobo_buffer.AsoboBuffer(),
            byte_length=0,
            byte_offset=0,
            byte_stride=36,
            extensions=None,
            extras=None,
            name='BufferViewVertexND',
            target=34962)
        self.__gltf.buffer_views.append(
            self.__asobo_buffer_views['BufferViewVertexND'])

        self.__asobo_buffer_views['BufferViewIndex'] = gltf2_io.BufferView(
            buffer=gltf2_io_asobo_buffer.AsoboBuffer(),
            byte_length=0,
            byte_offset=0,
            byte_stride=None,
            extensions=None,
            extras=None,
            name='BufferViewIndex',
            target=34963)
        self.__gltf.buffer_views.append(
            self.__asobo_buffer_views['BufferViewIndex'])

        self.__asobo_buffer_views[
            'BufferViewVertex4Blend'] = gltf2_io.BufferView(
                buffer=gltf2_io_asobo_buffer.AsoboBuffer(),
                byte_length=0,
                byte_offset=0,
                byte_stride=48,
                extensions=None,
                extras=None,
                name='BufferViewVertex4Blend',
                target=34962)
        self.__gltf.buffer_views.append(
            self.__asobo_buffer_views['BufferViewVertex4Blend'])

        self.__asobo_buffer_views[
            'BufferViewVertex1Blend'] = gltf2_io.BufferView(
                buffer=gltf2_io_asobo_buffer.AsoboBuffer(),
                byte_length=0,
                byte_offset=0,
                byte_stride=44,
                extensions=None,
                extras=None,
                name='BufferViewVertex1Blend',
                target=34962)
        self.__gltf.buffer_views.append(
            self.__asobo_buffer_views['BufferViewVertex1Blend'])