361 lines
11 KiB
Python
361 lines
11 KiB
Python
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|||
|
|
|
|||
|
|
"""Declare stage set and surrounding (camera, lights, environment) properties controllable in UI"""
|
|||
|
|
import bpy
|
|||
|
|
from bpy.utils import register_class, unregister_class
|
|||
|
|
from bpy.types import PropertyGroup
|
|||
|
|
from bpy.props import (
|
|||
|
|
FloatVectorProperty,
|
|||
|
|
StringProperty,
|
|||
|
|
BoolProperty,
|
|||
|
|
IntProperty,
|
|||
|
|
FloatProperty,
|
|||
|
|
EnumProperty,
|
|||
|
|
PointerProperty,
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
from .shading_properties import (
|
|||
|
|
brush_texture_update,
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# ---------------------------------------------------------------- #
|
|||
|
|
# Camera POV properties.
|
|||
|
|
# ---------------------------------------------------------------- #
|
|||
|
|
|
|||
|
|
|
|||
|
|
class RenderPovSettingsCamera(PropertyGroup):
|
|||
|
|
|
|||
|
|
"""Declare camera properties controllable in UI and translated to POV."""
|
|||
|
|
|
|||
|
|
# DOF Toggle
|
|||
|
|
dof_enable: BoolProperty(
|
|||
|
|
name="Depth Of Field", description="Enable POV Depth Of Field ", default=False
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# Aperture (Intensity of the Blur)
|
|||
|
|
dof_aperture: FloatProperty(
|
|||
|
|
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,
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# Aperture adaptive sampling
|
|||
|
|
dof_samples_min: IntProperty(
|
|||
|
|
name="Samples Min",
|
|||
|
|
description="Minimum number of rays to use for each pixel",
|
|||
|
|
min=1,
|
|||
|
|
max=128,
|
|||
|
|
default=3,
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
dof_samples_max: IntProperty(
|
|||
|
|
name="Samples Max",
|
|||
|
|
description="Maximum number of rays to use for each pixel",
|
|||
|
|
min=1,
|
|||
|
|
max=128,
|
|||
|
|
default=9,
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
dof_variance: IntProperty(
|
|||
|
|
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,
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
dof_confidence: FloatProperty(
|
|||
|
|
name="Confidence",
|
|||
|
|
description="Probability to reach the real color value. Larger confidence values "
|
|||
|
|
"will lead to more samples, slower traces and better images",
|
|||
|
|
min=0.01,
|
|||
|
|
max=0.99,
|
|||
|
|
default=0.20,
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
normal_enable: BoolProperty(name="Perturbated Camera", default=False)
|
|||
|
|
|
|||
|
|
cam_normal: FloatProperty(name="Normal Strength", min=0.0, max=1.0, default=0.001)
|
|||
|
|
|
|||
|
|
normal_patterns: EnumProperty(
|
|||
|
|
name="Pattern",
|
|||
|
|
description="",
|
|||
|
|
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", ""),
|
|||
|
|
),
|
|||
|
|
default="agate",
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
turbulence: FloatProperty(name="Turbulence", min=0.0, max=100.0, default=0.1)
|
|||
|
|
|
|||
|
|
scale: FloatProperty(name="Scale", min=0.0, default=1.0)
|
|||
|
|
|
|||
|
|
# ----------------------------------- CustomPOV Code ----------------------------------- #
|
|||
|
|
# 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"
|
|||
|
|
),
|
|||
|
|
default="MATERIAL",
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
shadow_method: EnumProperty(
|
|||
|
|
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)
|
|||
|
|
|
|||
|
|
use_halo: BoolProperty(
|
|||
|
|
name="Halo", description="Render spotlight with a volumetric halo", default=False
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
halo_intensity: FloatProperty(
|
|||
|
|
name="Halo intensity",
|
|||
|
|
description="Brightness of the spotlight halo cone",
|
|||
|
|
soft_min=0.0,
|
|||
|
|
soft_max=1.0,
|
|||
|
|
default=1.0,
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
shadow_ray_samples_x: IntProperty(
|
|||
|
|
name="Number of samples taken extra (samples x samples)", min=1, soft_max=64, default=1
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
shadow_ray_samples_y: IntProperty(
|
|||
|
|
name="Number of samples taken extra (samples x samples)", min=1, soft_max=64, default=1
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
shadow_ray_sample_method: EnumProperty(
|
|||
|
|
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"
|
|||
|
|
),
|
|||
|
|
default="CONSTANT_JITTERED",
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
use_jitter: BoolProperty(
|
|||
|
|
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"
|
|||
|
|
),
|
|||
|
|
default="MATERIAL",
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
use_sky_blend: BoolProperty(
|
|||
|
|
name="Blend Sky",
|
|||
|
|
description="Render background with natural progression from horizon to zenith",
|
|||
|
|
default=False,
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
use_sky_paper: BoolProperty(
|
|||
|
|
name="Paper Sky", description="Flatten blend or texture coordinates", default=False
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
use_sky_real: BoolProperty(
|
|||
|
|
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.050876, 0.050876, 0.050876),
|
|||
|
|
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(
|
|||
|
|
name="Index for texture_slots", default=0, update=brush_texture_update
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
|
|||
|
|
classes = (
|
|||
|
|
RenderPovSettingsCamera,
|
|||
|
|
RenderPovSettingsLight,
|
|||
|
|
RenderPovSettingsWorld,
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
|
|||
|
|
def register():
|
|||
|
|
for cls in classes:
|
|||
|
|
register_class(cls)
|
|||
|
|
|
|||
|
|
bpy.types.Camera.pov = PointerProperty(type=RenderPovSettingsCamera)
|
|||
|
|
bpy.types.Light.pov = PointerProperty(type=RenderPovSettingsLight)
|
|||
|
|
bpy.types.World.pov = PointerProperty(type=RenderPovSettingsWorld)
|
|||
|
|
|
|||
|
|
|
|||
|
|
def unregister():
|
|||
|
|
del bpy.types.Camera.pov
|
|||
|
|
del bpy.types.Light.pov
|
|||
|
|
del bpy.types.World.pov
|
|||
|
|
|
|||
|
|
for cls in reversed(classes):
|
|||
|
|
unregister_class(cls)
|