Newer
Older
# ##### BEGIN GPL LICENSE BLOCK #####
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####
"""Import, export and render to POV engines.
These engines can be POV-Ray or Uberpov but others too, since POV is a
Scene Description Language. The script has been split in as few files
as possible :
___init__.py :
Initialize variables
Update new variables to values from older API. This file needs an update.
ui.py :
Provide property buttons for the user to set up the variables.
primitives.py :
Display some POV native primitives in 3D view for input and output.
shading.py
Translate shading properties to declared textures at the top of a pov file
nodes.py
Translate node trees to the pov file
render.py :
Translate geometry and UI properties (Blender and POV native) to the POV file
Along these essential files also coexist a few additional libraries to help make
Blender stand up to other POV IDEs such as povwin or QTPOV.
presets :
Material (sss)
apple.py ; chicken.py ; cream.py ; Ketchup.py ; marble.py ;
potato.py ; skim_milk.py ; skin1.py ; skin2.py ; whole_milk.py
Radiosity
01_Debug.py ; 02_Fast.py ; 03_Normal.py ; 04_Two_Bounces.py ;
05_Final.py ; 06_Outdoor_Low_Quality.py ; 07_Outdoor_High_Quality.py ;
08_Outdoor(Sun)Light.py ; 09_Indoor_Low_Quality.py ;
10_Indoor_High_Quality.py ;
World
01_Clear_Blue_Sky.py ; 02_Partly_Hazy_Sky.py ; 03_Overcast_Sky.py ;
04_Cartoony_Sky.py ; 05_Under_Water.py ;
Light
01_(5400K)_Direct_Sun.py ; 02_(5400K)_High_Noon_Sun.py ;
03_(6000K)_Daylight_Window.py ;
04_(6000K)_2500W_HMI_(Halogen_Metal_Iodide).py ;
05_(4000K)_100W_Metal_Halide.py ; 06_(3200K)_100W_Quartz_Halogen.py ;
07_(2850K)_100w_Tungsten.py ; 08_(2600K)_40w_Tungsten.py ;
09_(5000K)_75W_Full_Spectrum_Fluorescent_T12.py ;
10_(4300K)_40W_Vintage_Fluorescent_T12.py ;
11_(5000K)_18W_Standard_Fluorescent_T8 ;
12_(4200K)_18W_Cool_White_Fluorescent_T8.py ;
14_(6500K)_54W_Grow_Light_Fluorescent_T5-HO.py ;
15_(3200K)_40W_Induction_Fluorescent.py ;
16_(2100K)_150W_High_Pressure_Sodium.py ;
17_(1700K)_135W_Low_Pressure_Sodium.py ;
18_(6800K)_175W_Mercury_Vapor.py ; 19_(5200K)_700W_Carbon_Arc.py ;
20_(6500K)_15W_LED_Spot.py ; 21_(2700K)_7W_OLED_Panel.py ;
22_(30000K)_40W_Black_Light_Fluorescent.py ;
23_(30000K)_40W_Black_Light_Bulb.py; 24_(1850K)_Candle.py
templates:
abyss.pov ; biscuit.pov ; bsp_Tango.pov ; chess2.pov ;
cornell.pov ; diffract.pov ; diffuse_back.pov ; float5 ;
gamma_showcase.pov ; grenadine.pov ; isocacti.pov ;
mediasky.pov ; patio-radio.pov ; subsurface.pov ; wallstucco.pov
"""
"name": "Persistence of Vision",
"author": "Campbell Barton, "
"Maurice Raybaud, "
"Leonid Desyatkov, "
"Bastien Montagne, "
"Constantin Rahn, "
"Silvio Falcinelli",
"location": "Render Properties > Render Engine > Persistence of Vision",
"description": "Persistence of Vision integration for blender",
"doc_url": "{BLENDER_MANUAL_URL}/addons/render/povray.html",
"category": "Render",
}
importlib.reload(ui)
importlib.reload(render)
importlib.reload(update_files)
from bpy.utils import register_class, unregister_class
# import addon_utils # To use some other addons
import nodeitems_utils # for Nodes
from nodeitems_utils import NodeCategory, NodeItem # for Nodes
from bl_operators.presets import AddPresetBase
from bpy.types import AddonPreferences, PropertyGroup
StringProperty,
BoolProperty,
IntProperty,
FloatProperty,
FloatVectorProperty,
EnumProperty,
PointerProperty,
CollectionProperty,
)
from . import ui, render, update_files
CoDEmanX
committed
def string_strip_hyphen(name):
"""Remove hyphen characters from a string to avoid POV errors."""
return name.replace("-", "")
def active_texture_name_from_uilist(self, context):
mat = context.scene.view_layers["View Layer"].objects.active.active_material
index = mat.pov.active_texture_index
name = mat.pov_texture_slots[index].name
newname = mat.pov_texture_slots[index].texture
tex = bpy.data.textures[name]
tex.name = newname
mat.pov_texture_slots[index].name = newname
def active_texture_name_from_search(self, context):
mat = context.scene.view_layers["View Layer"].objects.active.active_material
index = mat.pov.active_texture_index
name = mat.pov_texture_slots[index].texture_search
try:
tex = bpy.data.textures[name]
mat.pov_texture_slots[index].name = name
mat.pov_texture_slots[index].texture = name
except:
pass
Bastien Montagne
committed
###############################################################################
# Scene POV properties.
###############################################################################
class RenderPovSettingsScene(PropertyGroup):
"""Declare scene level properties controllable in UI and translated to POV."""
name="Enable SDL window",
description="Enable the SDL window in Linux OS",
default=True,
)
name="Text Scene Name",
description="Name of POV scene to use. "
"Set when clicking Run to render current text only",
maxlen=1024,
)
name="Enable Tempfiles",
description="Enable the OS-Tempfiles. Otherwise set the path where"
name="POV editor",
description="Don't Close POV editor after rendering (Overridden"
deletefiles_enable: BoolProperty(
name="Scene Name",
description="Name of POV scene to create. Empty name will use "
"the name of the blend file",
maxlen=1024,
)
name="Export scene path",
# Bug in POV-Ray RC3
# description="Path to directory where the exported scene "
# "(POV and INI) is created",
description="Path to directory where the files are created",
maxlen=1024,
subtype="DIR_PATH",
)
renderimage_path: StringProperty(
name="Rendered image path",
description="Full path to directory where the rendered image is "
"saved",
maxlen=1024,
subtype="DIR_PATH",
)
name="LF in lists",
description="Enable line breaks in lists (vectors and indices). "
"Disabled: lists are exported in one line",
default=True,
)
# Not a real pov option, just to know if we should write
name="Enable Radiosity",
description="Enable POV radiosity calculation",
default=True,
)
radio_display_advanced: BoolProperty(
name="Advanced Options",
description="Show advanced options",
default=False,
)
name="Enable Media",
description="Enable POV atmospheric media",
default=False,
)
name="Samples",
description="Number of samples taken from camera to first object "
"encountered along ray path for media calculation",
min=1,
max=100,
default=35,
)
media_scattering_type: EnumProperty(
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
name="Scattering Type",
description="Scattering model",
items=(
(
'1',
"1 Isotropic",
"The simplest form of scattering because"
" it is independent of direction."
),
(
'2',
"2 Mie haze ",
"For relatively small particles such as "
"minuscule water droplets of fog, cloud "
"particles, and particles responsible "
"for the polluted sky. In this model the"
" scattering is extremely directional in"
" the forward direction i.e. the amount "
"of scattered light is largest when the "
"incident light is anti-parallel to the "
"viewing direction (the light goes "
"directly to the viewer). It is smallest"
" when the incident light is parallel to"
" the viewing direction. "
),
(
'3',
"3 Mie murky",
"Like haze but much more directional"
),
(
'4',
"4 Rayleigh",
"For extremely small particles such as "
"molecules of the air. The amount of "
"scattered light depends on the incident"
" light angle. It is largest when the "
"incident light is parallel or "
"anti-parallel to the viewing direction "
"and smallest when the incident light is "
"perpendicular to viewing direction."
),
(
'5',
"5 Henyey-Greenstein",
"The default eccentricity value "
"of zero defines isotropic "
"scattering while positive "
"values lead to scattering in "
"the direction of the light and "
"negative values lead to "
"scattering in the opposite "
"direction of the light. Larger "
"values of e (or smaller values "
"in the negative case) increase "
"the directional property of the"
" scattering."
)
),
default='1',
)
media_diffusion_scale: FloatProperty(
name="Scale",
description="Scale factor of Media Diffusion Color",
precision=12, step=0.00000001, min=0.000000001, max=1.0,
default=(1.0),
)
media_diffusion_color: FloatVectorProperty(
name="Media Diffusion Color",
description="The atmospheric media color",
precision=4, step=0.01, min=0, soft_max=1,
default=(0.001, 0.001, 0.001),
options={'ANIMATABLE'},
subtype='COLOR',
)
Bastien Montagne
committed
media_absorption_scale: FloatProperty(
name="Scale",
description="Scale factor of Media Absorption Color. "
"use 1/depth of media volume in meters",
precision=12,
step=0.000001,
min=0.000000001,
max=1.0,
default=(0.00002),
)
media_absorption_color: FloatVectorProperty(
name="Media Absorption Color",
description="The atmospheric media absorption color",
precision=4, step=0.01, min=0, soft_max=1,
default=(0.0, 0.0, 0.0),
options={'ANIMATABLE'},
subtype='COLOR',
)
media_eccentricity: FloatProperty(
name="Media Eccenticity Factor",
description="Positive values lead"
" to scattering in the direction of the light and negative "
"values lead to scattering in the opposite direction of the "
"light. Larger values of e (or smaller values in the negative"
" case) increase the directional property of the scattering.",
precision=2,
step=0.01,
min=-1.0,
max=1.0,
default=(0.0),
options={'ANIMATABLE'},
)
name="Enable Baking",
description="Enable POV texture baking",
default=False
)
indentation_character: EnumProperty(
name="Indentation",
description="Select the indentation type",
items=(
('NONE', "None", "No indentation"),
('TAB', "Tabs", "Indentation with tabs"),
('SPACE', "Spaces", "Indentation with spaces")
),
name="Quantity of spaces",
description="The number of spaces for indentation",
min=1,
max=10,
default=4,
)
name="Enable Comments",
description="Add comments to pov file",
default=True,
)
command_line_switches: StringProperty(
name="Command Line Switches",
description="Command line switches consist of a + (plus) or - "
"(minus) sign, followed by one or more alphabetic "
"characters and possibly a numeric value",
maxlen=500,
)
name="Anti-Alias", description="Enable Anti-Aliasing",
default=True,
)
name="Method",
description="AA-sampling method. Type 1 is an adaptive, "
"non-recursive, super-sampling method. Type 2 is an "
"adaptive and recursive super-sampling method. Type 3 "
"is a stochastic halton based super-sampling method",
items=(
("0", "non-recursive AA", "Type 1 Sampling in POV"),
("1", "recursive AA", "Type 2 Sampling in POV"),
("2", "stochastic AA", "Type 3 Sampling in POV")
),
default="1",
)
antialias_confidence: FloatProperty(
name="Antialias Confidence",
description="how surely the computed color "
"of a given pixel is indeed"
"within the threshold error margin",
min=0.0001,
max=1.0000,
default=0.9900,
precision=4
name="Antialias Depth",
description="Depth of pixel for sampling",
antialias_threshold: FloatProperty(
name="Antialias Threshold",
description="Tolerance for sub-pixels",
min=0.0,
max=1.0,
soft_min=0.05,
soft_max=0.5,
default=0.03,
)
name="Jitter",
description="Enable Jittering. Adds noise into the sampling "
"process (it should be avoided to use jitter in "
"animation)",
default=False,
)
name="Jitter Amount",
description="Amount of jittering",
min=0.0,
max=1.0,
soft_min=0.01,
soft_max=1.0,
default=1.0,
)
name="Antialias Gamma",
description="POV-Ray compares gamma-adjusted values for super "
"sampling. Antialias Gamma sets the Gamma before "
"comparison",
min=0.0,
max=5.0,
soft_min=0.01,
soft_max=2.5,
default=2.5,
)
name="Alpha",
description="Representation of alpha information in the RGBA pixels",
items=(
("SKY", "Sky", "Transparent pixels are filled with sky color"),
(
"TRANSPARENT",
"Transparent",
"Transparent, World background is transparent with premultiplied alpha",
),
),
default="SKY",
)
name="Shadows",
description="Calculate shadows while rendering",
default=True,
)
name="Max Trace Level",
description="Number of reflections/refractions allowed on ray "
"path",
adc_bailout_enable: BoolProperty(
name="Enable",
description="",
default=False,
)
Maurice Raybaud
committed
name="ADC Bailout",
description="Adaptive Depth Control (ADC) to stop computing additional"
"reflected or refracted rays when their contribution is insignificant."
"The default value is 1/255, or approximately 0.0039, since a change "
"smaller than that could not be visible in a 24 bit image. Generally "
"this value is fine and should be left alone."
"Setting adc_bailout to 0 will disable ADC, relying completely on "
"max_trace_level to set an upper limit on the number of rays spawned. ",
min=0.0,
max=1000.0,
default=0.00392156862745,
precision=3
)
Maurice Raybaud
committed
ambient_light_enable: BoolProperty(
name="Enable",
description="",
default=False,
)
Maurice Raybaud
committed
ambient_light: FloatVectorProperty(
name="Ambient Light",
description="Ambient light is used to simulate the effect of inter-diffuse reflection",
precision=4, step=0.01, min=0, soft_max=1,
default=(1, 1, 1), options={'ANIMATABLE'}, subtype='COLOR',
global_settings_advanced: BoolProperty(
name="Advanced",
description="",
default=False,
)
Maurice Raybaud
committed
irid_wavelength_enable: BoolProperty(
name="Enable",
description="",
default=False,
)
Maurice Raybaud
committed
irid_wavelength: FloatVectorProperty(
name="Irid Wavelength",
description=(
"Iridescence calculations depend upon the dominant "
"wavelengths of the primary colors of red, green and blue light"
),
precision=4,
step=0.01,
min=0,
soft_max=1,
default=(0.25,0.18,0.14),
options={'ANIMATABLE'},
subtype='COLOR'
# Deprecated (autodetected in pov3.8):
# charset: EnumProperty(
# name="Charset",
# description="This allows you to specify the assumed character set of all text strings",
# items=(
# ("ascii", "ASCII", ""),
# ("utf8", "UTF-8", ""),
# ("sys", "SYS", "")
# ),
# default="utf8",
# )
Maurice Raybaud
committed
max_intersections_enable: BoolProperty(
name="Enable",
description="",
default=False,
)
Maurice Raybaud
committed
name="Max Intersections",
description="POV-Ray uses a set of internal stacks to collect ray/object intersection points",
min=2,
max=1024,
default=64,
)
Maurice Raybaud
committed
number_of_waves_enable: BoolProperty(
name="Enable",
description="",
default=False,
)
Maurice Raybaud
committed
name="Number Waves",
description=(
"The waves and ripples patterns are generated by summing a series of waves, "
"each with a slightly different center and size"
),
min=1,
max=10,
default=1000,
)
Maurice Raybaud
committed
noise_generator_enable: BoolProperty(
name="Enable",
description="",
default=False,
)
Maurice Raybaud
committed
name="Noise Generator",
description="There are three noise generators implemented",
min=1,
max=3,
default=2,
)
########################### PHOTONS #######################################
name="Photons",
description="Enable global photons",
default=False,
)
photon_enable_count: BoolProperty(
name="Spacing / Count",
description="Enable count photons",
default=False,
)
name="Count",
description="Photons count",
min=1,
max=100000000,
default=20000
)
name="Spacing",
description="Average distance between photons on surfaces. half "
"this get four times as many surface photons",
min=0.001,
max=1.000,
soft_min=0.001,
soft_max=1.000,
photon_max_trace_level: IntProperty(
name="Max Trace Level",
description="Number of reflections/refractions allowed on ray "
"path",
min=1,
max=256,
default=5
)
photon_adc_bailout: FloatProperty(
name="ADC Bailout",
description="The adc_bailout for photons. Use adc_bailout = "
"0.01 / brightest_ambient_object for good results",
min=0.0,
max=1000.0,
soft_min=0.0,
soft_max=1.0,
precision=3,
default=0.1,
)
name="Gather Min", description="Minimum number of photons gathered"
"for each point",
min=1, max=256, default=20
)
name="Gather Max", description="Maximum number of photons gathered for each point",
min=1, max=256, default=100
)
photon_map_file_save_load: EnumProperty(
name="Operation",
description="Load or Save photon map file",
items=(
("NONE", "None", ""),
("save", "Save", ""),
("load", "Load", "")
),
default="NONE",
)
photon_map_filename: StringProperty(
name="Filename",
description="",
maxlen=1024
)
name="Directory",
description="",
maxlen=1024,
subtype="DIR_PATH",
)
name="File",
description="",
maxlen=1024,
subtype="FILE_PATH"
)
radio_adc_bailout: FloatProperty(
name="ADC Bailout",
description="The adc_bailout for radiosity rays. Use "
"adc_bailout = 0.01 / brightest_ambient_object for good results",
min=0.0,
max=1000.0,
soft_min=0.0,
soft_max=1.0,
default=0.0039,
precision=4,
)
radio_always_sample: BoolProperty(
name="Always Sample",
description="Only use the data from the pretrace step and not gather "
"any new samples during the final radiosity pass",
default=False,
)
name="Brightness",
description="Amount objects are brightened before being returned "
"upwards to the rest of the system",
min=0.0, max=1000.0, soft_min=0.0, soft_max=10.0, default=1.0
)
name="Ray Count",
description="Number of rays for each new radiosity value to be calculated "
"(halton sequence over 1600)",
min=1, max=10000, soft_max=1600, default=35
)
radio_error_bound: FloatProperty(
name="Error Bound",
description="One of the two main speed/quality tuning values, "
"lower values are more accurate",
min=0.0, max=1000.0, soft_min=0.1, soft_max=10.0, default=1.8
)
radio_gray_threshold: FloatProperty(
name="Gray Threshold",
description="One of the two main speed/quality tuning values, "
"lower values are more accurate",
min=0.0, max=1.0, soft_min=0, soft_max=1, default=0.0
)
radio_low_error_factor: FloatProperty(
name="Low Error Factor",
description="Just enough samples is slightly blotchy. Low error changes error "
"tolerance for less critical last refining pass",
min=0.000001, max=1.0, soft_min=0.000001, soft_max=1.0, default=0.5
)
name="Media",
description="Radiosity estimation can be affected by media",
default=True,
)
name="Subsurface",
description="Radiosity estimation can be affected by Subsurface Light Transport",
default=False,
)
Maurice Raybaud
committed
radio_minimum_reuse: FloatProperty(
name="Minimum Reuse",
description="Fraction of the screen width which sets the minimum radius of reuse "
"for each sample point (At values higher than 2% expect errors)",
min=0.0, max=1.0, soft_min=0.1, soft_max=0.1, default=0.015, precision=3
)
radio_maximum_reuse: FloatProperty(
name="Maximum Reuse",
description="The maximum reuse parameter works in conjunction with, and is similar to that of minimum reuse, "
"the only difference being that it is an upper bound rather than a lower one",
min=0.0, max=1.0,default=0.2, precision=3
)
Maurice Raybaud
committed
radio_nearest_count: IntProperty(
name="Nearest Count",
description="Number of old ambient values blended together to "
"create a new interpolated value",
min=1, max=20, default=1
)
name="Normals",
description="Radiosity estimation can be affected by normals",
default=False,
)
radio_recursion_limit: IntProperty(
name="Recursion Limit",
description="how many recursion levels are used to calculate "
"the diffuse inter-reflection",
min=1, max=20, default=1
)
radio_pretrace_start: FloatProperty(
name="Pretrace Start",
description="Fraction of the screen width which sets the size of the "
"blocks in the mosaic preview first pass",
min=0.01, max=1.00, soft_min=0.02, soft_max=1.0, default=0.08
)
radio_pretrace_end: FloatProperty(
name="Pretrace End",
description="Fraction of the screen width which sets the size of the blocks "
"in the mosaic preview last pass",
min=0.000925, max=1.00, soft_min=0.01, soft_max=1.00, default=0.04, precision=3
)
Bastien Montagne
committed
###############################################################################
# Material POV properties.
###############################################################################
"""Declare material texture slot level properties for UI and translated to POV."""
bl_idname="pov_texture_slots",
bl_description="Texture_slots from Blender-2.79",
texture : StringProperty(update=active_texture_name_from_uilist)
texture_search : StringProperty(update=active_texture_name_from_search)
name="Alpha",
description="Amount texture affects alpha",
default = 0.0,
)
name="",
description="Amount texture affects ambient",
default = 0.0,
)
name="",
description="Method to use for bump mapping",
items=(
("BUMP_ORIGINAL", "Bump Original", ""),
("BUMP_COMPATIBLE", "Bump Compatible", ""),
("BUMP_DEFAULT", "Bump Default", ""),
("BUMP_BEST_QUALITY", "Bump Best Quality", "")
),
default="BUMP_ORIGINAL",
)
name="",
description="Space to apply bump mapping in",
items=(
("BUMP_VIEWSPACE", "Bump Viewspace", ""),
("BUMP_OBJECTSPACE", "Bump Objectspace", ""),
("BUMP_TEXTURESPACE", "Bump Texturespace", "")
),
default="BUMP_VIEWSPACE",
)
name="",
description="Amount texture affects density",
default = 0.0,
)
name="",
description="Amount texture affects diffuse color",
default = 0.0,
)
name="",
description="Amount texture affects diffuse reflectivity",
default = 0.0,
)
name="",
description="Amount texture displaces the surface",
default = 0.0,
)
name="",
description="Amount texture affects emission color",
default = 0.0,
)
name="",
description="Amount texture affects emission",
default = 0.0,
)
name="",
description="Amount texture affects emission",
default = 0.0,
)
name="",
description="Amount texture affects hardness",
default = 0.0,
)
name="",
description="",
items=(("FLAT", "Flat", ""),
("CUBE", "Cube", ""),
("TUBE", "Tube", ""),
("SPHERE", "Sphere", "")),
default="FLAT",
)
name="",
description="",
items=(("NONE", "", ""),
("X", "", ""),
("Y", "", ""),
("Z", "", "")),
default="NONE",
)
name="",
description="",
items=(("NONE", "", ""),
("X", "", ""),
("Y", "", ""),
("Z", "", "")),
default="NONE",
)
name="",
description="",
items=(("NONE", "", ""),
("X", "", ""),
("Y", "", ""),
("Z", "", "")),
default="NONE",
)
name="",
description="Amount texture affects mirror color",
default = 0.0,
)
name="",
description="Amount texture affects normal values",
default = 0.0,
)
name="",
description="Sets space of normal map image",
items=(("CAMERA", "Camera", ""),
("WORLD", "World", ""),
("OBJECT", "Object", ""),
("TANGENT", "Tangent", "")),
default="CAMERA",
)
name="Object",
description="Object to use for mapping with Object texture coordinates",
default ="",
)
name="",
description="Amount texture affects ray mirror",
default = 0.0,
)
reflection_color_factor: FloatProperty(
name="",
description="Amount texture affects color of out-scattered light",
default = 0.0,
)
name="",
description="Amount texture affects brightness of out-scattered light",
default = 0.0,
)
name="",
description="Amount texture affects scattering",
default = 0.0,
)
specular_color_factor: FloatProperty(
name="",
description="Amount texture affects specular color",
default = 0.0,
)
name="",
description="Amount texture affects specular reflectivity",
default = 0.0,
)
items=(
("GLOBAL", "Global", ""),
("OBJECT", "Object", ""),
("UV", "UV", ""),
("ORCO", "Original Coordinates", ""),
("STRAND", "Strand", ""),
("STICKY", "Sticky", ""),
("WINDOW", "Window", ""),
("NORMAL", "Normal", ""),
("REFLECTION", "Reflection", ""),
("STRESS", "Stress", ""),
("TANGENT", "Tangent", "")
),
name="",
description="Amount texture affects translucency",
default = 0.0,
)
transmission_color_factor: FloatProperty(
name="",
description="Amount texture affects result color after light has been scattered/absorbed",
default = 0.0,
)
name="",
description="Enable this material texture slot",
default = True,
)
name="",
description="Dupli’s instanced from verts, faces or particles, inherit texture coordinate from their parent",
default = False,
)
name="",
description="Dupli’s derive their object coordinates from the original objects transformation",
default = False,
)
name="",
description="Causes the texture to affect the alpha value",
default = False,
)
name="",
description="Causes the texture to affect the value of ambient",
default = False,
)
name="",
description="Causes the texture to affect basic color of the material",
default = False,
)
use_map_color_emission: BoolProperty(
name="",
description="Causes the texture to affect the color of emission",
default = False,
)
use_map_color_reflection: BoolProperty(
name="",
description="Causes the texture to affect the color of scattered light",
default = False,
)
name="",
description="Causes the texture to affect the specularity color",
default = False,
)
use_map_color_transmission: BoolProperty(
name="",
description="Causes the texture to affect the result color after other light has been scattered/absorbed",
default = False,
)
name="",
description="Causes the texture to affect the volume’s density",
default = False,
)
name="",
description="Causes the texture to affect the value of the materials diffuse reflectivity",
default = False,
)
name="",
description="Let the texture displace the surface",
default = False,
)
name="",
description="Causes the texture to affect the volume’s emission",
default = False,
)
name="",
description="Causes the texture to affect the emit value",
default = False,
)
name="",
description="Causes the texture to affect the hardness value",
default = False,
)
name="",
description="Causes the texture to affect the mirror color",
default = False,
)
name="",
description="Causes the texture to affect the rendered normal",
default = False,
)
name="",
description="Causes the texture to affect the ray-mirror value",
default = False,
)
name="",
description="Causes the texture to affect the reflected light’s brightness",
default = False,
)
name="",
description="Causes the texture to affect the volume’s scattering",
default = False,
)
name="",
description="Causes the texture to affect the value of specular reflectivity",
default = False,
)
name="",
description="Causes the texture to affect the translucency value",
default = False,
)
name="",
description="Let the texture warp texture coordinates of next channels",
default = False,
)
name="",
description="UV layer to use for mapping with UV texture coordinates",
default = "",
)
name="",
description="Amount texture affects texture coordinates of next channels",
default = 0.0,
)
#######################################"
name="Blend",
description="Amount texture affects color progression of the "
"background",
soft_min=0.0, soft_max=1.0, default=1.0,
)
name="Horizon",
description="Amount texture affects color of the horizon"
"",
soft_min=0.0, soft_max=1.0, default=1.0
)
name="Object",
description="Object to use for mapping with Object texture coordinates",
default="",
)
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")
),
name="Blend Map",
description="Affect the color progression of the background",
default=True,
)
name="Horizon Map",
description="Affect the color of the horizon",
default=False,
)
name="", description="Affect the color of the zenith below",
default=False,
)
name="Zenith Up Map", description="Affect the color of the zenith above",
default=False,
)
name="Zenith Down",
description="Amount texture affects color of the zenith below",
soft_min=0.0, soft_max=1.0, default=1.0
)
name="Zenith Up",
description="Amount texture affects color of the zenith above",
soft_min=0.0, soft_max=1.0, default=1.0
)
# former Space properties from removed Blender Internal added below at superclass level
# so as to be available in World, Material, Light for texture slots use
bpy.types.ID.use_limited_texture_context = BoolProperty(
name="",
description="Use the limited version of texture user (for ‘old shading’ mode)",
default=True,
)
bpy.types.ID.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"
),
bpy.types.ID.active_texture_index = IntProperty(
name = "Index for texture_slots",
default = 0,
)
class RenderPovSettingsMaterial(PropertyGroup):
"""Declare material level properties controllable in UI and translated to POV."""
######################Begin Old Blender Internal Props#########################
# 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"
),
active_texture_index: IntProperty(
name = "Index for texture_slots",
default = 0,
)
transparency_method: EnumProperty(
name="Specular Shader Model",
description="Method to use for rendering transparency",
items=(
("MASK", "Mask", "Mask the background"),
("Z_TRANSPARENCY", "Z Transparency", "Use alpha buffer for transparent faces"),
("RAYTRACE", "Raytrace", "Use raytracing for transparent refraction rendering")
),
use_transparency: BoolProperty(
name="Transparency",
description="Render material as transparent",
default=False,
)
alpha: FloatProperty(
name="Alpha",
description="Alpha transparency of the material",
min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=1.0, precision=3,
)
specular_alpha: FloatProperty(
name="Specular alpha",
description="Alpha transparency for specular areas",
min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=1.0, precision=3,
)
ambient: FloatProperty(
name="Ambient",
description="Amount of global ambient color the material receives",
min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=1.0, precision=3,
)
diffuse_color: FloatVectorProperty(
name="Diffuse color",
description=("Diffuse color of the material"),
precision=4, step=0.01, min=0, # max=inf, soft_max=1,
default=(0.6,0.6,0.6), options={'ANIMATABLE'}, subtype='COLOR',
)
darkness: FloatProperty(
name="Darkness",
description="Minnaert darkness",
min=0.0, max=2.0, soft_min=0.0, soft_max=2.0, default=1.0, precision=3,
)
diffuse_fresnel: FloatProperty(
name="Diffuse fresnel",
description="Power of Fresnel",
min=0.0, max=5.0, soft_min=0.0, soft_max=5.0, default=1.0, precision=3,
)
diffuse_fresnel_factor: FloatProperty(
name="Diffuse fresnel factor",
description="Blending factor of Fresnel",
min=0.0, max=5.0, soft_min=0.0, soft_max=5.0, default=0.5, precision=3,
)
diffuse_intensity: FloatProperty(
name="Diffuse intensity",
description="Amount of diffuse reflection multiplying color",
min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=0.8, precision=3,
)
diffuse_ramp_blend: EnumProperty(
name="Diffuse ramp blend",
description="Blending method of the ramp and the diffuse color",
items=(
("MIX", "Mix", ""),
("ADD", "Add", ""),
("MULTIPLY", "Multiply", ""),
("SUBTRACT", "Subtract", ""),
("SCREEN", "Screen", ""),
("DIVIDE", "Divide", ""),
("DIFFERENCE", "Difference", ""),
("DARKEN", "Darken", ""),
("LIGHTEN", "Lighten", ""),
("OVERLAY", "Overlay", ""),
("DODGE", "Dodge", ""),
("BURN", "Burn", ""),
("HUE", "Hue", ""),
("SATURATION", "Saturation", ""),
("VALUE", "Value", ""),
("COLOR", "Color", ""),
("SOFT_LIGHT", "Soft light", ""),
("LINEAR_LIGHT", "Linear light", "")
),
diffuse_ramp_factor: FloatProperty(
name="Factor",
description="Blending factor (also uses alpha in Colorband)",
min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=1.0, precision=3,
)
diffuse_ramp_input: EnumProperty(
name="Input",
description="How the ramp maps on the surface",
items=(
("SHADER", "Shader", ""),
("ENERGY", "Energy", ""),
("NORMAL", "Normal", ""),
("RESULT", "Result", "")
),
default="SHADER",
diffuse_shader: EnumProperty(
name="Diffuse Shader Model",
description="How the ramp maps on the surface",
items=(
("LAMBERT", "Lambert", "Use a Lambertian shader"),
("OREN_NAYAR", "Oren-Nayar", "Use an Oren-Nayar shader"),
("MINNAERT", "Minnaert", "Use a Minnaert shader"),
("FRESNEL", "Fresnel", "Use a Fresnel shader")
),
diffuse_toon_size: FloatProperty(
name="Size",
description="Size of diffuse toon area",
min=0.0, max=3.14, soft_min=0.0, soft_max=3.14, default=0.5, precision=3,
)
diffuse_toon_smooth: FloatProperty(
name="Smooth",
description="Smoothness of diffuse toon area",
min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=0.1, precision=3,
)
emit: FloatProperty(
name="Emit",
description="Amount of light to emit",
min=0.0, soft_min=0.0, # max=inf, soft_max=inf,
default=0.0, precision=3,
)
mirror_color: FloatVectorProperty(
name="Mirror color",
description=("Mirror color of the material"),
precision=4, step=0.01, min=0, # max=inf, soft_max=1,
default=(0.6,0.6,0.6), options={'ANIMATABLE'}, subtype='COLOR'
)
roughness: FloatProperty(
name="Roughness",
description="Oren-Nayar Roughness",
min=0.0, max=3.14, soft_min=0.0, soft_max=3.14,
precision=3,
default=0.5,
)
halo: BoolProperty(
name="Halo",
description=" Halo settings for the material",
default=False,
)
# (was readonly in Blender2.79, never None)
line_color: FloatVectorProperty(
name="Line color",
description=("Line color used for Freestyle line rendering"),
precision=4, step=0.01, min=0, # max=inf, soft_max=1,
default=(0.0,0.0,0.0), options={'ANIMATABLE'}, subtype='COLOR'
)
# diffuse_ramp:
## Color ramp used to affect diffuse shading
## Type: ColorRamp, (readonly)
# cr_node = bpy.data.materials['Material'].node_tree.nodes['ColorRamp']
# layout.template_color_ramp(cr_node, "color_ramp", expand=True)
# ou
# class bpy.types.ColorRamp(bpy_struct)
line_priority: IntProperty(
name="Recursion Limit",
description="The line color of a higher priority is used at material boundaries",
min=0, max=32767, default=0,
)
specular_color: FloatVectorProperty(
name="Specular color",
description=("Specular color of the material "),
precision=4, step=0.01, min=0, # max=inf, soft_max=1,
default=(1.0,1.0,1.0), options={'ANIMATABLE'}, subtype='COLOR'
)
specular_hardness: IntProperty(
name="Hardness",
description="How hard (sharp) the specular reflection is",
min=1, max=511, default=50,
)
specular_intensity: FloatProperty(
name="Intensity",
description="How intense (bright) the specular reflection is",
min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=0.5, precision=3
)
name="IOR",
description="Specular index of refraction",
min=-10.0, max=10.0, soft_min=0.0, soft_max=10.0, default=1.0, precision=3
)
name="IOR",
description="Index of refraction",
min=-10.0, max=10.0, soft_min=0.0, soft_max=10.0, default=1.0, precision=3
)
specular_shader: EnumProperty(
name="Specular Shader Model",
description="How the ramp maps on the surface",
items=(
("COOKTORR", "CookTorr", "Use a Cook-Torrance shader"),
("PHONG", "Phong", "Use a Phong shader"),
("BLINN", "Blinn", "Use a Blinn shader"),
("TOON", "Toon", "Use a Toon shader"),
("WARDISO", "WardIso", "Use a Ward anisotropic shader")
),
specular_slope: FloatProperty(
name="Slope",
description="The standard deviation of surface slope",
min=0.0, max=0.4, soft_min=0.0, soft_max=0.4, default=0.1, precision=3
)
specular_toon_size: FloatProperty(
name="Size",
description="Size of specular toon area",
min=0.0, max=0.53, soft_min=0.0, soft_max=0.53, default=0.5, precision=3
)
specular_toon_smooth: FloatProperty(
name="Smooth",
description="Smoothness of specular toon area",
min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=0.1, precision=3
)
translucency: FloatProperty(
name="Translucency",
description="Amount of diffuse shading on the back side",
min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=0.0, precision=3
)
transparency_method: EnumProperty(
name="Specular Shader Model",
description="Method to use for rendering transparency",
items=(
("MASK", "Mask", "Mask the background"),
("Z_TRANSPARENCY", "Z Transparency", "Use an ior of 1 for transparent faces"),
("RAYTRACE", "Raytrace", "Use raytracing for transparent refraction rendering")
),
type: EnumProperty(
name="Type",
description="Material type defining how the object is rendered",
items=(
("SURFACE", "Surface", "Render object as a surface"),
("WIRE", "Wire", "Render the edges of faces as wires (not supported in raytracing)"),# TO UPDATE > USE MACRO AND CHANGE DESCRIPTION
("VOLUME", "Volume", "Render object as a volume"),
("‘HALO’", "Halo", "Render object as halo particles")
), # TO UPDATE > USE MACRO AND CHANGE DESCRIPTION
use_cast_shadows: BoolProperty(
name="Cast",
description="Allow this material to cast shadows",
default=True,
)
use_cast_shadows_only: BoolProperty(
name="Cast Only",
description="Make objects with this material "
"appear invisible (not rendered), only "
"casting shadows",
default=False,
)
use_cubic: BoolProperty(
name="Cubic Interpolation",
description="Use cubic interpolation for diffuse "
"values, for smoother transitions",
default=False,
)
use_diffuse_ramp: BoolProperty(
name="Ramp",
description="Toggle diffuse ramp operations",
default=False,
)
use_light_group_exclusive: BoolProperty(
name="Exclusive",
description="Material uses the light group exclusively"
"- these lamps are excluded from other "
"scene lighting",
default=False,
)
use_light_group_local: BoolProperty(
name="Local",
description="When linked in, material uses local light"
" group with the same name",
default=False,
)
use_mist: BoolProperty(
name="Use Mist",
description="Use mist with this material "
"(in world settings)",
default=True,
)
use_nodes: BoolProperty(
name="Nodes",
description="Use shader nodes to render the material",# Add Icon in UI or here? icon='NODES'
default=False,
)
use_object_color: BoolProperty(
name="Object Color",
description="Modulate the result with a per-object color",
default=False,
)
use_only_shadow: BoolProperty(
name="Shadows Only",
description="Render shadows as the material’s alpha "
"value, making the material transparent "
"except for shadowed areas",
default=False,
)
use_shadeless: BoolProperty(
name="Shadeless",
description="Make this material insensitive to "
"light or shadow",
default=False,
)
use_shadows: BoolProperty(
name="Receive",
description="Allow this material to receive shadows",
default=True,
)
use_sky: BoolProperty(
name="Sky",
description="Render this material with zero alpha, "
"with sky background in place (scanline only)",
default=False,
)
use_specular_ramp: BoolProperty(
name="Ramp",
description="Toggle specular ramp operations",
default=False,
)
use_tangent_shading: BoolProperty(
name="Tangent Shading",
description="Use the material’s tangent vector instead"
"of the normal for shading - for "
"anisotropic shading effects",
default=False,
)
use_transparent_shadows: BoolProperty(
name="Receive Transparent",
description="Allow this object to receive transparent "
"shadows cast through other object",
default=False,
) # linked to fake caustics
use_vertex_color_light: BoolProperty(
name="Vertex Color Light",
description="Add vertex colors as additional lighting",
default=False,
)
use_vertex_color_paint: BoolProperty(
name="Vertex Color Paint", description="Replace object base color with vertex "
"colors (multiply with ‘texture face’ "
"face assigned textures)",
default=False,
)
specular_ramp_blend: EnumProperty(
name="Specular ramp blend",
description="Blending method of the ramp and the specular color",
items=(
("MIX", "Mix", ""),
("ADD", "Add", ""),
("MULTIPLY", "Multiply", ""),
("SUBTRACT", "Subtract", ""),
("SCREEN", "Screen", ""),
("DIVIDE", "Divide", ""),
("DIFFERENCE", "Difference", ""),
("DARKEN", "Darken", ""),
("LIGHTEN", "Lighten", ""),
("OVERLAY", "Overlay", ""),
("DODGE", "Dodge", ""),
("BURN", "Burn", ""),
("HUE", "Hue", ""),
("SATURATION", "Saturation", ""),
("VALUE", "Value", ""),
("COLOR", "Color", ""),
("SOFT_LIGHT", "Soft light", ""),
("LINEAR_LIGHT", "Linear light", "")
),
specular_ramp_factor: FloatProperty(
name="Factor",
description="Blending factor (also uses alpha in Colorband)",
min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=1.0, precision=3,
)
specular_ramp_input: EnumProperty(
name="Input",
description="How the ramp maps on the surface",
items=(
("SHADER", "Shader", ""),
("ENERGY", "Energy", ""),
("NORMAL", "Normal", ""),
("RESULT", "Result", "")
),
name="Iridescence coating",
description="Newton's thin film interference (like an oil slick on a puddle of "
"water or the rainbow hues of a soap bubble.)",
default=False,
)
name="Correct Reflection",
description="Use same IOR as raytrace transparency to calculate mirror reflections. "
"More physically correct",
default=False,
)
name="Metallic Reflection",
description="mirror reflections get colored as diffuse (for metallic materials)",
default=False,
)
name="Conserve Energy",
description="Light transmitted is more correctly reduced by mirror reflections, "
"also the sum of diffuse and translucency gets reduced below one ",
default=True,
)
name="amount",
description="Contribution of the iridescence effect to the overall surface color. "
"As a rule of thumb keep to around 0.25 (25% contribution) or less, "
"but experiment. If the surface is coming out too white, try lowering "
"the diffuse and possibly the ambient values of the surface",
min=0.0, max=1.0, soft_min=0.01, soft_max=1.0, default=0.25,
)
name="thickness",
description="A very thin film will have a high frequency of color changes while a "
"thick film will have large areas of color",
min=0.0, max=1000.0, soft_min=0.1, soft_max=10.0, default=1,
)
name="turbulence",
description="This parameter varies the thickness",
min=0.0, max=10.0, soft_min=0.000, soft_max=1.0, default=0
)
interior_fade_color: FloatVectorProperty(
name="Interior Fade Color",
description="Color of filtered attenuation for transparent "
"materials",
precision=4, step=0.01, min=0.0, soft_max=1.0,
default=(0, 0, 0), options={'ANIMATABLE'}, subtype='COLOR'
)
Bastien Montagne
committed
name="Caustics",
description="use only fake refractive caustics (default) or photon based "
"reflective/refractive caustics",
default=True,
)
name="Fake Caustics",
description="use only (Fast) fake refractive caustics",
default=True,
)
fake_caustics_power: FloatProperty(
name="Fake caustics power",
description="Values typically range from 0.0 to 1.0 or higher. Zero is no caustics. "
"Low, non-zero values give broad hot-spots while higher values give "
"tighter, smaller simulated focal points",
min=0.00, max=10.0, soft_min=0.00, soft_max=5.0, default=0.15
)
refraction_caustics: BoolProperty(
name="Refractive Caustics",
description="hotspots of light focused when going through the material",
default=True,
)
photons_dispersion: FloatProperty(
name="Chromatic Dispersion",
description="Light passing through will be separated according to wavelength. "
"This ratio of refractive indices for violet to red controls how much "
"the colors are spread out 1 = no dispersion, good values are 1.01 to 1.1",
min=1.0000, max=10.000, soft_min=1.0000, soft_max=1.1000, precision=4,
default=1.0000,
)
photons_dispersion_samples: IntProperty(
name="Dispersion Samples",
description="Number of color-steps for dispersion",
min=2, max=128, default=7,
)
Maurice Raybaud
committed
photons_reflection: BoolProperty(
name="Reflective Photon Caustics",
description="Use this to make your Sauron's ring ;-P",
default=False,
)
items=[
("1", "Z Transparency Fake Caustics", "use fake caustics"),
("2", "Raytrace Photons Caustics", "use photons for refractive caustics")],
name="Refraction Type:",
description="use fake caustics (fast) or true photons for refractive Caustics",
default="1",
)
Maurice Raybaud
committed
Bastien Montagne
committed
##################################CustomPOV Code############################
replacement_text: StringProperty(
name="Declared name:",
description="Type the declared name in custom POV code or an external "
".inc it points at. texture {} expected",
default="",
)
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
def use_material_nodes_callback(self, context):
if hasattr(context.space_data, "tree_type"):
context.space_data.tree_type = 'ObjectNodeTree'
mat=context.object.active_material
if mat.pov.material_use_nodes:
mat.use_nodes=True
tree = mat.node_tree
tree.name=mat.name
links = tree.links
default = True
if len(tree.nodes) == 2:
o = 0
m = 0
for node in tree.nodes:
if node.type in {"OUTPUT","MATERIAL"}:
tree.nodes.remove(node)
default = True
for node in tree.nodes:
if node.bl_idname == 'PovrayOutputNode':
o+=1
if node.bl_idname == 'PovrayTextureNode':
m+=1
if o == 1 and m == 1:
default = False
elif len(tree.nodes) == 0:
default = True
else:
default = False
if default:
output = tree.nodes.new('PovrayOutputNode')
output.location = 200,200
tmap = tree.nodes.new('PovrayTextureNode')
tmap.location = 0,200
links.new(tmap.outputs[0],output.inputs[0])
tmap.select = True
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
else:
mat.use_nodes=False
def use_texture_nodes_callback(self, context):
tex=context.object.active_material.active_texture
if tex.pov.texture_use_nodes:
tex.use_nodes=True
if len(tex.node_tree.nodes)==2:
for node in tex.node_tree.nodes:
if node.type in {"OUTPUT","CHECKER"}:
tex.node_tree.nodes.remove(node)
else:
tex.use_nodes=False
def node_active_callback(self, context):
items = []
mat=context.material
mat.node_tree.nodes
for node in mat.node_tree.nodes:
node.select=False
for node in mat.node_tree.nodes:
if node.name==mat.pov.material_active_node:
node.select=True
mat.node_tree.nodes.active=node
return node
def node_enum_callback(self, context):
items = []
mat=context.material
nodes=mat.node_tree.nodes
for node in nodes:
items.append(("%s"%node.name,"%s"%node.name,""))
return items
def pigment_normal_callback(self, context):
render = context.scene.pov.render
items = [("pigment", "Pigment", ""),("normal", "Normal", "")]
if render == 'hgpovray':
items = [("pigment", "Pigment", ""),("normal", "Normal", ""),("modulation", "Modulation", "")]
return items
def glow_callback(self, context):
scene = context.scene
ob = context.object
ob.pov.mesh_write_as_old = ob.pov.mesh_write_as
if scene.pov.render == 'uberpov' and ob.pov.glow:
ob.pov.mesh_write_as = 'NONE'
else:
ob.pov.mesh_write_as = ob.pov.mesh_write_as_old
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
material_use_nodes: BoolProperty(
name="Use nodes",
description="",
update=use_material_nodes_callback,
default=False,
)
material_active_node: EnumProperty(
name="Active node",
description="",
items=node_enum_callback,
update=node_active_callback
)
preview_settings: BoolProperty(
name="Preview Settings",
description="",
default=False,
)
object_preview_transform: BoolProperty(
name="Transform object",
description="",
default=False,
)
object_preview_scale: FloatProperty(
name="XYZ",
min=0.5,
max=2.0,
default=1.0,
)
object_preview_rotate: FloatVectorProperty(
name="Rotate",
description="",
min=-180.0,
max=180.0,
default=(0.0,0.0,0.0),
subtype='XYZ',
)
object_preview_bgcontrast: FloatProperty(
name="Contrast",
min=0.0,
max=1.0,
default=0.5,
)
class MaterialRaytraceTransparency(PropertyGroup):
"""Declare transparency panel properties controllable in UI and translated to POV."""
name="Depth",
description="Maximum allowed number of light inter-refractions",
min=0, max=32767, default=2
)
name="Depth",
description="Maximum depth for light to travel through the "
"transparent material before becoming fully filtered (0.0 is disabled)",
min=0, max=100, default=0.0,
)
name="Falloff",
description="Falloff power for transmissivity filter effect (1.0 is linear)",
min=0.1, max=10.0, default=1.0, precision=3
)
name="Filter",
description="Amount to blend in the material’s diffuse color in raytraced "
"transparency (simulating absorption)",
min=0.0, max=1.0, default=0.0, precision=3
)
name="Fresnel",
description="Power of Fresnel for transparency (Ray or ZTransp)",
min=0.0, max=5.0, soft_min=0.0, soft_max=5.0, default=0.0, precision=3
)
fresnel_factor: FloatProperty(
name="Blend",
description="Blending factor for Fresnel",
min=0.0, max=5.0, soft_min=0.0, soft_max=5.0, default=1.250, precision=3
)
name="Amount",
description="The clarity of the refraction. "
"(values < 1.0 give diffuse, blurry refractions)",
min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=1.0, precision=3
)
gloss_samples: IntProperty(
name="Samples",
description="Number of cone samples averaged for blurry refractions",
min=0, max=1024, default=18
)
gloss_threshold: FloatProperty(
name="Threshold",
description="Threshold for adaptive sampling (if a sample "
"contributes less than this amount [as a percentage], "
"sampling is stopped)",
min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=0.005, precision=3
)
name="IOR",
description="Sets angular index of refraction for raytraced refraction",
min=-0.0, max=10.0, soft_min=0.25, soft_max=4.0, default=1.3
)
class MaterialRaytraceMirror(PropertyGroup):
"""Declare reflection panel properties controllable in UI and translated to POV."""
bl_description = "Raytraced reflection settings for the Material",
use: BoolProperty(
name="Mirror",
description="Enable raytraced reflections",
default=False,
)
depth: IntProperty(
name="Depth",
description="Maximum allowed number of light inter-reflections",
min=0, max=32767, default=2
)
distance: FloatProperty(
name="Max Dist",
description="Maximum distance of reflected rays "
"(reflections further than this range "
"fade to sky color or material color)",
min=0.0, max=100000.0, soft_min=0.0, soft_max=10000.0, default=0.0, precision=3
)
fade_to: EnumProperty(
items=[
("FADE_TO_SKY", "Fade to sky", ""),
("FADE_TO_MATERIAL", "Fade to material color", "")],
name="Fade-out Color",
description="The color that rays with no intersection within the "
"Max Distance take (material color can be best for "
"indoor scenes, sky color for outdoor)",
default="FADE_TO_SKY",
)
fresnel: FloatProperty(
name="Fresnel",
description="Power of Fresnel for mirror reflection",
min=0.0, max=5.0, soft_min=0.0, soft_max=5.0, default=0.0, precision=3,
)
fresnel_factor: FloatProperty(
name="Blend",
description="Blending factor for Fresnel",
min=0.0, max=5.0, soft_min=0.0, soft_max=5.0, default=1.250, precision=3
)
gloss_anisotropic: FloatProperty(
name="Anisotropic",
description="The shape of the reflection, from 0.0 (circular) "
"to 1.0 (fully stretched along the tangent",
min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=1.0, precision=3
)
gloss_factor: FloatProperty(
Loading
Loading full blame...