fully finish bm import/export function
This commit is contained in:
parent
034f1e55aa
commit
af05f2ae21
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
# our generated mesh should be save as binary
|
||||
*.bin binary
|
@ -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):
|
||||
|
@ -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"
|
||||
]
|
BIN
ballance_blender_plugin/meshes/PC_TwoFlames.bin
Normal file
BIN
ballance_blender_plugin/meshes/PC_TwoFlames.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/PE_Balloon.bin
Normal file
BIN
ballance_blender_plugin/meshes/PE_Balloon.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/PR_Resetpoint.bin
Normal file
BIN
ballance_blender_plugin/meshes/PR_Resetpoint.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/PS_FourFlames.bin
Normal file
BIN
ballance_blender_plugin/meshes/PS_FourFlames.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Ball_Paper.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Ball_Paper.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Ball_Stone.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Ball_Stone.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Ball_Wood.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Ball_Wood.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Box.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Box.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Dome.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Dome.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Extra_Life.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Extra_Life.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Extra_Point.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Extra_Point.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Modul_01.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Modul_01.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Modul_03.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Modul_03.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Modul_08.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Modul_08.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Modul_17.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Modul_17.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Modul_18.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Modul_18.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Modul_19.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Modul_19.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Modul_25.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Modul_25.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Modul_26.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Modul_26.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Modul_29.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Modul_29.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Modul_30.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Modul_30.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Modul_34.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Modul_34.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Modul_37.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Modul_37.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Modul_41.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Modul_41.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Trafo_Paper.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Trafo_Paper.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Trafo_Stone.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Trafo_Stone.bin
Normal file
Binary file not shown.
BIN
ballance_blender_plugin/meshes/P_Trafo_Wood.bin
Normal file
BIN
ballance_blender_plugin/meshes/P_Trafo_Wood.bin
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user