From af05f2ae213839145ab8fc0cf3629caaf65900f4 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Fri, 7 Aug 2020 14:17:13 +0800 Subject: [PATCH] fully finish bm import/export function --- .gitattributes | 2 + ballance_blender_plugin/bm_import_export.py | 140 ++++++++++--- ballance_blender_plugin/config.py | 188 ++++++++++-------- .../meshes/PC_TwoFlames.bin | Bin 0 -> 4404 bytes ballance_blender_plugin/meshes/PE_Balloon.bin | Bin 0 -> 16548 bytes .../meshes/PR_Resetpoint.bin | Bin 0 -> 2892 bytes .../meshes/PS_FourFlames.bin | Bin 0 -> 7044 bytes .../meshes/P_Ball_Paper.bin | Bin 0 -> 1212 bytes .../meshes/P_Ball_Stone.bin | Bin 0 -> 1212 bytes .../meshes/P_Ball_Wood.bin | Bin 0 -> 1212 bytes ballance_blender_plugin/meshes/P_Box.bin | Bin 0 -> 732 bytes ballance_blender_plugin/meshes/P_Dome.bin | Bin 0 -> 4452 bytes .../meshes/P_Extra_Life.bin | Bin 0 -> 4260 bytes .../meshes/P_Extra_Point.bin | Bin 0 -> 6444 bytes ballance_blender_plugin/meshes/P_Modul_01.bin | Bin 0 -> 5052 bytes ballance_blender_plugin/meshes/P_Modul_03.bin | Bin 0 -> 11364 bytes ballance_blender_plugin/meshes/P_Modul_08.bin | Bin 0 -> 3372 bytes ballance_blender_plugin/meshes/P_Modul_17.bin | Bin 0 -> 4188 bytes ballance_blender_plugin/meshes/P_Modul_18.bin | Bin 0 -> 1884 bytes ballance_blender_plugin/meshes/P_Modul_19.bin | Bin 0 -> 6732 bytes ballance_blender_plugin/meshes/P_Modul_25.bin | Bin 0 -> 2316 bytes ballance_blender_plugin/meshes/P_Modul_26.bin | Bin 0 -> 5244 bytes ballance_blender_plugin/meshes/P_Modul_29.bin | Bin 0 -> 5196 bytes ballance_blender_plugin/meshes/P_Modul_30.bin | Bin 0 -> 3180 bytes ballance_blender_plugin/meshes/P_Modul_34.bin | Bin 0 -> 2892 bytes ballance_blender_plugin/meshes/P_Modul_37.bin | Bin 0 -> 4908 bytes ballance_blender_plugin/meshes/P_Modul_41.bin | Bin 0 -> 3564 bytes .../meshes/P_Trafo_Paper.bin | Bin 0 -> 396 bytes .../meshes/P_Trafo_Stone.bin | Bin 0 -> 396 bytes .../meshes/P_Trafo_Wood.bin | Bin 0 -> 396 bytes 30 files changed, 219 insertions(+), 111 deletions(-) create mode 100644 .gitattributes create mode 100644 ballance_blender_plugin/meshes/PC_TwoFlames.bin create mode 100644 ballance_blender_plugin/meshes/PE_Balloon.bin create mode 100644 ballance_blender_plugin/meshes/PR_Resetpoint.bin create mode 100644 ballance_blender_plugin/meshes/PS_FourFlames.bin create mode 100644 ballance_blender_plugin/meshes/P_Ball_Paper.bin create mode 100644 ballance_blender_plugin/meshes/P_Ball_Stone.bin create mode 100644 ballance_blender_plugin/meshes/P_Ball_Wood.bin create mode 100644 ballance_blender_plugin/meshes/P_Box.bin create mode 100644 ballance_blender_plugin/meshes/P_Dome.bin create mode 100644 ballance_blender_plugin/meshes/P_Extra_Life.bin create mode 100644 ballance_blender_plugin/meshes/P_Extra_Point.bin create mode 100644 ballance_blender_plugin/meshes/P_Modul_01.bin create mode 100644 ballance_blender_plugin/meshes/P_Modul_03.bin create mode 100644 ballance_blender_plugin/meshes/P_Modul_08.bin create mode 100644 ballance_blender_plugin/meshes/P_Modul_17.bin create mode 100644 ballance_blender_plugin/meshes/P_Modul_18.bin create mode 100644 ballance_blender_plugin/meshes/P_Modul_19.bin create mode 100644 ballance_blender_plugin/meshes/P_Modul_25.bin create mode 100644 ballance_blender_plugin/meshes/P_Modul_26.bin create mode 100644 ballance_blender_plugin/meshes/P_Modul_29.bin create mode 100644 ballance_blender_plugin/meshes/P_Modul_30.bin create mode 100644 ballance_blender_plugin/meshes/P_Modul_34.bin create mode 100644 ballance_blender_plugin/meshes/P_Modul_37.bin create mode 100644 ballance_blender_plugin/meshes/P_Modul_41.bin create mode 100644 ballance_blender_plugin/meshes/P_Trafo_Paper.bin create mode 100644 ballance_blender_plugin/meshes/P_Trafo_Stone.bin create mode 100644 ballance_blender_plugin/meshes/P_Trafo_Wood.bin diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..bc62197 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# our generated mesh should be save as binary +*.bin binary \ No newline at end of file diff --git a/ballance_blender_plugin/bm_import_export.py b/ballance_blender_plugin/bm_import_export.py index 2696980..b9a04a2 100644 --- a/ballance_blender_plugin/bm_import_export.py +++ b/ballance_blender_plugin/bm_import_export.py @@ -45,7 +45,6 @@ class ExportBM(bpy.types.Operator, bpy_extras.io_utils.ExportHelper): export_bm(context, self.filepath, self.export_mode, self.export_target) return {'FINISHED'} - # ========================================== method bm_current_version = 11 @@ -286,21 +285,19 @@ def import_bm(context,filepath,externalTexture,blenderTempFolder): # create real object obj = bpy.data.objects.new(item.name, neededMesh) - obj.matrix_world = object_worldMatrix - obj.hide_viewport = object_isHidden - - - if (not object_isComponent) and object_isForcedNoComponent and (forcedCollection != None): + if (not object_isComponent) and object_isForcedNoComponent and (forcedCollection is not None): forcedCollection.objects.link(obj) else: collection.objects.link(obj) + obj.matrix_world = object_worldMatrix + obj.hide_set(object_isHidden) fobject.close() view_layer.update() tempFolderObj.cleanup() -def export_bm(context,filepath,export_mode, export_target, no_component_suffix): +def export_bm(context,filepath,export_mode, export_target): # ============================================ alloc a temp folder tempFolderObj = tempfile.TemporaryDirectory() tempFolder = tempFolderObj.name @@ -338,13 +335,13 @@ def export_bm(context,filepath,export_mode, export_target, no_component_suffix): # clean no mesh object currentMesh = obj.data - if currentMesh == None: + if currentMesh is None: continue # judge component object_isComponent = is_component(obj.name) object_isForcedNoComponent = False - if (forcedCollection != None) and (obj.name in forcedCollection.objects): + if (forcedCollection is not None) and (obj.name in forcedCollection.objects): # change it to forced no component object_isComponent = False object_isForcedNoComponent = True @@ -363,16 +360,17 @@ def export_bm(context,filepath,export_mode, export_target, no_component_suffix): meshId = get_component_id(obj.name) # get visibility - object_isHidden = obj.hide_viewport + object_isHidden = not obj.visible_get() # write finfo first write_string(finfo, obj.name) - write_uint32(finfo, info_bm_type.OBJECT) + write_uint8(finfo, info_bm_type.OBJECT) write_uint64(finfo, fobject.tell()) # write fobject write_bool(fobject, object_isComponent) write_bool(fobject, object_isForcedNoComponent) + print(object_isHidden) write_bool(fobject, object_isHidden) write_worldMatrix(fobject, obj.matrix_world) write_uint32(fobject, meshId) @@ -388,7 +386,7 @@ def export_bm(context,filepath,export_mode, export_target, no_component_suffix): # write finfo first write_string(finfo, mesh.name) - write_uint32(finfo, info_bm_type.MESH) + write_uint8(finfo, info_bm_type.MESH) write_uint64(finfo, fmesh.tell()) # write fmesh @@ -472,11 +470,10 @@ def export_bm(context,filepath,export_mode, export_target, no_component_suffix): textureSet = set() textureList = [] textureCount = 0 - # todo: texture filter have duplicated name error. fix it later for material in materialList: # write finfo first write_string(finfo, material.name) - write_uint32(finfo, info_bm_type.MATERIAL) + write_uint8(finfo, info_bm_type.MATERIAL) write_uint64(finfo, fmaterial.tell()) # try get original written data @@ -491,13 +488,13 @@ def export_bm(context,filepath,export_mode, export_target, no_component_suffix): if mat_wrap: use_mirror = mat_wrap.metallic != 0.0 if use_mirror: - set_value_when_none(material_colAmbient, (mat_wrap.metallic, mat_wrap.metallic, mat_wrap.metallic)) + material_colAmbient = set_value_when_none(material_colAmbient, (mat_wrap.metallic, mat_wrap.metallic, mat_wrap.metallic)) else: - set_value_when_none(material_colAmbient, (1.0, 1.0, 1.0)) - set_value_when_none(material_colDiffuse, (mat_wrap.base_color[0], mat_wrap.base_color[1], mat_wrap.base_color[2])) - set_value_when_none(material_colSpecular, (mat_wrap.specular, mat_wrap.specular, mat_wrap.specular)) - set_value_when_none(material_colEmissive, mat_wrap.emission_color[:3]) - set_value_when_none(material_specularPower, 0.0) + material_colAmbient = set_value_when_none(material_colAmbient, (1.0, 1.0, 1.0)) + material_colDiffuse = set_value_when_none(material_colDiffuse, (mat_wrap.base_color[0], mat_wrap.base_color[1], mat_wrap.base_color[2])) + material_colSpecular = set_value_when_none(material_colSpecular, (mat_wrap.specular, mat_wrap.specular, mat_wrap.specular)) + material_colEmissive = set_value_when_none(material_colEmissive, mat_wrap.emission_color[:3]) + material_specularPower = set_value_when_none(material_specularPower, 0.0) # confirm texture tex_wrap = getattr(mat_wrap, "base_color_texture", None) @@ -526,11 +523,11 @@ def export_bm(context,filepath,export_mode, export_target, no_component_suffix): else: # no Principled BSDF. write garbage - set_value_when_none(material_colAmbient, (0.8, 0.8, 0.8)) - set_value_when_none(material_colDiffuse, (0.8, 0.8, 0.8)) - set_value_when_none(material_colSpecular, (0.8, 0.8, 0.8)) - set_value_when_none(material_colEmissive, (0.8, 0.8, 0.8)) - set_value_when_none(material_specularPower, 0.0) + material_colAmbient = set_value_when_none(material_colAmbient, (0.8, 0.8, 0.8)) + material_colDiffuse = set_value_when_none(material_colDiffuse, (0.8, 0.8, 0.8)) + material_colSpecular = set_value_when_none(material_colSpecular, (0.8, 0.8, 0.8)) + material_colEmissive = set_value_when_none(material_colEmissive, (0.8, 0.8, 0.8)) + material_specularPower = set_value_when_none(material_specularPower, 0.0) material_useTexture = False material_texture = 0 @@ -553,7 +550,7 @@ def export_bm(context,filepath,export_mode, export_target, no_component_suffix): for texture in textureList: # write finfo first write_string(finfo, texture.name) - write_uint32(finfo, info_bm_type.TEXTURE) + write_uint8(finfo, info_bm_type.TEXTURE) write_uint64(finfo, ftexture.tell()) # confirm internal @@ -605,7 +602,68 @@ class info_block_helper(): self.blenderData = None def load_component(component_id): - return None + # get file first + compName = config.component_list[component_id] + selectedFile = os.path.join( + os.path.dirname(__file__), + 'meshes', + compName + '.bin' + ) + + # read file. please note this sector is sync with import_bm's mesh's code. when something change, please change each other. + fmesh = open(selectedFile, 'rb') + + # create real mesh, we don't need to consider name. blender will solve duplicated name + mesh = bpy.data.meshes.new('mesh_' + compName) + + vList = [] + vnList = [] + faceList = [] + # in first read, store all data into list + listCount = read_uint32(fmesh) + for i in range(listCount): + cache = read_3vector(fmesh) + # switch yz + vList.append((cache[0], cache[2], cache[1])) + listCount = read_uint32(fmesh) + for i in range(listCount): + cache = read_3vector(fmesh) + # switch yz + vnList.append((cache[0], cache[2], cache[1])) + + listCount = read_uint32(fmesh) + for i in range(listCount): + faceData = read_component_face(fmesh) + + # we need invert triangle sort + faceList.append(( + faceData[4], faceData[5], + faceData[2], faceData[3], + faceData[0], faceData[1] + )) + + # then, we need add correspond count for vertices + mesh.vertices.add(len(vList)) + mesh.loops.add(len(faceList)*3) # triangle face confirm + mesh.polygons.add(len(faceList)) + mesh.create_normals_split() + + # add vertices data + mesh.vertices.foreach_set("co", unpack_list(vList)) + mesh.loops.foreach_set("vertex_index", unpack_list(flat_component_vertices_index(faceList))) + mesh.loops.foreach_set("normal", unpack_list(flat_component_vertices_normal(faceList, vnList))) + for i in range(len(faceList)): + mesh.polygons[i].loop_start = i * 3 + mesh.polygons[i].loop_total = 3 + + mesh.polygons[i].use_smooth = True + + mesh.validate(clean_customdata=False) + mesh.update(calc_edges=False, calc_edges_loose=False) + + fmesh.close() + + return mesh def flat_vertices_index(faceList): for item in faceList: @@ -625,13 +683,28 @@ def flat_vertices_uv(faceList, vtList): yield vtList[item[4]] yield vtList[item[7]] +def flat_component_vertices_index(faceList): + for item in faceList: + yield (item[0], ) + yield (item[2], ) + yield (item[4], ) + +def flat_component_vertices_normal(faceList, vnList): + for item in faceList: + yield vnList[item[1]] + yield vnList[item[3]] + yield vnList[item[5]] + # export def is_component(name): return get_component_id(name) != -1 def get_component_id(name): - return -1 # todo: finish this, -1 mean not a component + for ind, comp in enumerate(config.component_list): + if name.startswith(comp): + return ind + return -1 def is_external_texture(name): if name in config.external_texture_list: @@ -648,13 +721,15 @@ def mesh_triangulate(me): def try_get_custom_property(obj, field): try: - cache = obj[field] + return obj[field] except: return None def set_value_when_none(obj, newValue): - if obj == None: - obj = newValue + if obj is None: + return newValue + else: + return obj # ======================================================================================= file io assistant @@ -702,6 +777,9 @@ def read_2vector(fs): def read_face(fs): return struct.unpack("IIIIIIIII", fs.read(4*9)) +def read_component_face(fs): + return struct.unpack("IIIIII", fs.read(4*6)) + # export def write_string(fs,str): diff --git a/ballance_blender_plugin/config.py b/ballance_blender_plugin/config.py index 1c9b7f0..7e6dec7 100644 --- a/ballance_blender_plugin/config.py +++ b/ballance_blender_plugin/config.py @@ -1,85 +1,113 @@ external_texture_list = set([ - 'Ball_LightningSphere1.bmp', - 'Ball_LightningSphere2.bmp', - 'Ball_LightningSphere3.bmp', - 'Ball_Paper.bmp', - 'Ball_Stone.bmp', - 'Ball_Wood.bmp', - 'Brick.bmp', - 'Button01_deselect.tga', - 'Button01_select.tga', - 'Button01_special.tga', - 'Column_beige.bmp', - 'Column_beige_fade.tga', - 'Column_blue.bmp', - 'Cursor.tga', - 'Dome.bmp', - 'DomeEnvironment.bmp', - 'DomeShadow.tga', - 'ExtraBall.bmp', - 'ExtraParticle.bmp', - 'E_Holzbeschlag.bmp', - 'FloorGlow.bmp', - 'Floor_Side.bmp', - 'Floor_Top_Border.bmp', - 'Floor_Top_Borderless.bmp', - 'Floor_Top_Checkpoint.bmp', - 'Floor_Top_Flat.bmp', - 'Floor_Top_Profil.bmp', - 'Floor_Top_ProfilFlat.bmp', - 'Font_1.tga', - 'Gravitylogo_intro.bmp', - 'HardShadow.bmp', - 'Laterne_Glas.bmp', - 'Laterne_Schatten.tga', - 'Laterne_Verlauf.tga', - 'Logo.bmp', - 'Metal_stained.bmp', - 'Misc_Ufo.bmp', - 'Misc_UFO_Flash.bmp', - 'Modul03_Floor.bmp', - 'Modul03_Wall.bmp', - 'Modul11_13_Wood.bmp', - 'Modul11_Wood.bmp', - 'Modul15.bmp', - 'Modul16.bmp', - 'Modul18.bmp', - 'Modul18_Gitter.tga', - 'Modul30_d_Seiten.bmp', - 'Particle_Flames.bmp', - 'Particle_Smoke.bmp', - 'PE_Bal_balloons.bmp', - 'PE_Bal_platform.bmp', - 'PE_Ufo_env.bmp', - 'Pfeil.tga', - 'P_Extra_Life_Oil.bmp', - 'P_Extra_Life_Particle.bmp', - 'P_Extra_Life_Shadow.bmp', - 'Rail_Environment.bmp', - 'sandsack.bmp', - 'SkyLayer.bmp', - 'Sky_Vortex.bmp', - 'Stick_Bottom.tga', - 'Stick_Stripes.bmp', - 'Target.bmp', - 'Tower_Roof.bmp', - 'Trafo_Environment.bmp', - 'Trafo_FlashField.bmp', - 'Trafo_Shadow_Big.tga', - 'Tut_Pfeil01.tga', - 'Tut_Pfeil_Hoch.tga', - 'Wolken_intro.tga', - 'Wood_Metal.bmp', - 'Wood_MetalStripes.bmp', - 'Wood_Misc.bmp', - 'Wood_Nailed.bmp', - 'Wood_Old.bmp', - 'Wood_Panel.bmp', - 'Wood_Plain.bmp', - 'Wood_Plain2.bmp', - 'Wood_Raft.bmp' + "atari.avi", + "atari.bmp", + "Ball_LightningSphere1.bmp", + "Ball_LightningSphere2.bmp", + "Ball_LightningSphere3.bmp", + "Ball_Paper.bmp", + "Ball_Stone.bmp", + "Ball_Wood.bmp", + "Brick.bmp", + "Button01_deselect.tga", + "Button01_select.tga", + "Button01_special.tga", + "Column_beige.bmp", + "Column_beige_fade.tga", + "Column_blue.bmp", + "Cursor.tga", + "Dome.bmp", + "DomeEnvironment.bmp", + "DomeShadow.tga", + "ExtraBall.bmp", + "ExtraParticle.bmp", + "E_Holzbeschlag.bmp", + "FloorGlow.bmp", + "Floor_Side.bmp", + "Floor_Top_Border.bmp", + "Floor_Top_Borderless.bmp", + "Floor_Top_Checkpoint.bmp", + "Floor_Top_Flat.bmp", + "Floor_Top_Profil.bmp", + "Floor_Top_ProfilFlat.bmp", + "Font_1.tga", + "Gravitylogo_intro.bmp", + "HardShadow.bmp", + "Laterne_Glas.bmp", + "Laterne_Schatten.tga", + "Laterne_Verlauf.tga", + "Logo.bmp", + "Metal_stained.bmp", + "Misc_Ufo.bmp", + "Misc_UFO_Flash.bmp", + "Modul03_Floor.bmp", + "Modul03_Wall.bmp", + "Modul11_13_Wood.bmp", + "Modul11_Wood.bmp", + "Modul15.bmp", + "Modul16.bmp", + "Modul18.bmp", + "Modul18_Gitter.tga", + "Modul30_d_Seiten.bmp", + "Particle_Flames.bmp", + "Particle_Smoke.bmp", + "PE_Bal_balloons.bmp", + "PE_Bal_platform.bmp", + "PE_Ufo_env.bmp", + "Pfeil.tga", + "P_Extra_Life_Oil.bmp", + "P_Extra_Life_Particle.bmp", + "P_Extra_Life_Shadow.bmp", + "Rail_Environment.bmp", + "sandsack.bmp", + "SkyLayer.bmp", + "Sky_Vortex.bmp", + "Stick_Bottom.tga", + "Stick_Stripes.bmp", + "Target.bmp", + "Tower_Roof.bmp", + "Trafo_Environment.bmp", + "Trafo_FlashField.bmp", + "Trafo_Shadow_Big.tga", + "Tut_Pfeil01.tga", + "Tut_Pfeil_Hoch.tga", + "Wolken_intro.tga", + "Wood_Metal.bmp", + "Wood_MetalStripes.bmp", + "Wood_Misc.bmp", + "Wood_Nailed.bmp", + "Wood_Old.bmp", + "Wood_Panel.bmp", + "Wood_Plain.bmp", + "Wood_Plain2.bmp", + "Wood_Raft.bmp" ]) component_list = [ - + "P_Extra_Life", + "P_Extra_Point", + "P_Trafo_Paper", + "P_Trafo_Stone", + "P_Trafo_Wood", + "P_Ball_Paper", + "P_Ball_Stone", + "P_Ball_Wood", + "P_Box", + "P_Dome", + "P_Modul_01", + "P_Modul_03", + "P_Modul_08", + "P_Modul_17", + "P_Modul_18", + "P_Modul_19", + "P_Modul_25", + "P_Modul_26", + "P_Modul_29", + "P_Modul_30", + "P_Modul_34", + "P_Modul_37", + "P_Modul_41", + "PC_TwoFlames", + "PE_Balloon", + "PR_Resetpoint", + "PS_FourFlames" ] \ No newline at end of file diff --git a/ballance_blender_plugin/meshes/PC_TwoFlames.bin b/ballance_blender_plugin/meshes/PC_TwoFlames.bin new file mode 100644 index 0000000000000000000000000000000000000000..5f326460238b42c596b03c0f1f708417a9e480c0 GIT binary patch literal 4404 zcmd6oZA_JQ7{-s0CA|Y?nZ2MEDGD7W4hEj*IdCL1dXXdp)GuXa6DM1nY-h=wt2SF^ zpPFmrbZyYUnQeO7%5xsvvZT`5_yF0m>0Es(ntX9&uIu{qTJ+4zYYf8Ocf4rbCdpW=D+4TW^{yJavY zB_q*z7v>oxPY?e3Z8ZMF;l2Lumm){4pM!bQH)k#kTE7zWq@TC!T#oPGnsUDA;@3HT zdF`;r{Mb+?$M;R`%U;g6Kes-h&tK=|_qIEqzwbEa$$b7f?U}E1y{q$55IfoH4YjRJ z^sHJD%hbFcd%m;V)$hWyW(K~R88CSMM6XxZdC6xDf0#9LgKxp(=QL|R2{Rp&`GEEQ zV|{7l142*7nm$}F&2{V=thopG4f8(tWepNMKi6OlU(FitBzS(T>+S>Z?#9fK$vn@W zV4rIfdOFthtT_|S0l&`MrXz!A#Lf-5zh=U-Y7X?eJI|#1axS_f_tL$%pYCGMPp>oE zbFRZV-rO_by??OD8y?&k@LZoPZuJh>j zKJ!~oR%G8U?(#c6YVux8R(c(WTKz;7*O~CnCucjqAe!(Gln;3H8|H5Gxfk;-XH)c9 zdE^6n=3hC~8vKFvH({N9#a+RC_%#ic9`+5i@A1aAfae)IGm(8^v^3y3-@!R!CrX6> zZ`Pwd10K&g<7n(W~ zoTvTGJh?B<J5H+Q98rA>|!_Txawq0iTmt+u({d) za&xn*i)u=IyyNQ6cZ_&=$JKn#)R`Z{OyL_NS-kHuRalR3eLD77Gi%PkT4!L!{a!PJ zcYVFfGqL7+=((Ef@ecG{&(v{~@yxrvS<^Rrxi#?LO8Df8|DU>@#|git;7P6uDZrD+ zqjXZDKl!Q#j(;|N>yhVNnyhZ*t zc#Hh)@D}-*@D}+y;4SjA;4SjH&z+%n4DSj?4{_ zSMFYTqQ3lna713YGB~2X{QYo5Ub%U2M1A@Ba713YayX*C`~o;4uiQd7qP~0u9FbQ} z^HyJ8bC*}H5^InLLZWzDj(9P$*N7Wq~17Wo!@bF8}}l literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/PE_Balloon.bin b/ballance_blender_plugin/meshes/PE_Balloon.bin new file mode 100644 index 0000000000000000000000000000000000000000..9e9634da23fb01a3b849dcdd0909a39b21441965 GIT binary patch literal 16548 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 literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/PS_FourFlames.bin b/ballance_blender_plugin/meshes/PS_FourFlames.bin new file mode 100644 index 0000000000000000000000000000000000000000..7d205bd1a0bfaf1f9c0dbc9af675dbe962b58e8e GIT binary patch literal 7044 zcmd7TX>1i`7zN<6isAy)4RK-7qG-!b1@+Fb6a_>MVse?PVc@s8yZtvw{uPeh}Qj0Lp{9~Vo&+`V>+{OJL+qUn5-n(9z=h~;o zpX)r=d7nC5?76OUNXbUe?Y&%z^<>PmaQv64xtQmXPm2Std0zPl%#*&dph=>@0~uV zqRjJQ&IeE3@A*8p&y=ZD;N4n2C?)~hEdA@^r(rceLPvc3`ALYB}GHqLKRJU_hlFtRtE1su&juD?P=ZxnY@wxN; z$8-PR=Gh$YC$DG4s(=69-E;Te&&<8&-jjvreeX*!2i_Ov5a@kt-|gJ@&VBG6dfz+W zTRPrb?|V16)D$as3f~i{Hm_6 z@%z}hAATRNxt}>#WUhg0T^oCJ%@KYdxa)~@kKB*fO4ojAX|v-0r(I6#rROdv{<9kX zWU9N=z>$$-8UI%ke=@3{)3mf&STJ(+)rK*u%ddbja`n}LF{;b2gfVjUT?J!Qm)C_c za`jyeV^o)417qasyB5Z%F24@O$kkU5#;7i@4`bx&)4WxeYwmLOHNYNBy36%A+Q@H! z+sJQ(+sJQ%+sJQ*+sGTjZREGWZRCyMHget1t*A4%x!jH;bBBvueU0Ia>hdNqM$R6l zsf+3~rkRUeeRskc)#Z1=7`gf~V2tYW<}gOCzPn+J>hgPFj9h&!V2tYWdtr=RefPl_ z)#aHmMy@{1TXnhSE>~X`_F!7Nw8GIw-WqNrZv(fHw}sot+re$*?cp}^4saWJHrz(8 z`?()=rlU(I9GM4Phe4oBUfL4 z7^AxUSr{W%-vAh+x_lsvk*jYIj8R=a7{c%jd?t*Mt8W&JQC&V8#>m;j%yChj#=PnxSKn)JMs@jI7$aBT zJQ$<8d_Ihkt545gb-CUHx%!H*2eZKCbsTNv3*k2MMQ|JWVz`Zb3EW2h2HZxz6mBDb W6K*442Dg#F1-Fqehug?Cmwx~kM^p#^ literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/P_Ball_Paper.bin b/ballance_blender_plugin/meshes/P_Ball_Paper.bin new file mode 100644 index 0000000000000000000000000000000000000000..b8180b79df88997fe93ac252509608bbaf271e40 GIT binary patch literal 1212 zcmZwDOH#u?5Cc#H3IA_aEV%^haI?iSOIbeGp&H;qTCE z+M0`RJyZP=mzt+$`*(}`j;DEfx*qSDjLylD(Y_H~M)H^bBVs!jbqALXS9J%@riu}G zewuz;hCna>y0~Di-xN2(96wEeTmC>V|E{=Tt=|_n!W=(M|4{xwFTbeeto6rYN0@8& zuIcUfsfggY;ic}te(3h=#`EL#@?R?}kZ;a@==STz^W*j2_g2|~d~^0gw_i7&AFua5 T|0Ca=|D%t)PmSlN>%H#;0#9CJ literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/P_Ball_Stone.bin b/ballance_blender_plugin/meshes/P_Ball_Stone.bin new file mode 100644 index 0000000000000000000000000000000000000000..b8180b79df88997fe93ac252509608bbaf271e40 GIT binary patch literal 1212 zcmZwDOH#u?5Cc#H3IA_aEV%^haI?iSOIbeGp&H;qTCE z+M0`RJyZP=mzt+$`*(}`j;DEfx*qSDjLylD(Y_H~M)H^bBVs!jbqALXS9J%@riu}G zewuz;hCna>y0~Di-xN2(96wEeTmC>V|E{=Tt=|_n!W=(M|4{xwFTbeeto6rYN0@8& zuIcUfsfggY;ic}te(3h=#`EL#@?R?}kZ;a@==STz^W*j2_g2|~d~^0gw_i7&AFua5 T|0Ca=|D%t)PmSlN>%H#;0#9CJ literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/P_Ball_Wood.bin b/ballance_blender_plugin/meshes/P_Ball_Wood.bin new file mode 100644 index 0000000000000000000000000000000000000000..b8180b79df88997fe93ac252509608bbaf271e40 GIT binary patch literal 1212 zcmZwDOH#u?5Cc#H3IA_aEV%^haI?iSOIbeGp&H;qTCE z+M0`RJyZP=mzt+$`*(}`j;DEfx*qSDjLylD(Y_H~M)H^bBVs!jbqALXS9J%@riu}G zewuz;hCna>y0~Di-xN2(96wEeTmC>V|E{=Tt=|_n!W=(M|4{xwFTbeeto6rYN0@8& zuIcUfsfggY;ic}te(3h=#`EL#@?R?}kZ;a@==STz^W*j2_g2|~d~^0gw_i7&AFua5 T|0Ca=|D%t)PmSlN>%H#;0#9CJ literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/P_Box.bin b/ballance_blender_plugin/meshes/P_Box.bin new file mode 100644 index 0000000000000000000000000000000000000000..47d66f508e9bd0872582f25fdb06d7a307139f84 GIT binary patch literal 732 zcma)$OAf*?3`9eL^8a@aYYqTQax%oJ*j4ltTnA=?2U$=ljr26*c$~NjJckBEQ+d{j zqbcj>YtOziQr$DJep1Y~WuklY+jp~(e_7_Qj~!CKZI7Qj&Nj9~@|>;0=Uj{1#cas= z`dpp}a*r-P_a6WC8N7KXyzAn*hub~trwT)RMgjHoQ4^g33>g|F)H6a&lpDj7iNQZT dGt@-6IXqbyOQ>gsnkcu1CmUl6_3Tg+<=&$RWW@jg literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/P_Dome.bin b/ballance_blender_plugin/meshes/P_Dome.bin new file mode 100644 index 0000000000000000000000000000000000000000..5dc344e4c545d6f10421c42945b527b9b69d88fc GIT binary patch literal 4452 zcmZ9KTZmUx7{&i-(^zKH#q8!~w2PPNs!dwz*{5={ArM25QYylis0`^XB$|SXi0CB> zA)&H*D^jwjI{TFKAOup`LqYgvJ%y1^l0<9m*+2U54{Od^>s#M<_MH7q4hDl4zyC7t zn76TAv~fo(Iav6_uJV-b?W>*w&mrHtR(pH**L)5mGkNvxn%I}W9{M~T{HXW$>doEfvzhzW5N<(q5dzjDeuugH{BCpi1zvXAzWYM2 z&&7xEo*+!y9&_t*K^ zbL;$0xx^fwBh1HdLcU>+``-R^RX12Xl;-Z;o<2MKcXw*hQ2O)uc>4GFcs7^UEZn<2 zJELr)9K2JGOh>Q#nCU+E)cM)7>in!+s`ESLQk~!V9QNJkbDR)Arat$Y+heBtUOjcV zTlr|$e7JvSTE1XKHrF#9+P^dJ7FWGFdU$u9BkpghT*N&?sLw0_qo5$&z@W7 zXXR3z-zk^E{E~5>^S?hba~|tDzubMDpH6OC-@Wwuq2}o0&!qRa4dutg-+5zm5(<}> zRLkGVSJt`gy!%2Xhu-X(^S>(Vo;u%|ROe^E!`yw!r8>X!IqLj!4)bH`bMFT6C)MYf zb$;68k5zx?>1oV52l%t)N8q0?KLUS9egysn@+0tv1U}!M8v1hOBk-?~ zAA!$ZQA5vHJ_7$r`4RZsCpGi}LP9Dj$K*K2bw2Qa%EoU89Cxtb7DMdqxetMEMAOc90r+RQU*e z_KzBRsqzu{>?SqzGUX%i*-L8Z>y?kdXJ@IQZ%{r0pM9lNC*n@hW)+ntdIUXQ0{3o8=j3_U{&X2AVy)Ri1%n zpKg<9phv}x+bhfs_Tvt51I-?+mS>>3?=|uaH1~R^JOj=BjmtC8+|yn13^ez#R-S?8 zyRVaHp!wc+%QL8->!Z1+dz3ZM+z&pQ`&+N9f#%-u(cJ3>Weqg`HiW}&q;s!pNJ-bge1HDY#z(=!x z_p4^0**knRd$~zj1I<3-quJL9WeqfYijQWGA5hjnv%mOg_ItCk2AaLbN3-`2Dr=zG JcYHMa{vW-RGi3k( literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/P_Extra_Life.bin b/ballance_blender_plugin/meshes/P_Extra_Life.bin new file mode 100644 index 0000000000000000000000000000000000000000..0df8b77d75bf5e06c521df95b81647c807f62868 GIT binary patch literal 4260 zcmZ{leQ1_d7{=fE>P)veozpCv?n9k(nbTU+wLQl))+9$(TPrQ2k68(giHZYJXNe@@ zM=1zWf2av2&X3jlnA>w!5*n64Ntj_o2n7n3r2QeY?)$vwhX-jdT)VGb_jTRRdCqg5 z_nn(aBzh_~c5dz~>J{47RNfi?vUQkpr*AworuRMjb-eye!gl}hyFL5EuDIn)!oUm5 zJEPD)>!oY)ly@%M`TK2LwC9bUtW7^FkKlT(>zT)*pDy*;WesVz>BE&#!x!ClK|`8> ztH1tYu4&CU=jOmQn=D#xPX2w-WrsgoX6j}fbXmA&cTZ|HD>9F|EL^iU8h4xYbNgI& z`N$W|YrB@aEW9l1M6~qPR#U%ird^SBB8F@B%O{#m*R`&Ae_da^@Uxlb>8>5|TXlUA z{N<94sQ2B+jPBcpl8zW2WFxYxx^_fll?Q7x!5U1k2BUlB*J*UG;F`T!==Q_}_imbH z|NXtYtluA(g{yyVYM-4St~1Z3o{`HIrk;_@!ZkZ>uY0~O3)iea112~pQE-0T{rYni zUAP+VM9{Q@dVsl@zxAW%cPtkw;cl_*-haTzmYF0fV z|36P6k*_}IR~~wpulihFpnM)5)MmA=JhI3hekJL+{M)wolX>=1d!8+y^MV~W_VajR z`+-=vQ9e+(_|5yb{E6R=UW{wfn{4jtdRzJ2*tmA-5as6MMJcY=n2_;I^|TMx*~TMF z?1jbOSC#c#h=m(?#pXt{_Q|Qy@zSIfZk3-FuIstJtH5mBQe*ebTVgvlY>B?jYmbGS z?ZU4JFP^@@q?e_c^=7AX3)kze`DUHjeQa`1eC{dxS5LM%db*`sxXFpL&HNKB-A$V& znZ@U;%)w!^BH^~#bG`2Q?W;`5oHwJqWmUHEa0 z^ESP%&&EMkxv5EIWA$uJt*yF2)=-zaZY%);z-X2Ge$)v5`%p0~B0t&L6%S?%Wa$2Fs#6>PQ;=s~mS_rmRPkZ0bVqABoE(Z@(H1o~Z~ zEAIASe&|(>&RqIqrKcdzyn94b;G?3GqoU_YCItF8(G}x8$l=WwT~XkHPDLlryh8CS z@KMq8r56IdNOZ*n59Z^YD7s>j2Rap8_bry$R~GSL+HsOZzB7lJwX=*d{lJi t@*McS#YaVFZiU>ZVy4F|sftREhoma1JgTKCA`c@~G27!|sfsxs{{i-$=w1K- literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/P_Extra_Point.bin b/ballance_blender_plugin/meshes/P_Extra_Point.bin new file mode 100644 index 0000000000000000000000000000000000000000..2b3fd7d2d1af9e105d102df20b93b98c85f8048d GIT binary patch literal 6444 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 ZH9{2D@&SCJc{R{vtxyYVse?~6??0y6>AU~{ literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/P_Modul_03.bin b/ballance_blender_plugin/meshes/P_Modul_03.bin new file mode 100644 index 0000000000000000000000000000000000000000..aece6c2159fa21b9bf5d547b859cdf4a5b83b976 GIT binary patch literal 11364 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 literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/P_Modul_19.bin b/ballance_blender_plugin/meshes/P_Modul_19.bin new file mode 100644 index 0000000000000000000000000000000000000000..e3e6b8010cab14a909b5895f1bfba10fe2f747d5 GIT binary patch literal 6732 zcmbuBd2Ccw7{y2IqTogqccCJRpol26Al4ZKt#vO@QE&k_Tu@Zpt8_rcrHW8@S*ikV zfXg7XXs7e|!x&tm#+Vq<;DV93l7LY|70-F|o$+%rLnm>PU%zwDJNLWy&U z`|7V#qxbA1o=bM2qLUw5}2)xnl8e{LVQb9s!q_xhjPV_Sa> z7WNqs^jWno^r=U;tPA~(R}BolKd`N>4w-QiYJ!cYO-)kMFYVga#y<4#896mc?dSUb z`TA^cUG?{K{r>%2zX!iJzXw0ppT*C8=#44Cg$r6^R}^oGNzcH!$_CX0-99Qyje$>n z5j4-c{;Yn%HOoswefKA)2dz828DpOQe(;%>&z^p+@1L)aGMcMB_?~_(<+%rG&Q+ei zH2qKCEf12FvsRwjtvuB8$JA7`!9QY1uUN9Or1D=qt3ny&)0wnS{rTU`K_BZw&3tyo z_k0_f7i=xf_3LtP+7C7J+K=XDXS6r^+Jm3Fp!>yZX1-Y8!o5*1esE|Ddp311TQh&m z+Evoa-tL>pD9?<1>R;`Q>?56>@jba8_4j#Y{C?C^dCkqvXm85vT<9D0U_}(%Z<(ZMc%LjEq(YEG*eMX{>w9ojS%ySQ1%g^;0 zzaRBfUUPlMpGA4UAI@#k8~uJO&Im>= zE=f^0ZLEoXRTim|ziClPihbz!+&5B1?dSUb`TF?%_&xZZoU65bPe0f1&ClK3Wo(Sk z@D}W!y7B8DR(+3sCL_fo@UCSvpD|^WXGVSkn$H+BYte__Kef;Jp2~M%EotSouHO%P zvcJz$`;0$}--DmqivLmcdGn8kXlMGRJel{L&rIv`+UUZM%h)eofR2>ko=EoJHa%Rw z5Z%!+IW=LzXD4vKh3Frb*QQb*m!+65L=U?oQHA}4`9k!%j>*yA$A8w&{{KgFK0mk@ z;o95N_?~lSa4#}GGm{=jR4wVzkiu`zkV16b{fQ*V` zJ=5=QA)5Dfc9(c~e+$)oc8=``pQ~{H)SN4y`{F@+!ync0@9#)HJ=SH|gS{{}b5FZN zdmsHPxCS$}4=xu$e}1Ro$NOHhce6WhXIlMy?|ho;_%mXhIfM7TcKtievY%hupUeAR z^SmqnO25B_Xzj=M&Zl{QH*IC_^!;A%wD-Ms{WIs~xpMiuznF_>tE2+g&J+#`N#WDFtZW)9LPc z?o4aXym!)gzcSkU)aiFG^FC+pwfD2{uij1er)E}~_ta~yt^3RMq`mL%Z+s#r+h+$< z(#6;jmB@z-KSlUU|4{fI`G>*x$nOi^BVYSC9M?%dqdzJ+!q8aPkAzPK7)PO!friGq zel&bC$T$X-9BXK->x1EwAqIc!NTs2%t`CJzh8f49lHrENx_&%-!hf;||4}A<5sAjS z9)m|l7$>5Vk%q>)J_-yR7 zNv$y&m5ebo*7dRQNu6;Hs%IR=M7eXJ$$7?jRL=yAiE`&dlM9RsQ9T!7Oq81lO(q!^ zqk1mEm`pS-MJ1ORm!o)>!8W?#to>R zX&4jbZiFT`88@SPZo!x+cPlix&A1)aQ;#uG?ha^jr!gJX(||EiE)Gp*7&B2lcVSH8 z#@(po9%B}&=U$A7a`!=#`;7-sJ&hO>kwEpVz?dla1~ge|tU~p) IU`&+z2Ynpf7XSbN literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/P_Modul_25.bin b/ballance_blender_plugin/meshes/P_Modul_25.bin new file mode 100644 index 0000000000000000000000000000000000000000..6f38eb158d3419f2a07f0c028bac80083c6ac4ec GIT binary patch literal 2316 zcma)+xo;C;5XCpaELRe9g(Dm`<_Jf)i8tZ0QzKC$O85heM2ql3k&=e1pfClJDMINK zmSS%ts5vAeL=hw!Br2dnLdJQ|JF`1p;gFSnnm4m==9_Poxac^};~S-B!B0=kv@^k! z=!JHsSbe+LV4eEvyHL|JcC*y{^5R|t_2AC?#fIvS@Jyf%Pw^AxsJ8R%9NTMWT94hq z&bPhRWB0c^*k0?gyV)IV@1sAJV(sq}@2-;#CZ7$}AC6q_Xx6ho0+087b!D(l4|N&! zg?1&N|MmBDo%$v8a&zY4N%q?L$zIO9kF!|UUb}Ct)?bDjq}XE@T`9y^nMJuB|D=h}U^XSYA>O?u+H z#5=^jMO>DT|EpXGmE)9*w)KQ=&Uw@0()&-1IZ>V7uPMJt|NnHV&o97JBfa#1@yN{D z=ak>M1N)ZKnAzEjd#prr-qZegr(XI&e~uUhJ|g2mhH%i`gTB* zox%tr*(GSM?{}k4_6U0sNk-6I-)B)L`-B`K*)M3W?+>6(4hn}5$*7>YzCVmQIU*cI zB*z5J_5B#?tzTc0N7kzR$>_bls z{Au`oPxqev;o&U5*7x}PuqXT1I=^bWdvq=S4u0+2O%p9HyJbgpo~@i#VE6s=lHHhG zX!lgjYi4{i;^`?3AzyOgQ(M+hVHjV7cy&e0(7y`)k*-gEb)JF$2t6g>_c^}-FLC|< z^3*Q&sHX=#%~sdP#SxAqIjj8b?cB%2&>uY~Gmf6t&V7zMC()B0?qF_#2XXdIVh8SD zN{;=F{Mea1^x%5AXXxP$n#CQ|lbrYAbYrpAK4s(b!}~+eF!1?ZyB&G4vDnDdQIc;M zcOEm!?RF4-D!cYK@RNtL;J2K`-QY3q8V%+e?$17$Yv|#9V6ArM4sOp<`n`DQ=e2V# ze+zP63x87=H{5}o`*XKLAC?EaZx>1%6XN@p?M%0|Rwon}XT0Ly)rs2QZ<=wga%XzM z2jzjd;(wmnm{6Qt@f-EWn%3K6fBNl=*3F&v%7HF^>7`Ed$xRy!<7QWF@9F;Me*de>Z;zzjhsd6uxgS zWYp`ui*)g5vmZ}Si8eD1JN=UhXue0`AGsfgzm#Bn%a^IJH~XFao}9g-&3=5F>&<5L z5e?Vobea$Rmb`7&%_NxwZ|GL8bVQEcJQP3WI{%DE4^Py?> z$+c(W`-bGkm%Nm+$?wYI*_R4T^Aoe}_S$}luSPDjKb$%jES_~B@x_(8;PTm|y=&BP z^WN@4Q}^Uxd+_}X(<5_r`gGM8^UTRI8x2bB#cw}LdygzxamsA@=R_^USx0`@BJWtm&(%lYPf&!kz^tB=_+ z{Jlioj-KiEIloC)J({x9Ua7Q~b9)4BC;Ho~hgO>N$9JX+I(mfnoA>`>N6OZXT^{O! z(%$6ZGeX|wZ+IHF(K|HA## zgW}~W^7?qc-SO$Ml_7uQqfB#f%bBu?9c{X_CUV{hxq-(x55I4b_N=aVf&A)qc*Ymu^+eWXeau}WGqcuP0?+Z} znOPqP6SCGDKGWa{YFO%#=XFPRf7ey}3wU@v&i|8qPgN`5gUD^sdi0f`1 z4@I2NoMGUE`bu9fKO9~{eWg{Oj~t;n1>l7GN?$L3E4+mIN~^vQIpQ{l5jct49i)}N z1976zp$I1-pS1FdtKUd?i8~#nl~=v$?t+hyPg;4!)o&EMM6rXk@~T(eX!r>Eq?On2 ztmk74yu?@sY322tsICM)LOyBb6<5D;@Dk%4q?K2_>L$QP$S1A5;_6ojFQMO4T6xv0 zuKVvTt-PLFUH9GSO=wSP<@Fq@ZX&#deA3G6c~#vccnSHWl~*6lpA0Xd>ylPpeN&d=l42%y5{AlPGtPR(=-Z#B7H-IEi~4 zq?K16)z5{GnCBp^yymHHK753H(#j{1BUHBloRCjidCg%Bp*`f2R(>Ho#Jvu`#_6L1 znvky&oLJQJe*Yv&d6Ho$DbO-t4{dXTp1>yQKN}_eA^n_d(~icfdcF?gsPr&gi_pUmiY7_s!0ee$}#1-C_S7 z+3$<)hW$?2_s+TLyQw?IcgLCQJ5H^8$eHW6!ro^;Z+~0#y|Dhn8%rBwpVcHzoGs5% zzy5hmVn$Gr9NM_7@vGs2W?mlo=~13~_nJLfdb+R=br4i!eUII<6COQFwf4ETA8NN} z*qds7k9xB`*xFs6#E<^@D4hnjnCalNV5_oz4d*@HA|ci{h+t~+tfIaZJ(lw@*Jut7HgOXH(o?VPaZ8vIraoz^Ee=qvX zYdp8%z`*_9?y^Poq^nWXR!q0C`SpRWi-}A ze`6rXIgSXTr4(x--?`9atm8aH%lTLn`7VGa;~WAu_p3OgC^4*GY~B|U`^z^5t>vvZbG!&j5U#OCN!yb)F4`J!J5c-D>SKf@C#|F z!?`~*vk7FUCWf9iI_bo<_Eb&mS_LJ{k z_(-#d>V4l*_{e=8s@Hz<-47pG=AnAu_W*q4K@ZhyKlvVlk38(5dij>)bMlDeQAEoM ztciRpp~+*8Rfv|yu_h}WPau-jjwcZM@};23 aX2%vpODEPO<=BcywmH&>mhD&*`ThX{x85WG literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/P_Modul_30.bin b/ballance_blender_plugin/meshes/P_Modul_30.bin new file mode 100644 index 0000000000000000000000000000000000000000..c227e0368152e69fe135bcac0a7a746ab37662d6 GIT binary patch literal 3180 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 MdDUTi+HSVbf5~#IZ2$lO literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/P_Modul_41.bin b/ballance_blender_plugin/meshes/P_Modul_41.bin new file mode 100644 index 0000000000000000000000000000000000000000..2c68a82bcda877787b45c5f155863434c39e7abc GIT binary patch literal 3564 zcma)+U2IfU6ovbb6&30qsMslgA}Ug?rB=t8siLSLRQv&2snn7f)I`L`~);+RytS&`;u=Tx>4P~)he0xW#d(+OmPK~DX8P7B0KJ}r}OyGT7 z7iP5QS>*j$n)i&Zhg$Ql3p2hp`rcFLe))MUes<51Y{M^ya*4K+iSCzbg2bQwsp;!Z zCg#3e6VQM4hgkgZhexvXHKTLabc|*j#>s1D;rh|6_t%~}_r>Af?5R2X!slvUGtI|( zvwM)?dNiYR>%Q8bV2110yk=G&-JeKUAAMi-wU54ge0y!`*V?y7`ms-_+j`y~d8;Cp zJJ&xu*WA||`qV=g_J#hx2TO8C{~8UL*?i%A(zW~S<36>{)&8C@>@(4G*;D80`gN|Z z!SkG}YtXr#*Y#Xle`okRYz^O~GxyPq1L4_u^Sj--E%kkQJ#%n(c#h8XM|o!4r{>;X zVST9CvoNDQmzQONoj9{Pm)bLYmam7Jd7e9Fd~RWe-_+m5*PwHCpXeUbeWhoi*nZZ% zr+Zt^i|)gX_@8yW>D{59#?ndF$!JUouVok0$%*t@WLn44f#)`hR=-w!&-Pu6<_(Be zpSlxk_c@D2tKTF3EA6Kf-&A*n@B4pxSTf`3FWOIMe?|t+&J@$=pZz`RGp^n-v@Q6f zbW0Y$ePc2Gv1E#A?6Ia?MJ8aM$>=ca`F%2x<~Nx?C6oX5lhK^> zb$K*r+L>q%sNQux9ju=EdNA+%y;;s_DWdDdXO7pY@=Sie)Srp=j%xHzqJPr+cNNj^ zh|k~WH#tWW>46i6kC9Dwjs{LF7^YUA9@qQ^d_6mR<-Dk$6d!$-kmGW8zJ*pF{hJ6g zdPZ8{QdU4Y#>B4*2vTWOp(;}_CZ4+tnp7K?qbgG|CZ4+jnp|mIg{n-$n0RhFG^sJJ zMpdrCn0W45XmXu#Jt~=D%tR$O7&oGln~Yhgm5?ZzFbWRc;%=kA10790HLw zjjRS_KGYlsWH!1Qm>YP2ZrW?!wsjVpsXY+y$Hkt_WNN<#h(YqW*dRHO8jw6LHpmW; zT~K?lvRQy`f&oS#1B98Nm>EceFh~suvqCW&kOpCPDCPjtAj}EHTtFIxxuF;UWm$2Z literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/P_Trafo_Stone.bin b/ballance_blender_plugin/meshes/P_Trafo_Stone.bin new file mode 100644 index 0000000000000000000000000000000000000000..f4122a4623f008e226770c589306ca2157266c02 GIT binary patch literal 396 zcmd;KU|_iRU;e=FiHG(wFen^Y(qm!X`dZRquQ{8U7K4IAOg}^%nT@VyZx2|F14s>w zjjRS_KGYlsWH!1Qm>YP2ZrW?!wsjVpsXY+y$Hkt_WNN<#h(YqW*dRHO8jw6LHpmW; zT~K?lvRQy`f&oS#1B98Nm>EceFh~suvqCW&kOpCPDCPjtAj}EHTtFIxxuF;UWm$2Z literal 0 HcmV?d00001 diff --git a/ballance_blender_plugin/meshes/P_Trafo_Wood.bin b/ballance_blender_plugin/meshes/P_Trafo_Wood.bin new file mode 100644 index 0000000000000000000000000000000000000000..502523aed1c1110f34cf2b8b25132ac316437e2d GIT binary patch literal 396 zcmd;KU|_iRU;aQ$|DnAM3h`c7Vj8YO%6eK$1|v2&6%n k35uD4Gzf##fG{f*vjJ%kW`|-9APvHtP|O9SL6{qg0hwD;xc~qF literal 0 HcmV?d00001