Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
continue
# print(o.id.name.decode("utf-8", "strict"))
object_name = o.id.name.decode( "utf-8").replace(".", "_")[2:]
object_name = object_name.split('\0', 1)[0]
print('name:', object_name)
vertices= o.data.mvert
verts = [v.co for v in o.data.mvert]
verts = tuple(verts)
file_content = 'Mesh(' + str(verts)
file_name = ''.join([f.split('.')[0], '.ursinamesh'])
if number_of_objects > 1:
file_name = ''.join([f.split('.')[0], '_', object_name, '.ursinamesh'])
file_path = os.path.join(application.compressed_models_folder, file_name)
print(file_path)
tris = tuple([triindex.v for triindex in o.data.mloop])
flippedtris = list()
for i in range(0, len(tris)-3, 3):
flippedtris.append(tris[i+2])
flippedtris.append(tris[i+1])
flippedtris.append(tris[i+0])
file_content += ', triangles=' + str(flippedtris)
if o.data.mloopuv:
uvs = tuple([v.uv for v in o.data.mloopuv])
file_content += ', uvs=' + str(uvs)
file_content += ''', mode='triangle')'''
def compress_models(path=None, outpath=application.compressed_models_folder, name='*'):
if not application.compressed_models_folder.exists():
application.compressed_models_folder.mkdir()
export_script_path = application.internal_scripts_folder / '_blend_export.py'
exported = list()
# print('ttttttttttttttttttttttttttttttttttttt', f'{path}**\\{name}.blend')
for blend_file in path.glob(f'**/{name}.blend'):
with open(blend_file, 'rb') as f:
blender_version_number = (f.read(12).decode("utf-8"))[-3:] # get version from start of .blend file e.g. 'BLENDER-v280'
blender_version_number = blender_version_number[0] + '.' + blender_version_number[1:2]
print('blender_version:', blender_version_number)
if blender_version_number in application.blender_paths:
blender = application.blender_paths[blender_version_number]
else:
print('using default blender version')
def compress_models(path=None, outpath=application.compressed_models_folder, name='*'):
if not application.compressed_models_folder.exists():
application.compressed_models_folder.mkdir()
export_script_path = application.internal_scripts_folder / '_blend_export.py'
exported = list()
# print('ttttttttttttttttttttttttttttttttttttt', f'{path}**\\{name}.blend')
for blend_file in path.glob(f'**/{name}.blend'):
with open(blend_file, 'rb') as f:
blender_version_number = (f.read(12).decode("utf-8"))[-3:] # get version from start of .blend file e.g. 'BLENDER-v280'
blender_version_number = blender_version_number[0] + '.' + blender_version_number[1:2]
print('blender_version:', blender_version_number)
if blender_version_number in application.blender_paths:
blender = application.blender_paths[blender_version_number]
else:
print('using default blender version')
blender = application.blender_paths['default']
out_file_path = outpath / (blend_file.stem + '.obj')
def save(self, name='', path=application.compressed_models_folder):
if not application.compressed_models_folder.exists():
application.compressed_models_folder.mkdir()
if not name and hasattr(self, 'path'):
name = self.path.stem
if not '.' in name:
name += '.ursinamesh'
if name.endswith('ursinamesh'):
with open(path / name, 'w') as f:
recipe = self.recipe.replace('LVector3f', '')
f.write(recipe)
print('saved .ursinamesh to:', path / name)
elif name.endswith('.obj'):
from ursina.mesh_importer import ursina_mesh_to_obj
ursina_mesh_to_obj(self, name, path)
def compress_models_fast(model_name=None, write_to_disk=False):
print('find models')
from tinyblend import BlenderFile
application.compressed_models_folder.mkdir(parents=True, exist_ok=True)
files = os.listdir(application.models_folder)
compressed_files = os.listdir(application.compressed_models_folder)
for f in files:
if f.endswith('.blend'):
# print('f:', application.compressed_models_folder + '/' + f)
print('compress______', f)
blend = BlenderFile(application.models_folder + '/' + f)
number_of_objects = len(blend.list('Object'))
for o in blend.list('Object'):
if not o.data.mvert:
continue
# print(o.id.name.decode("utf-8", "strict"))
object_name = o.id.name.decode( "utf-8").replace(".", "_")[2:]
def compress_models(path=None, outpath=application.compressed_models_folder, name='*'):
if not application.compressed_models_folder.exists():
application.compressed_models_folder.mkdir()
export_script_path = application.internal_scripts_folder / '_blend_export.py'
exported = list()
# print('ttttttttttttttttttttttttttttttttttttt', f'{path}**\\{name}.blend')
for blend_file in path.glob(f'**/{name}.blend'):
with open(blend_file, 'rb') as f:
blender_version_number = (f.read(12).decode("utf-8"))[-3:] # get version from start of .blend file e.g. 'BLENDER-v280'
blender_version_number = blender_version_number[0] + '.' + blender_version_number[1:2]
print('blender_version:', blender_version_number)
if blender_version_number in application.blender_paths:
blender = application.blender_paths[blender_version_number]
else:
print('using default blender version')
blender = application.blender_paths['default']
def save(self, name='', path=application.compressed_models_folder):
if not application.compressed_models_folder.exists():
application.compressed_models_folder.mkdir()
if not name and hasattr(self, 'path'):
name = self.path.stem
if not '.' in name:
name += '.ursinamesh'
if name.endswith('ursinamesh'):
with open(path / name, 'w') as f:
recipe = self.recipe.replace('LVector3f', '')
f.write(recipe)
print('saved .ursinamesh to:', path / name)
elif name.endswith('.obj'):
from ursina.mesh_importer import ursina_mesh_to_obj