Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'render_povray/scenography_properties.py')
-rwxr-xr-xrender_povray/scenography_properties.py392
1 files changed, 392 insertions, 0 deletions
diff --git a/render_povray/scenography_properties.py b/render_povray/scenography_properties.py
new file mode 100755
index 00000000..dd886513
--- /dev/null
+++ b/render_povray/scenography_properties.py
@@ -0,0 +1,392 @@
+# ##### 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 #####
+
+# <pep8 compliant>
+"""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,
+ CollectionProperty,
+)
+
+from .shading_properties import (
+ active_texture_name_from_uilist,
+ active_texture_name_from_search,
+ 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
+ )
+
+
+"""
+# class WORLD_TEXTURE_SLOTS_UL_layerlist(bpy.types.UIList):
+# texture_slots:
+
+class WorldTextureSlots(bpy.props.PropertyGroup):
+ index = bpy.prop.PropertyInt(name='index')
+ # foo = random prop
+
+bpy.types.World.texture_slots = bpy.props.CollectionProperty(type=PropertyGroup)
+
+for i in range(18): # length of world texture slots
+ world.texture_slots.add()
+"""
+
+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)