def test_roundtrip_splitted(self): hierarchy_name = 'testname_skl' hierarchy = get_hierarchy(hierarchy_name) meshes = [ get_mesh(name='sword', skin=True), get_mesh(name='soldier', skin=True), get_mesh(name='TRUNK') ] hlod = get_hlod(hierarchy_name, hierarchy_name) boxes = [get_collision_box()] animation = get_animation(hierarchy_name, xml=True) self.set_format('W3X') self.filepath = self.outpath() + 'output_skn' create_data(self, meshes, hlod, hierarchy, boxes, animation, None) # export self.filepath = self.outpath() + 'output_skn' export_settings = { 'mode': 'HM', 'compression': 'U', 'individual_files': True, 'create_texture_xmls': True, 'use_existing_skeleton': False } save_data(self, export_settings) # check created files self.assertTrue(os.path.exists(self.outpath() + 'output_skn.w3x')) self.assertTrue(os.path.exists(self.outpath() + 'output_skn.sword.w3x')) self.assertTrue( os.path.exists(self.outpath() + 'output_skn.soldier.w3x')) self.assertTrue(os.path.exists(self.outpath() + 'output_skn.TRUNK.w3x')) self.assertTrue( os.path.exists(self.outpath() + 'output_skn.BOUNDINGBOX.w3x')) self.assertTrue(os.path.exists(self.outpath() + 'testname_skl.w3x')) self.assertTrue(os.path.exists(self.outpath() + 'texture.xml')) # check created include entries root = find_root(self, self.outpath() + 'output_skn.w3x') self.assertEqual(6, len(root.find('Includes').findall('Include'))) # reset scene bpy.ops.wm.read_homefile(app_template='') # import self.filepath = self.outpath() + 'output_skn.w3x' load(self) # check created objects self.assertTrue('testname_skl' in bpy.data.objects) self.assertTrue('testname_skl' in bpy.data.armatures) amt = bpy.data.armatures['testname_skl'] self.assertEqual(7, len(amt.bones)) self.assertTrue('sword' in bpy.data.objects) self.assertTrue('soldier' in bpy.data.objects) self.assertTrue('TRUNK' in bpy.data.objects)
def test_roundtrip(self): hierarchy_name = 'testhiera_skl' hierarchy = get_hierarchy(hierarchy_name) meshes = [ get_mesh(name='sword', skin=True), get_mesh(name='soldier', skin=True), get_mesh(name='TRUNK') ] hlod = get_hlod('TestModelName', hierarchy_name) boxes = [get_collision_box()] animation = get_animation(hierarchy_name, xml=True) self.filepath = self.outpath() + 'output_skn' create_data(self, meshes, hlod, hierarchy, boxes, animation, None) self.set_format('W3X') # export self.filepath = self.outpath() + 'output_skn' export_settings = { 'mode': 'HM', 'individual_files': False, 'use_existing_skeleton': True, 'create_texture_xmls': True } save_data(self, export_settings) self.filepath = self.outpath() + 'testhiera_skl' export_settings['mode'] = 'H' save_data(self, export_settings) self.filepath = self.outpath() + 'output_ani' export_settings['mode'] = 'A' export_settings['compression'] = 'U' save_data(self, export_settings) # reset scene bpy.ops.wm.read_homefile(app_template='') # import self.filepath = self.outpath() + 'output_skn.w3x' load(self) self.filepath = self.outpath() + 'output_ani.w3x' load(self) # check created objects self.assertTrue(hierarchy_name in bpy.data.objects) self.assertTrue(hierarchy_name in bpy.data.armatures) amt = bpy.data.armatures[hierarchy_name] self.assertEqual(7, len(amt.bones)) self.assertTrue('sword' in bpy.data.objects) self.assertTrue('soldier' in bpy.data.objects) self.assertTrue('TRUNK' in bpy.data.objects)
def test_roundtrip_compressed_animation(self): hierarchy_name = 'testhiera_skl' hierarchy = get_hierarchy(hierarchy_name) meshes = [ get_mesh(name='sword', skin=True), get_mesh(name='soldier', skin=True), get_mesh(name='TRUNK') ] hlod = get_hlod('testmodelname', hierarchy_name) boxes = [get_collision_box()] dazzles = [get_dazzle()] comp_animation = get_compressed_animation(hierarchy_name) self.filepath = self.outpath() + 'output_skn' create_data(self, meshes, hlod, hierarchy, boxes, None, comp_animation, dazzles) # export self.filepath = self.outpath() + 'output_skn' export_settings = {'mode': 'HM', 'use_existing_skeleton': True} save_data(self, export_settings) self.filepath = self.outpath() + 'testhiera_skl' export_settings['mode'] = 'H' save_data(self, export_settings) self.filepath = self.outpath() + 'output_comp_ani' export_settings['mode'] = 'A' export_settings['compression'] = 'TC' save_data(self, export_settings) # reset scene bpy.ops.wm.read_homefile(app_template='') # import self.filepath = self.outpath() + 'output_skn.w3d' load(self) self.filepath = self.outpath() + 'output_comp_ani.w3d' load(self) # check created objects self.assertTrue(hierarchy_name.upper() in bpy.data.objects) self.assertTrue(hierarchy_name.upper() in bpy.data.armatures) amt = bpy.data.armatures[hierarchy_name.upper()] self.assertEqual(7, len(amt.bones)) self.assertTrue('sword' in bpy.data.objects) self.assertTrue('soldier' in bpy.data.objects) self.assertTrue('TRUNK' in bpy.data.objects) self.assertTrue('Brakelight' in bpy.data.objects)
def test_roundtrip_HAM(self): hierarchy_name = 'testname' hierarchy = get_hierarchy(hierarchy_name) meshes = [ get_mesh(name='sword', skin=True), get_mesh(name='soldier', skin=True), get_mesh(name='TRUNK') ] hlod = get_hlod(hierarchy_name, hierarchy_name) boxes = [get_collision_box()] animation = get_animation(hierarchy_name, xml=True) self.set_format('W3X') self.filepath = self.outpath() + 'output' create_data(self, meshes, hlod, hierarchy, boxes, animation, None) # export self.filepath = self.outpath() + 'output' export_settings = { 'mode': 'HAM', 'compression': 'U', 'individual_files': False, 'create_texture_xmls': True } save_data(self, export_settings) # check created files self.assertTrue(os.path.exists(self.outpath() + 'output.w3x')) self.assertTrue(os.path.exists(self.outpath() + 'texture.xml')) # reset scene bpy.ops.wm.read_homefile(app_template='') # import self.filepath = self.outpath() + 'output.w3x' load(self) # check created objects self.assertTrue('testname' in bpy.data.objects) self.assertTrue('testname' in bpy.data.armatures) amt = bpy.data.armatures['testname'] self.assertEqual(7, len(amt.bones)) self.assertTrue('sword' in bpy.data.objects) self.assertTrue('soldier' in bpy.data.objects) self.assertTrue('TRUNK' in bpy.data.objects)
def test_import_no_skeleton_file_found(self): hierarchy_name = 'TestHiera_SKL' meshes = [ get_mesh(name='sword', skin=True), get_mesh(name='soldier', skin=True), get_mesh(name='TRUNK') ] hlod = get_hlod('TestModelName', hierarchy_name) box = get_collision_box() # write to file skn = open(self.outpath() + 'base_skn.w3d', 'wb') for mesh in meshes: mesh.write(skn) hlod.write(skn) box.write(skn) skn.close() # import self.filepath = self.outpath() + 'base_skn.w3d' load(self)
def test_roundtrip_HAM_tc_animation(self): hierarchy_name = 'TestName' hierarchy = get_hierarchy(hierarchy_name) meshes = [ get_mesh(name='sword', skin=True), get_mesh(name='soldier', skin=True), get_mesh(name='TRUNK') ] hlod = get_hlod(hierarchy_name, hierarchy_name) boxes = [get_collision_box()] dazzles = [get_dazzle()] comp_animation = get_compressed_animation(hierarchy_name) self.filepath = self.outpath() + 'output' create_data(self, meshes, hlod, hierarchy, boxes, None, comp_animation, dazzles) # export self.filepath = self.outpath() + 'output' export_settings = {'mode': 'HAM', 'compression': 'TC'} save_data(self, export_settings) # reset scene bpy.ops.wm.read_homefile(app_template='') # import self.filepath = self.outpath() + 'output.w3d' load(self) # check created objects self.assertTrue('output' in bpy.data.armatures) amt = bpy.data.armatures['output'] self.assertEqual(7, len(amt.bones)) self.assertTrue('sword' in bpy.data.objects) self.assertTrue('soldier' in bpy.data.objects) self.assertTrue('TRUNK' in bpy.data.objects) self.assertTrue('Brakelight' in bpy.data.objects)