Newer
Older
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
description = "Manipulates the shape of the Ring",
default = 2, min = 0.01, max = 10.0
)
###################Prism
prism_n: IntProperty(
name = "Sides",
description = "Number of sides",
default = 5, min = 3, max = 720
)
prism_r: FloatProperty(
name = "Radius",
description = "Radius",
default = 1.0
)
##################Isosurface
iso_function_text: StringProperty(
name="Function Text",
maxlen=1024
) #,update=iso_props_update_callback)
##################PolygonToCircle
polytocircle_resolution: IntProperty(
name = "Resolution",
description = "",
default = 3, min = 0, max = 256
)
polytocircle_ngon: IntProperty(
name = "NGon",
description = "",
min = 3, max = 64,default = 5
)
polytocircle_ngonR: FloatProperty(
name = "NGon Radius",
description = "",
default = 0.3
)
polytocircle_circleR: FloatProperty(
name = "Circle Radius",
description = "",
default = 1.0
)
###############################################################################
# Modifiers POV properties.
###############################################################################
# class RenderPovSettingsModifier(PropertyGroup):
name="Operation",
description="Choose the type of calculation for Boolean modifier",
items=(
("BMESH", "Use the BMesh Boolean Solver", ""),
("CARVE", "Use the Carve Boolean Solver", ""),
("POV", "Use POV Constructive Solid Geometry", "")
),
default="BMESH",
)
#################Avogadro
# filename_ext = ".png"
# filter_glob = StringProperty(
# default="*.exr;*.gif;*.hdr;*.iff;*.jpeg;*.jpg;*.pgm;*.png;*.pot;*.ppm;*.sys;*.tga;*.tiff;*.EXR;*.GIF;*.HDR;*.IFF;*.JPEG;*.JPG;*.PGM;*.PNG;*.POT;*.PPM;*.SYS;*.TGA;*.TIFF",
# options={'HIDDEN'},
# )
Bastien Montagne
committed
###############################################################################
# Camera POV properties.
###############################################################################
class RenderPovSettingsCamera(PropertyGroup):
"""Declare camera properties controllable in UI and translated to POV."""
name="Depth Of Field",
description="Enable POV Depth Of Field ",
default=False,
)
Campbell Barton
committed
# Aperture (Intensity of the Blur)
name="Aperture",
description="Similar to a real camera's aperture effect over focal blur (though not "
"in physical units and independent of focal length). "
"Increase to get more blur",
min=0.01, max=1.00, default=0.50
)
Campbell Barton
committed
# Aperture adaptive sampling
name="Samples Min",
description="Minimum number of rays to use for each pixel",
min=1, max=128, default=3
)
name="Samples Max",
description="Maximum number of rays to use for each pixel",
min=1, max=128, default=9
)
name="Variance",
description="Minimum threshold (fractional value) for adaptive DOF sampling (up "
"increases quality and render time). The value for the variance should "
"be in the range of the smallest displayable color difference",
min=1, max=100000, soft_max=10000, default=8192
)
name="Confidence",
description="Probability to reach the real color value. Larger confidence values "
"will lead to more samples, slower traces and better images",
normal_enable: BoolProperty(
name="Perturbated Camera",
default=False,
)
cam_normal: FloatProperty(
name="Normal Strength",
min=0.0,
max=1.0,
default=0.0,
)
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
items=(
('agate', "Agate", ""),
('boxed', "Boxed", ""),
('bumps', "Bumps", ""),
('cells', "Cells", ""),
('crackle', "Crackle", ""),
('dents', "Dents", ""),
('granite', "Granite", ""),
('leopard', "Leopard", ""),
('marble', "Marble", ""),
('onion', "Onion", ""),
('pavement', "Pavement", ""),
('planar', "Planar", ""),
('quilted', "Quilted", ""),
('ripples', "Ripples", ""),
('radial', "Radial", ""),
('spherical', "Spherical", ""),
('spiral1', "Spiral1", ""),
('spiral2', "Spiral2", ""),
('spotted', "Spotted", ""),
('square', "Square", ""),
('tiling', "Tiling", ""),
('waves', "Waves", ""),
('wood', "Wood", ""),
('wrinkles', "Wrinkles", "")
),
turbulence: FloatProperty(name="Turbulence", min=0.0, max=100.0, default=0.1)
scale: FloatProperty(name="Scale", min=0.0,default=1.0)
Bastien Montagne
committed
##################################CustomPOV Code############################
Campbell Barton
committed
# Only DUMMIES below for now:
replacement_text: StringProperty(
name="Texts in blend file",
description="Type the declared name in custom POV code or an external .inc "
"it points at. camera {} expected",
default="",
)
###############################################################################
# Light POV properties.
###############################################################################
class RenderPovSettingsLight(PropertyGroup):
"""Declare light properties controllable in UI and translated to POV."""
# former Space properties from removed Blender Internal
use_limited_texture_context: BoolProperty(
name="",
description="Use the limited version of texture user (for ‘old shading’ mode)",
default=True,
)
texture_context: EnumProperty(
name="Texture context",
description="Type of texture data to display and edit",
items=(
('MATERIAL', "", "Show material textures", "MATERIAL",0), # "Show material textures"
('WORLD', "", "Show world textures", "WORLD",1), # "Show world textures"
('LAMP', "", "Show lamp textures", "LIGHT",2), # "Show lamp textures"
('PARTICLES', "", "Show particles textures", "PARTICLES",3), # "Show particles textures"
('LINESTYLE', "", "Show linestyle textures", "LINE_DATA",4), # "Show linestyle textures"
('OTHER', "", "Show other data textures", "TEXTURE_DATA",5), # "Show other data textures"
),
name="Shadow",
description="",
items=(("NOSHADOW", "No Shadow", "No Shadow"),
("RAY_SHADOW", "Ray Shadow", "Ray Shadow, Use ray tracing for shadow")),
default="RAY_SHADOW",
)
active_texture_index: IntProperty(
name = "Index for texture_slots",
default = 0
)
name="Halo",
description="Render spotlight with a volumetric halo",
default=False,
)
name="Halo intensity",
description="Brightness of the spotlight halo cone",
soft_min=0.0, soft_max=1.0, default=1.0
)
name = "Number of samples taken extra (samples x samples)",
min=1, soft_max=64,
default = 1,
)
name = "Number of samples taken extra (samples x samples)",
min=1, soft_max=64,
default = 1,
)
name="",
description="Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower",
items=(
('ADAPTIVE_QMC', "", "Halton samples distribution", "",0),
('CONSTANT_QMC', "", "QMC samples distribution", "",1),
('CONSTANT_JITTERED', "", "Uses POV jitter keyword", "",2) # "Show other data textures"
),
name="Jitter",
description="Use noise for sampling (Constant Jittered sampling)",
default=False,
)
###############################################################################
# World POV properties.
###############################################################################
class RenderPovSettingsWorld(PropertyGroup):
"""Declare world properties controllable in UI and translated to POV."""
# former Space properties from removed Blender Internal
use_limited_texture_context: BoolProperty(
name="",
description="Use the limited version of texture user (for ‘old shading’ mode)",
default=True,
)
texture_context: EnumProperty(
name="Texture context",
description="Type of texture data to display and edit",
items=(
('MATERIAL', "", "Show material textures", "MATERIAL",0), # "Show material textures"
('WORLD', "", "Show world textures", "WORLD",1), # "Show world textures"
('LIGHT', "", "Show lamp textures", "LIGHT",2), # "Show lamp textures"
('PARTICLES', "", "Show particles textures", "PARTICLES",3), # "Show particles textures"
('LINESTYLE', "", "Show linestyle textures", "LINE_DATA",4), # "Show linestyle textures"
('OTHER', "", "Show other data textures", "TEXTURE_DATA",5), # "Show other data textures"
),
name="Blend Sky",
description="Render background with natural progression from horizon to zenith",
default=False,
)
name="Paper Sky",
description="Flatten blend or texture coordinates",
default=False,
)
name="Real Sky",
description="Render background with a real horizon, relative to the camera angle",
default=False,
)
horizon_color: FloatVectorProperty(
name="Horizon Color",
description="Color at the horizon",
precision=4, step=0.01, min=0, soft_max=1,
default=(0.0, 0.0, 0.0), options={'ANIMATABLE'}, subtype='COLOR',
zenith_color: FloatVectorProperty(
name="Zenith Color",
description="Color at the zenith",
precision=4, step=0.01, min=0, soft_max=1,
default=(0.0, 0.0, 0.0), options={'ANIMATABLE'}, subtype='COLOR',
ambient_color: FloatVectorProperty(
name="Ambient Color",
description="Ambient color of the world",
precision=4, step=0.01, min=0, soft_max=1,
default=(0.0, 0.0, 0.0), options={'ANIMATABLE'}, subtype='COLOR',
active_texture_index: IntProperty(
default = 0,
update = brush_texture_update
class WorldTextureSlot(PropertyGroup):
"""Declare world texture slot level properties for UI and translated to POV."""
bl_idname="pov_texture_slots",
bl_description="Texture_slots from Blender-2.79",
# Adding a "real" texture datablock as property is not possible
# (or at least not easy through a dynamically populated EnumProperty).
# That's why we'll use a prop_search() UILayout function in ui.py.
# So we'll assign the name of the needed texture datablock to the below StringProperty.
texture : StringProperty(update=active_texture_name_from_uilist)
# and use another temporary StringProperty to change the linked data
texture_search : StringProperty(
name="",
update = active_texture_name_from_search,
description = "Browse Texture to be linked",
)
blend_factor: FloatProperty(
name="Blend",
description="Amount texture affects color progression of the "
"background",
soft_min=0.0, soft_max=1.0, default=1.0
)
horizon_factor: FloatProperty(
name="Horizon",
description="Amount texture affects color of the horizon",
soft_min=0.0, soft_max=1.0, default=1.0,
)
object: StringProperty(
name="Object",
description="Object to use for mapping with Object texture coordinates",
default="",
)
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
offset: FloatVectorProperty(
name="Offset",
description=("Fine tune of the texture mapping X, Y and Z locations "),
precision=4,
step=0.1,
soft_min= -100.0,
soft_max=100.0,
default=(0.0,0.0,0.0),
options={'ANIMATABLE'},
subtype='TRANSLATION',
)
scale: FloatVectorProperty(
name="Size",
subtype='XYZ',
size=3,
description="Set scaling for the texture’s X, Y and Z sizes ",
precision=4,
step=0.1,
soft_min= -100.0,
soft_max=100.0,
default=(1.0,1.0,1.0),
options={'ANIMATABLE'},
)
texture_coords: EnumProperty(
name="Coordinates",
description="Texture coordinates used to map the texture onto the background",
items=(
("VIEW", "View", "Use view vector for the texture coordinates"),
("GLOBAL", "Global", "Use global coordinates for the texture coordinates (interior mist)"),
("ANGMAP", "AngMap", "Use 360 degree angular coordinates, e.g. for spherical light probes"),
("SPHERE", "Sphere", "For 360 degree panorama sky, spherical mapped, only top half"),
("EQUIRECT", "Equirectangular", "For 360 degree panorama sky, equirectangular mapping"),
("TUBE", "Tube", "For 360 degree panorama sky, cylindrical mapped, only top half"),
("OBJECT", "Object", "Use linked object’s coordinates for texture coordinates")
),
use_map_blend: BoolProperty(
name="Blend Map",
description="Affect the color progression of the background",
default=True,
)
use_map_horizon: BoolProperty(
name="Horizon Map",
description="Affect the color of the horizon",
default=False,
)
use_map_zenith_down: BoolProperty(
name="",
description="Affect the color of the zenith below",
default=False,
)
use_map_zenith_up: BoolProperty(
name="Zenith Up Map",
description="Affect the color of the zenith above",
default=False,
)
zenith_down_factor: FloatProperty(
name="Zenith Down",
description="Amount texture affects color of the zenith below",
soft_min=0.0, soft_max=1.0, default=1.0
)
zenith_up_factor: FloatProperty(
name="Zenith Up",
description="Amount texture affects color of the zenith above",
soft_min=0.0, soft_max=1.0, default=1.0
)
# class WORLD_TEXTURE_SLOTS_UL_layerlist(bpy.types.UIList):
class WorldTextureSlots(bpy.props.PropertyGroup):
index = bpy.prop.PropertyInt(name='index')
bpy.types.World.texture_slots = bpy.props.CollectionProperty(type=PropertyGroup)
for i in range(18): # length of world texture slots
world.texture_slots.add()
'''
class MATERIAL_TEXTURE_SLOTS_UL_POV_layerlist(bpy.types.UIList):
#index: bpy.props.IntProperty(name='index')
def draw_item(self, context, layout, data, item, icon, active_data, active_propname):
ob = data
slot = item
# draw_item must handle the three layout types... Usually 'DEFAULT' and 'COMPACT' can share the same code.
if self.layout_type in {'DEFAULT', 'COMPACT'}:
# You should always start your row layout by a label (icon + text), or a non-embossed text field,
# this will also make the row easily selectable in the list! The later also enables ctrl-click rename.
# We use icon_value of label, as our given icon is an integer value, not an enum ID.
# Note "data" names should never be translated!
if slot:
layout.prop(item, "texture", text="", emboss=False, icon='TEXTURE')
else:
layout.label(text="New", translate=False, icon_value=icon)
# 'GRID' layout type should be as compact as possible (typically a single icon!).
elif self.layout_type in {'GRID'}:
layout.alignment = 'CENTER'
Bastien Montagne
committed
###############################################################################
# Text POV properties.
###############################################################################
class RenderPovSettingsText(PropertyGroup):
"""Declare text properties to use UI as an IDE or render text snippets to POV."""
name="Custom Code",
description="rendered source: Both adds text at the "
"top of the exported POV file",
items=(
("3dview", "View", ""),
("text", "Text", ""),
("both", "Both", "")
),
###############################################################################
# Povray Preferences.
###############################################################################
class PovrayPreferences(AddonPreferences):
"""Declare preference variables to set up POV binary."""
branch_feature_set_povray: EnumProperty(
name="Feature Set",
description="Choose between official (POV-Ray) or (UberPOV) "
"development branch features to write in the pov file",
items= (
('povray', 'Official POV-Ray', '','PLUGIN', 0),
('uberpov', 'Unofficial UberPOV', '', 'PLUGIN', 1)
),
filepath_povray: StringProperty(
name="Binary Location",
description="Path to renderer executable",
subtype='FILE_PATH',
)
name="Includes Location",
description="Path to Insert Menu files",
subtype='FILE_PATH',
)
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
use_sounds: BoolProperty(
name="Use Sound",
description="Signaling end of the render process at various"
"stages can help if you're away from monitor",
default=False,
)
# TODO: Auto find POV sound directory as it does for binary
# And implement the three cases, left uncommented for a dummy
# interface in case some doc screenshots get made for that area
filepath_complete_sound: StringProperty(
name="Finish Render Sound",
description="Path to finished render sound file",
subtype='FILE_PATH',
)
filepath_parse_error_sound: StringProperty(
name="Parse Error Sound",
description="Path to parsing time error sound file",
subtype='FILE_PATH',
)
filepath_cancel_sound: StringProperty(
name="Cancel Render Sound",
description="Path to cancelled or render time error sound file",
subtype='FILE_PATH',
)
#shall we not move this to UI file?
def draw(self, context):
layout = self.layout
layout.prop(self, "branch_feature_set_povray")
layout.prop(self, "filepath_povray")
Maurice Raybaud
committed
layout.prop(self, "docpath_povray")
layout.prop(self, "filepath_complete_sound")
layout.prop(self, "filepath_parse_error_sound")
layout.prop(self, "filepath_cancel_sound")
layout.prop(self, "use_sounds", icon='SOUND')
classes = (
PovrayPreferences,
RenderPovSettingsCamera,
RenderPovSettingsWorld,
RenderPovSettingsMaterial,
MaterialSubsurfaceScattering,
RenderPovSettingsObject,
RenderPovSettingsScene,
RenderPovSettingsText,
RenderPovSettingsTexture,
)
Bastien Montagne
committed
def register():
# bpy.utils.register_module(__name__) # DEPRECATED Now imported from bpy.utils import register_class
for cls in classes:
register_class(cls)
render.register()
ui.register()
primitives.register()
nodes.register()
bpy.types.VIEW3D_MT_add.prepend(ui.menu_func_add)
bpy.types.TOPBAR_MT_file_import.append(ui.menu_func_import)
bpy.types.TEXT_MT_templates.append(ui.menu_func_templates)
bpy.types.RENDER_PT_POV_radiosity.prepend(ui.rad_panel_func)
bpy.types.LIGHT_PT_POV_light.prepend(ui.light_panel_func)
bpy.types.WORLD_PT_world.prepend(ui.world_panel_func)
# was used for parametric objects but made the other addon unreachable on
# unregister for other tools to use created a user action call instead
# addon_utils.enable("add_mesh_extra_objects", default_set=False, persistent=True)
# bpy.types.TEXTURE_PT_context_texture.prepend(TEXTURE_PT_povray_type)
bpy.types.NODE_HT_header.append(ui.menu_func_nodes)
nodeitems_utils.register_node_categories("POVRAYNODES", node_categories)
Bastien Montagne
committed
bpy.types.Scene.pov = PointerProperty(type=RenderPovSettingsScene)
# bpy.types.Modifier.pov = PointerProperty(type=RenderPovSettingsModifier)
bpy.types.Material.pov_raytrace_transparency = PointerProperty(type=MaterialRaytraceTransparency)
Bastien Montagne
committed
bpy.types.Material.pov = PointerProperty(type=RenderPovSettingsMaterial)
bpy.types.Material.pov_subsurface_scattering = PointerProperty(type=MaterialSubsurfaceScattering)
bpy.types.Material.strand = PointerProperty(type=MaterialStrandSettings)
bpy.types.Material.pov_raytrace_mirror = PointerProperty(type=MaterialRaytraceMirror)
Bastien Montagne
committed
bpy.types.Texture.pov = PointerProperty(type=RenderPovSettingsTexture)
bpy.types.Object.pov = PointerProperty(type=RenderPovSettingsObject)
bpy.types.Camera.pov = PointerProperty(type=RenderPovSettingsCamera)
bpy.types.Light.pov = PointerProperty(type=RenderPovSettingsLight)
bpy.types.World.pov = PointerProperty(type=RenderPovSettingsWorld)
bpy.types.Material.pov_texture_slots = CollectionProperty(type=MaterialTextureSlot)
bpy.types.World.pov_texture_slots = CollectionProperty(type=WorldTextureSlot)
Bastien Montagne
committed
bpy.types.Text.pov = PointerProperty(type=RenderPovSettingsText)
Bastien Montagne
committed
def unregister():
del bpy.types.Scene.pov
del bpy.types.Material.pov
del bpy.types.Material.pov_subsurface_scattering
del bpy.types.Material.pov_raytrace_mirror
del bpy.types.Material.pov_raytrace_transparency
Bastien Montagne
committed
del bpy.types.Texture.pov
del bpy.types.Object.pov
del bpy.types.Camera.pov
del bpy.types.World.pov_texture_slots
Bastien Montagne
committed
del bpy.types.Text.pov
nodeitems_utils.unregister_node_categories("POVRAYNODES")
bpy.types.NODE_HT_header.remove(ui.menu_func_nodes)
# bpy.types.TEXTURE_PT_context_texture.remove(TEXTURE_PT_povray_type)
# addon_utils.disable("add_mesh_extra_objects", default_set=False)
bpy.types.WORLD_PT_POV_world.remove(ui.world_panel_func)
bpy.types.LIGHT_PT_POV_light.remove(ui.light_panel_func)
bpy.types.RENDER_PT_POV_radiosity.remove(ui.rad_panel_func)
bpy.types.TEXT_MT_templates.remove(ui.menu_func_templates)
Brecht Van Lommel
committed
bpy.types.TOPBAR_MT_file_import.remove(ui.menu_func_import)
bpy.types.VIEW3D_MT_add.remove(ui.menu_func_add)
Bastien Montagne
committed
nodes.unregister()
primitives.unregister()
ui.unregister()
render.unregister()
for cls in reversed(classes):
unregister_class(cls)
Campbell Barton
committed