Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import bpy
- import os
- from bpy.props import (
- BoolProperty,
- BoolVectorProperty,
- FloatProperty,
- FloatVectorProperty,
- IntProperty,
- )
- QUADRIFLOW_PATH = ""
- class QuadriflowRemeshOperator(bpy.types.Operator):
- """Tooltip"""
- bl_idname = "object.quadriflow_remesh"
- bl_label = "Quadriflow Remesh"
- @classmethod
- def poll(cls, context):
- return context.active_object is not None
- def execute(self, context):
- ob = context.object
- output_path = os.path.join(QUADRIFLOW_PATH, 'input.obj')
- input_path = os.path.join(QUADRIFLOW_PATH, 'output.obj')
- bpy.ops.export_scene.obj(filepath=output_path, check_existing=True, use_selection=True, use_mesh_modifiers=False, use_normals=True, use_uvs=True, use_materials=False, use_triangles=True, path_mode='AUTO')
- quadriflow_command = os.path.join(QUADRIFLOW_PATH, 'quadriflow')
- if ob.quadriflow_mcf:
- quadriflow_command += " -mcf"
- if ob.quadriflow_sharp:
- quadriflow_command += " -sharp"
- quadriflow_command += " -i " + output_path
- quadriflow_command += " -o " + input_path
- quadriflow_command += " -f " + str(ob.quadriflow_resolution)
- print(quadriflow_command)
- os.system(quadriflow_command)
- bpy.ops.object.delete()
- bpy.ops.import_scene.obj(filepath=input_path)
- return {'FINISHED'}
- class PT_quadriflow(bpy.types.Panel):
- bl_idname = "OBJECT_PT_quadriflow"
- bl_label = "Quadriflow"
- bl_space_type = 'PROPERTIES'
- bl_region_type = 'WINDOW'
- bl_context = "data"
- def draw(self, context):
- layout = self.layout
- ob = context.object
- layout.prop(ob, "quadriflow_resolution")
- layout.prop(ob, "quadriflow_mcf")
- layout.prop(ob, "quadriflow_sharp")
- props = layout.operator("object.quadriflow_remesh", icon='MESH_CUBE', text="Quadriflow Remesh")
- def register():
- bpy.types.Object.quadriflow_resolution = bpy.props.IntProperty(
- name="Resolution",
- description="Target number of output faces",
- min=5, max=10000,
- default=300,
- )
- bpy.types.Object.quadriflow_mcf = bpy.props.BoolProperty(
- name="Min-cost flow",
- description="Adaptive network simplex minimum-cost flow solver",
- default=False,
- )
- bpy.types.Object.quadriflow_sharp = bpy.props.BoolProperty(
- name="Sharp preserverving",
- description="Detect and perserve the sharp edges",
- default=True,
- )
- bpy.utils.register_class(QuadriflowRemeshOperator)
- bpy.utils.register_class(PT_quadriflow)
- def unregister():
- bpy.utils.unregister_class(QuadriflowRemeshOperator)
- bpy.utils.unregister_class(PT_quadriflow)
- if __name__ == "__main__":
- register()
Advertisement
Add Comment
Please, Sign In to add comment