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 'lighting_dynamic_sky.py')
-rw-r--r--lighting_dynamic_sky.py175
1 files changed, 102 insertions, 73 deletions
diff --git a/lighting_dynamic_sky.py b/lighting_dynamic_sky.py
index f07d5160..bb9c6148 100644
--- a/lighting_dynamic_sky.py
+++ b/lighting_dynamic_sky.py
@@ -22,7 +22,7 @@
bl_info = {
"name": "Dynamic Sky",
"author": "Pratik Solanki",
- "version": (1, 0, 4),
+ "version": (1, 0, 6),
"blender": (2, 78, 0),
"location": "View3D > Tools",
"description": "Creates Dynamic Sky for Cycles",
@@ -71,10 +71,26 @@ def check_world_name(name_id="Dynamic"):
return name_id
+def check_cycles():
+ return ('cycles' in bpy.context.user_preferences.addons.keys())
+
+
class dsky(Operator):
bl_idname = "sky.dyn"
bl_label = "Make a Procedural sky"
- bl_description = "Make a Procedural Sky"
+ bl_description = ("Make a Procedural Sky with parameters in the 3D View\n"
+ "Note: Available just for Cycles renderer\n"
+ "Only the last created Dynamic World can be accessed from this panel")
+
+ @classmethod
+ def poll(cls, context):
+ return check_cycles()
+
+ def get_node_types(self, node_tree, node_type):
+ for node in node_tree.nodes:
+ if node.type == node_type:
+ return node
+ return None
def execute(self, context):
try:
@@ -88,48 +104,67 @@ class dsky(Operator):
world.use_nodes = True
nt = world.node_tree
- bg = world.node_tree.nodes['Background']
-
+ # Note: (see T52714) to avoid string localization problems, assign the name for
+ # nodes that will be exposed in the 3D view (pattern UI name with underscore)
+ bg = self.get_node_types(nt, "BACKGROUND")
+ bg.name = "Scene_Brightness"
bg.inputs[0].default_value[:3] = (0.5, .1, 0.6)
bg.inputs[1].default_value = 1
+ bg.location = (6708.3, 360)
+
ntl = nt.links.new
tcor = nt.nodes.new(type="ShaderNodeTexCoord")
- map = nt.nodes.new(type="ShaderNodeMapping")
- map.vector_type = 'NORMAL'
+ tcor.location = (243.729, 1005)
+
+ map1 = nt.nodes.new(type="ShaderNodeMapping")
+ map1.vector_type = 'NORMAL'
+ map1.location = (786.54, 730)
nor = nt.nodes.new(type="ShaderNodeNormal")
+ nor.name = "Sky_normal"
+ nor.location = (1220.16, 685)
cr1 = nt.nodes.new(type="ShaderNodeValToRGB")
cr1.color_ramp.elements[0].position = 0.969
cr1.color_ramp.interpolation = 'EASE'
+ cr1.location = (1671.33, 415)
cr2 = nt.nodes.new(type="ShaderNodeValToRGB")
cr2.color_ramp.elements[0].position = 0.991
cr2.color_ramp.elements[1].position = 1
cr2.color_ramp.interpolation = 'EASE'
+ cr2.location = (2196.6, 415)
cr3 = nt.nodes.new(type="ShaderNodeValToRGB")
cr3.color_ramp.elements[0].position = 0.779
cr3.color_ramp.elements[1].position = 1
cr3.color_ramp.interpolation = 'EASE'
+ cr3.location = (2196.6, 415)
mat1 = nt.nodes.new(type="ShaderNodeMath")
mat1.operation = 'MULTIPLY'
mat1.inputs[1].default_value = 0.2
+ mat1.location = (2196.6, 685)
mat2 = nt.nodes.new(type="ShaderNodeMath")
mat2.operation = 'MULTIPLY'
mat2.inputs[1].default_value = 2
+ mat2.location = (3294, 685)
mat3 = nt.nodes.new(type="ShaderNodeMath")
mat3.operation = 'MULTIPLY'
mat3.inputs[1].default_value = 40.9
+ mat3.location = (2745.24, 415)
mat4 = nt.nodes.new(type="ShaderNodeMath")
mat4.operation = 'SUBTRACT'
mat4.inputs[1].default_value = 1
+ mat4.location = (3294, 415)
ntl(mat2.inputs[0], mat1.outputs[0])
ntl(mat4.inputs[0], mat3.outputs[0])
ntl(mat1.inputs[0], cr3.outputs[0])
ntl(mat3.inputs[0], cr2.outputs[0])
soft = nt.nodes.new(type="ShaderNodeMixRGB")
+ soft.name = "Soft_hard"
+ soft.location = (3819.3, 550)
soft_1 = nt.nodes.new(type="ShaderNodeMixRGB")
+ soft_1.location = (3819.3, 185)
soft.inputs[0].default_value = 1
soft_1.inputs[0].default_value = 0.466
ntl(soft.inputs[1], mat2.outputs[0])
@@ -140,12 +175,16 @@ class dsky(Operator):
mix1 = nt.nodes.new(type="ShaderNodeMixRGB")
mix1.blend_type = 'MULTIPLY'
mix1.inputs[0].default_value = 1
+ mix1.location = (4344.3, 630)
mix1_1 = nt.nodes.new(type="ShaderNodeMixRGB")
mix1_1.blend_type = 'MULTIPLY'
mix1_1.inputs[0].default_value = 1
+ mix1_1.location = (4344.3, 90)
mix2 = nt.nodes.new(type="ShaderNodeMixRGB")
+ mix2.location = (4782, 610)
mix2_1 = nt.nodes.new(type="ShaderNodeMixRGB")
+ mix2_1.location = (5131.8, 270)
mix2.inputs[1].default_value = (0, 0, 0, 1)
mix2.inputs[2].default_value = (32, 22, 14, 200)
mix2_1.inputs[1].default_value = (0, 0, 0, 1)
@@ -158,22 +197,33 @@ class dsky(Operator):
gam = nt.nodes.new(type="ShaderNodeGamma")
gam.inputs[1].default_value = 2.3
+ gam.location = (5131.8, 610)
+
gam2 = nt.nodes.new(type="ShaderNodeGamma")
+ gam2.name = "Sun_value"
gam2.inputs[1].default_value = 1
+ gam2.location = (5524.5, 610)
+
gam3 = nt.nodes.new(type="ShaderNodeGamma")
+ gam3.name = "Shadow_color_saturation"
gam3.inputs[1].default_value = 1
+ gam3.location = (5524.5, 880)
sunopa = nt.nodes.new(type="ShaderNodeMixRGB")
sunopa.blend_type = 'ADD'
sunopa.inputs[0].default_value = 1
+ sunopa.location = (5940.6, 610)
sunopa_1 = nt.nodes.new(type="ShaderNodeMixRGB")
sunopa_1.blend_type = 'ADD'
sunopa_1.inputs[0].default_value = 1
+ sunopa_1.location = (5524.5, 340)
combine = nt.nodes.new(type="ShaderNodeMixRGB")
+ combine.location = (6313.8, 360)
ntl(combine.inputs[1], sunopa.outputs[0])
ntl(combine.inputs[2], sunopa_1.outputs[0])
lp = nt.nodes.new(type="ShaderNodeLightPath")
+ lp.location = (5940.6, 130)
ntl(combine.inputs[0], lp.outputs[0])
ntl(gam2.inputs[0], gam.outputs[0])
@@ -184,25 +234,33 @@ class dsky(Operator):
map2.scale[2] = 6.00
map2.scale[0] = 1.5
map2.scale[1] = 1.5
+ map2.location = (2196.6, 1510)
n1 = nt.nodes.new(type="ShaderNodeTexNoise")
n1.inputs[1].default_value = 3.8
n1.inputs[2].default_value = 2.4
n1.inputs[3].default_value = 0.5
+ n1.location = (2745.24, 1780)
n2 = nt.nodes.new(type="ShaderNodeTexNoise")
n2.inputs[1].default_value = 2.0
n2.inputs[2].default_value = 10
n2.inputs[3].default_value = 0.2
+ n2.location = (2745.24, 1510)
ntl(n2.inputs[0], map2.outputs[0])
ntl(n1.inputs[0], map2.outputs[0])
sc1 = nt.nodes.new(type="ShaderNodeValToRGB")
+ sc1.location = (3294, 1780)
sc2 = nt.nodes.new(type="ShaderNodeValToRGB")
+ sc2.location = (3294, 1510)
sc3 = nt.nodes.new(type="ShaderNodeValToRGB")
+ sc3.location = (3819.3, 820)
sc3_1 = nt.nodes.new(type="ShaderNodeValToRGB")
+ sc3_1.location = (4344.3, 1360)
sc4 = nt.nodes.new(type="ShaderNodeValToRGB")
+ sc4.location = (3819.3, 1090)
sc1.color_ramp.elements[1].position = 0.649
sc1.color_ramp.elements[0].position = 0.408
@@ -234,11 +292,24 @@ class dsky(Operator):
sc3_1.color_ramp.elements[0].position = 0.0
smix1 = nt.nodes.new(type="ShaderNodeMixRGB")
+ smix1.location = (3819.3, 1550)
+ smix1.name = "Cloud_color"
smix2 = nt.nodes.new(type="ShaderNodeMixRGB")
+ smix2.location = (4344.3, 1630)
+ smix2.name = "Cloud_density"
smix2_1 = nt.nodes.new(type="ShaderNodeMixRGB")
+ smix2_1.location = (4782, 1360)
+
smix3 = nt.nodes.new(type="ShaderNodeMixRGB")
+ smix3.location = (4344.3, 1090)
+ smix3.name = "Sky_and_Horizon_colors"
+
smix4 = nt.nodes.new(type="ShaderNodeMixRGB")
+ smix4.location = (4782, 880)
+
smix5 = nt.nodes.new(type="ShaderNodeMixRGB")
+ smix5.name = "Cloud_opacity"
+ smix5.location = (5131.8, 880)
smix1.inputs[1].default_value = (1, 1, 1, 1)
smix1.inputs[2].default_value = (0, 0, 0, 1)
@@ -255,12 +326,18 @@ class dsky(Operator):
smix5.inputs[0].default_value = 1
srgb = nt.nodes.new(type="ShaderNodeSeparateRGB")
+ srgb.location = (786.54, 1370)
aniadd = nt.nodes.new(type="ShaderNodeMath")
+ aniadd.location = (1220.16, 1235)
crgb = nt.nodes.new(type="ShaderNodeCombineRGB")
+ crgb.location = (1671.33, 1510)
sunrgb = nt.nodes.new(type="ShaderNodeMixRGB")
+ sunrgb.name = "Sun_color"
+
sunrgb.blend_type = 'MULTIPLY'
sunrgb.inputs[2].default_value = (32, 30, 30, 200)
sunrgb.inputs[0].default_value = 1
+ sunrgb.location = (4344.3, 360)
ntl(mix2.inputs[2], sunrgb.outputs[0])
@@ -283,6 +360,7 @@ class dsky(Operator):
ntl(sc2.inputs[0], n2.outputs[0])
skynor = nt.nodes.new(type="ShaderNodeNormal")
+ skynor.location = (3294, 1070)
ntl(sc3.inputs[0], skynor.outputs[1])
ntl(sc4.inputs[0], skynor.outputs[1])
@@ -299,69 +377,19 @@ class dsky(Operator):
ntl(cr1.inputs[0], nor.outputs[1])
ntl(cr2.inputs[0], cr1.outputs[0])
ntl(cr3.inputs[0], nor.outputs[1])
- ntl(nor.inputs[0], map.outputs[0])
- ntl(map.inputs[0], tcor.outputs[0])
+ ntl(nor.inputs[0], map1.outputs[0])
+ ntl(map1.inputs[0], tcor.outputs[0])
ntl(sunopa_1.inputs[1], smix5.outputs[0])
ntl(sunopa_1.inputs[2], mix2_1.outputs[0])
- nt.nodes['Background'].location = (6708.3, 360)
-
- nt.nodes['ColorRamp'].location = (1671.33, 415)
- nt.nodes['ColorRamp.001'].location = (2196.6, 415)
- nt.nodes['ColorRamp.002'].location = (1671.33, 685)
- nt.nodes['ColorRamp.003'].location = (3294, 1780)
- nt.nodes['ColorRamp.004'].location = (3294, 1510)
- nt.nodes['ColorRamp.005'].location = (3819.3, 820)
- nt.nodes['ColorRamp.006'].location = (4344.3, 1360)
- nt.nodes['ColorRamp.007'].location = (3819.3, 1090)
-
- nt.nodes['Combine RGB'].location = (1671.33, 1510)
-
- nt.nodes['Gamma'].location = (5131.8, 610)
- nt.nodes['Gamma.001'].location = (5524.5, 610)
- nt.nodes['Gamma.002'].location = (5524.5, 880)
- nt.nodes['Light Path'].location = (5940.6, 130)
-
- nt.nodes['Mapping'].location = (786.54, 730)
- nt.nodes['Mapping.001'].location = (2196.6, 1510)
-
- nt.nodes['Math'].location = (2196.6, 685)
- nt.nodes['Math.001'].location = (3294, 685)
- nt.nodes['Math.002'].location = (2745.24, 415)
- nt.nodes['Math.003'].location = (3294, 415)
- nt.nodes['Math.004'].location = (1220.16, 1235)
-
- nt.nodes['Mix'].location = (3819.3, 550)
- nt.nodes['Mix.001'].location = (3819.3, 185)
- nt.nodes['Mix.002'].location = (4344.3, 630)
- nt.nodes['Mix.003'].location = (4344.3, 90)
- nt.nodes['Mix.004'].location = (4782, 610)
- nt.nodes['Mix.005'].location = (5131.8, 270)
- nt.nodes['Mix.006'].location = (5940.6, 610)
- nt.nodes['Mix.007'].location = (5524.5, 340)
- nt.nodes['Mix.008'].location = (6313.8, 360)
- nt.nodes['Mix.009'].location = (3819.3, 1550)
- nt.nodes['Mix.010'].location = (4344.3, 1630)
- nt.nodes['Mix.011'].location = (4782, 1360)
- nt.nodes['Mix.012'].location = (4344.3, 1090)
- nt.nodes['Mix.013'].location = (4782, 880)
- nt.nodes['Mix.014'].location = (5131.8, 880)
- nt.nodes['Mix.015'].location = (4344.3, 360)
-
- nt.nodes['Noise Texture'].location = (2745.24, 1780)
- nt.nodes['Noise Texture.001'].location = (2745.24, 1510)
-
- nt.nodes['Normal'].location = (1220.16, 685)
- nt.nodes['Normal.001'].location = (3294, 1070)
-
- nt.nodes['Separate RGB'].location = (786.54, 1370)
- nt.nodes['Texture Coordinate'].location = (243.729, 1005)
- nt.nodes['World Output'].location = (7167.3, 360)
+ world_out = self.get_node_types(nt, "OUTPUT_WORLD")
+ world_out.location = (7167.3, 360)
except Exception as e:
error_handlers(self, e, "Make a Procedural sky has failed")
return {"CANCELLED"}
+
return {'FINISHED'}
@@ -385,18 +413,19 @@ def draw_world_settings(col, context):
pick_world = bpy.data.worlds[stored_name]
try:
m = pick_world.node_tree.nodes[28]
- m = pick_world.node_tree.nodes['Mix.012'].inputs[1]
- n = pick_world.node_tree.nodes['Mix.012'].inputs[2]
- c = pick_world.node_tree.nodes['Mix.009'].inputs[1]
- o = pick_world.node_tree.nodes['Mix.014'].inputs[0]
- d = pick_world.node_tree.nodes['Mix.010'].inputs[0]
- so = pick_world.node_tree.nodes['Gamma.001'].inputs[1]
- so2 = pick_world.node_tree.nodes['Gamma.002'].inputs[1]
- no = pick_world.node_tree.nodes['Normal'].outputs[0]
- sof = pick_world.node_tree.nodes['Mix'].inputs[0]
- bgp = pick_world.node_tree.nodes['Background'].inputs[1]
-
- suc = pick_world.node_tree.nodes['Mix.015'].inputs[1]
+
+ m = pick_world.node_tree.nodes['Sky_and_Horizon_colors'].inputs[1]
+ n = pick_world.node_tree.nodes['Sky_and_Horizon_colors'].inputs[2]
+ c = pick_world.node_tree.nodes['Cloud_color'].inputs[1]
+ o = pick_world.node_tree.nodes['Cloud_opacity'].inputs[0]
+ d = pick_world.node_tree.nodes['Cloud_density'].inputs[0]
+ so = pick_world.node_tree.nodes['Sun_value'].inputs[1]
+ so2 = pick_world.node_tree.nodes['Shadow_color_saturation'].inputs[1]
+ no = pick_world.node_tree.nodes['Sky_normal'].outputs[0]
+ sof = pick_world.node_tree.nodes['Soft_hard'].inputs[0]
+ bgp = pick_world.node_tree.nodes['Scene_Brightness'].inputs[1]
+
+ suc = pick_world.node_tree.nodes['Sun_color'].inputs[1]
except:
col.label(text="Please Create a new World", icon="INFO")
col.label(text="seems that there was already", icon="BLANK1")