VDM brush baker #104580
@ -27,7 +27,7 @@ importlib.reload(bakematerial)
|
||||
bl_info = {
|
||||
'name': 'VDM Brush Baker',
|
||||
'author': 'Robin Hohnsbeen',
|
||||
'description': 'Bake VDM Brushes from planes easily',
|
||||
'description': 'Bake vector displacement brushes easily from a plane',
|
||||
'blender': (3, 5, 0),
|
||||
'version': (1, 0, 2),
|
||||
'location': 'Sculpt Mode: View3D > Sidebar > Tool Tab',
|
||||
@ -96,36 +96,45 @@ class PT_VDMBaker(bpy.types.Panel):
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
addon_data = get_addon_data()
|
||||
|
||||
layout.operator(create_sculpt_plane.bl_idname)
|
||||
|
||||
addon_data = get_addon_data()
|
||||
layout.separator()
|
||||
|
||||
is_occupied, brush_name = get_new_brush_name()
|
||||
layout.prop(addon_data, 'draft_brush_name')
|
||||
resolution_layout = layout.row(align=True)
|
||||
resolution_layout.label(text='Map resolution: ')
|
||||
resolution_layout.prop(addon_data, 'render_resolution')
|
||||
|
||||
compression_layout = layout.row(align=True)
|
||||
compression_layout.label(text='Compression: ')
|
||||
compression_layout.prop(addon_data, 'compression')
|
||||
|
||||
colordepth_layout = layout.row(align=True)
|
||||
colordepth_layout.label(text='Color depth: ')
|
||||
colordepth_layout.prop(addon_data, 'color_depth', text='')
|
||||
|
||||
button_text = 'Render and create brush'
|
||||
|
||||
createvdmlayout = layout.row()
|
||||
createvdmlayout.enabled = context.active_object is not None and context.active_object.type == 'MESH'
|
||||
createvdmlayout.operator(
|
||||
create_vdm_brush.bl_idname, text=button_text, icon='META_DATA')
|
||||
|
||||
if is_occupied:
|
||||
layout.label(
|
||||
text='Name taken: overrides Brush.', icon='INFO')
|
||||
button_text = 'Overwrite vdm brush'
|
||||
|
||||
createvdmlayout = layout.row()
|
||||
createvdmlayout.enabled = context.active_object is not None and context.active_object.type == 'MESH'
|
||||
createvdmlayout.operator(
|
||||
create_vdm_brush.bl_idname, text=button_text, icon='META_DATA')
|
||||
layout.prop(addon_data, 'draft_brush_name')
|
||||
|
||||
settings_layout = layout.column(align=True)
|
||||
settings_layout.label(text='Settings')
|
||||
layout_box = settings_layout.box()
|
||||
resolution_layout = layout_box.row(align=True)
|
||||
resolution_layout.label(text='Map resolution: ')
|
||||
resolution_layout.prop(addon_data, 'render_resolution')
|
||||
|
||||
compression_layout = layout_box.row(align=True)
|
||||
compression_layout.label(text='Compression: ')
|
||||
compression_layout.prop(addon_data, 'compression')
|
||||
|
||||
colordepth_layout = layout_box.row(align=True)
|
||||
colordepth_layout.label(text='Color depth: ')
|
||||
colordepth_layout.prop(addon_data, 'color_depth', text='')
|
||||
|
||||
samples_layout = layout_box.row(align=True)
|
||||
samples_layout.label(text='Samples:')
|
||||
samples_layout.prop(addon_data, 'render_samples', text='')
|
||||
|
||||
layout.separator()
|
||||
|
||||
@ -232,17 +241,7 @@ class create_vdm_brush(bpy.types.Operator):
|
||||
vdm_plane.rotation_euler = (0, 0, 0)
|
||||
|
||||
vdm_texture_node = vdm_bake_material.node_tree.nodes['VDMTexture']
|
||||
render_resolution = 128
|
||||
if addon_data.render_resolution == '256':
|
||||
render_resolution = 256
|
||||
elif addon_data.render_resolution == '512':
|
||||
render_resolution = 512
|
||||
elif addon_data.render_resolution == '1024':
|
||||
render_resolution = 1024
|
||||
elif addon_data.render_resolution == '2048':
|
||||
render_resolution = 2048
|
||||
elif addon_data.render_resolution == '4096':
|
||||
render_resolution = 4096
|
||||
render_resolution = int(addon_data.render_resolution)
|
||||
|
||||
bpy.ops.object.select_all(action='DESELECT')
|
||||
vdm_plane.select_set(True)
|
||||
@ -259,11 +258,8 @@ class create_vdm_brush(bpy.types.Operator):
|
||||
if addon_data.compression == 'zip':
|
||||
scene.render.image_settings.exr_codec = 'ZIP'
|
||||
|
||||
scene.render.image_settings.color_depth = '32'
|
||||
vdm_texture_image.use_half_precision = False
|
||||
if addon_data.color_depth == '16':
|
||||
vdm_texture_image.use_half_precision = True
|
||||
scene.render.image_settings.color_depth = '16'
|
||||
scene.render.image_settings.color_depth = addon_data.color_depth
|
||||
vdm_texture_image.use_half_precision = addon_data.color_depth == '16'
|
||||
|
||||
vdm_texture_image.colorspace_settings.is_data = True
|
||||
vdm_texture_image.colorspace_settings.name = 'Non-Color'
|
||||
@ -275,7 +271,7 @@ class create_vdm_brush(bpy.types.Operator):
|
||||
bpy.ops.object.bake(type='EMIT')
|
||||
# save as render so we have more control over compression settings
|
||||
vdm_texture_image.save_render(
|
||||
filepath=bpy.path.abspath(output_path), scene=scene)
|
||||
filepath=bpy.path.abspath(output_path), scene=scene, quality=0)
|
||||
# Removes the dirty flag, so the image doesn't have to be saved again by the user.
|
||||
vdm_texture_image.pack()
|
||||
vdm_texture_image.unpack(method='REMOVE')
|
||||
|
Loading…
Reference in New Issue
Block a user