예제 #1
0
    def test_import_mqo_object_with_texture(self):
        # TODO: because blender crash at bpy.ops.object.material_slot_assign(),
        #       we can not test in Blender 2.8
        if common.check_version(2, 80, 0) >= 0:
            return

        filepath = "{}/{}/texture.mqo".format(
            os.path.dirname(os.path.abspath(__file__)), MQO_FILE_DIR)
        bpy.ops.import_scene.blmqo_ot_import_mqo('EXEC_DEFAULT',
                                                 filepath=filepath,
                                                 add_import_prefix=False,
                                                 import_prefix="")

        self.assertEqual(len(bpy.data.objects), 1,
                         "Number of imported objects")
        self.assertEqual(len(bpy.data.materials), 1,
                         "Number of imported materials")
        self.assertEqual(len(bpy.data.images), 1, "Number of imported images")

        mqo_file = MqoFile()
        mqo_file.load(filepath)

        self._valid_object(mqo_file, "obj1", 8, 6)
        self._valid_material(mqo_file, "obj1", "mat1")
        self._valid_uvs(mqo_file, "obj1")
예제 #2
0
    def test_export_mqo_object_with_texture(self):
        # TODO: because blender crash at bpy.ops.object.material_slot_assign(),
        #       we can not test in Blender 2.8
        if common.check_version(2, 80, 0) >= 0:
            return

        import_filepath = "{}/{}/texture.mqo".format(
            os.path.dirname(os.path.abspath(__file__)), MQO_FILE_DIR)
        bpy.ops.import_scene.blmqo_ot_import_mqo('EXEC_DEFAULT',
                                                 filepath=import_filepath,
                                                 add_import_prefix=False,
                                                 import_prefix="")

        export_filepath = "{}/texture.mqo".format(EXPORTED_DIR, MQO_FILE_DIR)
        bpy.ops.export_scene.blmqo_ot_export_mqo('EXEC_DEFAULT',
                                                 filepath=export_filepath,
                                                 add_export_prefix=False,
                                                 export_prefix="")
        export_mqo_file = MqoFile()
        export_mqo_file.load(export_filepath)

        import_mqo_file = MqoFile()
        import_mqo_file.load(import_filepath)

        self._is_same_mqo_file(export_mqo_file, import_mqo_file)
예제 #3
0
    def test_import_mqo_single_object(self):
        filepath = "{}/{}/single_object.mqo".format(
            os.path.dirname(os.path.abspath(__file__)), MQO_FILE_DIR)
        bpy.ops.import_scene.blmqo_ot_import_mqo('EXEC_DEFAULT',
                                                 filepath=filepath,
                                                 add_import_prefix=False,
                                                 import_prefix="")

        self.assertEqual(len(bpy.data.objects), 1,
                         "Number of imported objects")
        self.assertEqual(len(bpy.data.materials), 0,
                         "Number of imported materials")
        self.assertEqual(len(bpy.data.images), 0, "Number of imported images")

        mqo_file = MqoFile()
        mqo_file.load(filepath)

        self._valid_object(mqo_file, "obj1", 8, 6)
예제 #4
0
    def test_export_no_object(self):
        export_filepath = "{}/no_object.mqo".format(EXPORTED_DIR, MQO_FILE_DIR)
        bpy.ops.export_scene.blmqo_ot_export_mqo('EXEC_DEFAULT',
                                                 filepath=export_filepath)
        export_mqo_file = MqoFile()
        export_mqo_file.load(export_filepath)

        import_filepath = "{}/{}/scene.mqo".format(
            os.path.dirname(os.path.abspath(__file__)), MQO_FILE_DIR)
        import_mqo_file = MqoFile()
        import_mqo_file.load(import_filepath)

        self._is_same_mqo_file(export_mqo_file, import_mqo_file)
예제 #5
0
    def test_export_single_object(self):
        import_filepath = "{}/{}/single_object.mqo".format(
            os.path.dirname(os.path.abspath(__file__)), MQO_FILE_DIR)
        bpy.ops.import_scene.blmqo_ot_import_mqo('EXEC_DEFAULT',
                                                 filepath=import_filepath,
                                                 add_import_prefix=False,
                                                 import_prefix="")

        export_filepath = "{}/single_object.mqo".format(EXPORTED_DIR,
                                                        MQO_FILE_DIR)
        bpy.ops.export_scene.blmqo_ot_export_mqo('EXEC_DEFAULT',
                                                 filepath=export_filepath,
                                                 add_export_prefix=False,
                                                 export_prefix="")
        export_mqo_file = MqoFile()
        export_mqo_file.load(export_filepath)

        import_mqo_file = MqoFile()
        import_mqo_file.load(import_filepath)

        self._is_same_mqo_file(export_mqo_file, import_mqo_file)
예제 #6
0
    def test_export_mqo_object_with_mirrored(self):
        import_filepath = "{}/{}/mirrored.mqo".format(
            os.path.dirname(os.path.abspath(__file__)), MQO_FILE_DIR)
        bpy.ops.import_scene.blmqo_ot_import_mqo('EXEC_DEFAULT',
                                                 filepath=import_filepath,
                                                 add_import_prefix=False,
                                                 import_prefix="")

        export_filepath = "{}/mirrored.mqo".format(EXPORTED_DIR, MQO_FILE_DIR)
        bpy.ops.export_scene.blmqo_ot_export_mqo('EXEC_DEFAULT',
                                                 filepath=export_filepath,
                                                 add_export_prefix=False,
                                                 export_prefix="")
        export_mqo_file = MqoFile()
        export_mqo_file.load(export_filepath)

        import_mqo_file = MqoFile()
        import_mqo_file.load(import_filepath)

        self.assertTrue(common.is_same(export_mqo_file.header,
                                       import_mqo_file.header))
        self.assertTrue(common.is_same(export_mqo_file.version,
                                       import_mqo_file.version))
        self.assertTrue(common.is_same(export_mqo_file.format,
                                       import_mqo_file.format))

        self.assertEqual(len(export_mqo_file.get_materials()),
                         len(import_mqo_file.get_materials()))
        for exp_mtrl, imp_mtrl in zip(export_mqo_file.get_materials(),
                                      import_mqo_file.get_materials()):
            self._is_same_mtrl(exp_mtrl, imp_mtrl)

        self.assertEqual(len(export_mqo_file.get_objects()),
                         len(import_mqo_file.get_objects()))
        for exp_obj, imp_obj in zip(export_mqo_file.get_objects(),
                                    import_mqo_file.get_objects()):
            self.assertTrue(common.is_same(exp_obj.name, imp_obj.name))
            self.assertTrue(common.is_same(exp_obj.scale, imp_obj.scale))
            self.assertTrue(common.is_same(exp_obj.rotation, imp_obj.rotation))
            self.assertTrue(common.is_same(exp_obj.translation,
                                           imp_obj.translation))
            self.assertEqual(len(exp_obj.get_vertices()), 12)
            for exp_vert, imp_vert in zip(exp_obj.get_vertices(),
                                          imp_obj.get_vertices()[0:4]):
                self.assertTrue(common.is_same(exp_vert, imp_vert))
            self.assertEqual(len(exp_obj.get_faces(uniq=True)), 10)
            self.assertTrue(exp_obj.get_faces(uniq=True)[0]
                            .is_same(imp_obj.get_faces(uniq=True)[0]))