[Bf-extensions-cvs] [dac60f2] master: Update Cloud Gen: T48116 Depreciate Particles, Cycles Support

meta-androcto noreply at git.blender.org
Tue Apr 19 04:52:52 CEST 2016


Commit: dac60f2a946e43a83e083e863617f238632abb13
Author: meta-androcto
Date:   Tue Apr 19 12:52:04 2016 +1000
Branches: master
https://developer.blender.org/rBAdac60f2a946e43a83e083e863617f238632abb13

Update Cloud Gen: T48116 Depreciate Particles, Cycles Support

===================================================================

M	object_cloud_gen.py

===================================================================

diff --git a/object_cloud_gen.py b/object_cloud_gen.py
index 7d56f98..84c9379 100644
--- a/object_cloud_gen.py
+++ b/object_cloud_gen.py
@@ -22,11 +22,12 @@ bl_info = {
     "name": "Cloud Generator",
     "author": "Nick Keeline(nrk)",
     "version": (1, 0),
-    "blender": (2, 75, 0),
-    "location": "Blender Render: Tool Shelf > Create Tab",
+    "blender": (2, 77, 0),
+    "location": "Tool Shelf > Create Tab",
     "description": "Creates Volumetric Clouds",
     "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
                 "Scripts/Object/Cloud_Gen",
+    "tracker_url" : "https://developer.blender.org/maniphest/project/3/type/Bug/",
     "category": "Object",
 }
 
@@ -34,6 +35,145 @@ import bpy
 from bpy.props import BoolProperty, EnumProperty
 from bpy.types import Operator, Panel
 
+# For Cycles Render we create node groups or if it already exists we return it.
+def CreateNodeGroup(Type):
+
+# Look for NodeTree if it already exists return it
+    
+    CreateGroup = True
+    for Group in bpy.data.node_groups:
+        if Group.name == Type:
+            CreateGroup = False
+            NodeGroup = Group
+            
+    if CreateGroup == True:
+        NodeGroup = bpy.data.node_groups.new(name=Type,type="ShaderNodeTree")
+        NodeGroup.name = Type
+        NodeGroup.bl_label = Type
+        NodeGroup.nodes.clear()
+
+# Create a bunch of nodes and group them based on input to the def
+# Function type
+        if Type == 'CloudGen_VolumeProperties':
+            AddAddAndEmission = NodeGroup.nodes.new('ShaderNodeAddShader')
+            AddAddAndEmission.location = [300,395]
+            AddAbsorptionAndScatter = NodeGroup.nodes.new('ShaderNodeAddShader')
+            AddAbsorptionAndScatter.location = [0,395]
+            VolumeAbsorption = NodeGroup.nodes.new('ShaderNodeVolumeAbsorption')
+            VolumeAbsorption.location = [-300,395]
+            VolumeScatter = NodeGroup.nodes.new('ShaderNodeVolumeScatter')
+            VolumeScatter.location = [-300,0]
+            VolumeEmission = NodeGroup.nodes.new('ShaderNodeEmission')
+            VolumeEmission.location = [-300,-300]
+            MathAbsorptionMultiply = NodeGroup.nodes.new('ShaderNodeMath')
+            MathAbsorptionMultiply.location = [-750,395]
+            MathAbsorptionMultiply.operation = 'MULTIPLY'
+            MathScatterMultiply = NodeGroup.nodes.new('ShaderNodeMath')
+            MathScatterMultiply.location = [-750,0]
+            MathScatterMultiply.operation = 'MULTIPLY'
+            MathEmissionMultiply = NodeGroup.nodes.new('ShaderNodeMath')
+            MathEmissionMultiply.location = [-750,-300]
+            MathEmissionMultiply.operation = 'MULTIPLY'
+            MathBrightnessMultiply = NodeGroup.nodes.new('ShaderNodeMath')
+            MathBrightnessMultiply.location = [-1200,0]
+            MathBrightnessMultiply.operation = 'MULTIPLY'
+            MathGreaterThan = NodeGroup.nodes.new('ShaderNodeMath')
+            MathGreaterThan.location = [-1200,600]
+            MathGreaterThan.operation = 'GREATER_THAN'
+            MathGreaterThan.inputs[1].default_value = 0
+    
+            NodeGroup.links.new(AddAddAndEmission.inputs[0],AddAbsorptionAndScatter.outputs[0])
+            NodeGroup.links.new(AddAddAndEmission.inputs[1],VolumeEmission.outputs[0])
+            NodeGroup.links.new(AddAbsorptionAndScatter.inputs[0],VolumeAbsorption.outputs[0])
+            NodeGroup.links.new(AddAbsorptionAndScatter.inputs[1],VolumeScatter.outputs[0])
+            NodeGroup.links.new(VolumeAbsorption.inputs[1],MathAbsorptionMultiply.outputs[0])
+            NodeGroup.links.new(VolumeScatter.inputs[1],MathScatterMultiply.outputs[0])
+            NodeGroup.links.new(VolumeEmission.inputs[1],MathEmissionMultiply.outputs[0])
+            NodeGroup.links.new(MathAbsorptionMultiply.inputs[0],MathGreaterThan.outputs[0])
+            NodeGroup.links.new(MathScatterMultiply.inputs[0],MathGreaterThan.outputs[0])
+            NodeGroup.links.new(MathEmissionMultiply.inputs[0],MathGreaterThan.outputs[0])
+            NodeGroup.links.new(VolumeAbsorption.inputs[0],MathBrightnessMultiply.outputs[0])
+            
+# Create and Link In/Out to Group Node
+# Outputs
+            group_outputs = NodeGroup.nodes.new('NodeGroupOutput')
+            group_outputs.location = (600,395)
+            NodeGroup.outputs.new('NodeSocketShader','shader_out')             
+            NodeGroup.links.new(AddAddAndEmission.outputs[0],group_outputs.inputs['shader_out']) 
+            
+# Inputs
+            group_inputs = NodeGroup.nodes.new('NodeGroupInput')
+            group_inputs.location = (-1500,-300)
+            NodeGroup.inputs.new('NodeSocketFloat','Density')   
+            NodeGroup.inputs.new('NodeSocketFloat','Absorption Multiply')  
+            NodeGroup.inputs.new('NodeSocketColor','Absorption Color')  
+            NodeGroup.inputs.new('NodeSocketFloat','Scatter Multiply')  
+            NodeGroup.inputs.new('NodeSocketColor','Scatter Color')  
+            NodeGroup.inputs.new('NodeSocketFloat','Emission Amount')  
+            NodeGroup.inputs.new('NodeSocketFloat','Cloud Brightness')  
+                 
+            NodeGroup.links.new(group_inputs.outputs['Density'],MathGreaterThan.inputs[0]) 
+            NodeGroup.links.new(group_inputs.outputs['Absorption Multiply'],MathAbsorptionMultiply.inputs[1]) 
+            NodeGroup.links.new(group_inputs.outputs['Absorption Color'],MathBrightnessMultiply.inputs[0]) 
+            NodeGroup.links.new(group_inputs.outputs['Scatter Multiply'],MathScatterMultiply.inputs[1]) 
+            NodeGroup.links.new(group_inputs.outputs['Scatter Color'],VolumeScatter.inputs[0]) 
+            NodeGroup.links.new(group_inputs.outputs['Emission Amount'],MathEmissionMultiply.inputs[1]) 
+            NodeGroup.links.new(group_inputs.outputs['Cloud Brightness'],MathBrightnessMultiply.inputs[1]) 
+                 
+            
+        if Type == 'CloudGen_TextureProperties':
+            MathAdd = NodeGroup.nodes.new('ShaderNodeMath')
+            MathAdd.location = [-200,0]
+            MathAdd.operation = 'ADD'
+            MathDensityMultiply = NodeGroup.nodes.new('ShaderNodeMath')
+            MathDensityMultiply.location = [-390,0]
+            MathDensityMultiply.operation = 'MULTIPLY'
+            PointDensityRamp = NodeGroup.nodes.new('ShaderNodeValToRGB')
+            PointDensityRamp.location = [-675,-250]
+            PointRamp = PointDensityRamp.color_ramp
+            PElements = PointRamp.elements
+            PElements[0].position = 0.418
+            PElements[0].color = 0, 0, 0, 1
+            PElements[1].position = 0.773
+            PElements[1].color = 1, 1, 1, 1
+            CloudRamp = NodeGroup.nodes.new('ShaderNodeValToRGB')
+            CloudRamp.location = [-675,0]
+            CRamp = CloudRamp.color_ramp
+            CElements = CRamp.elements
+            CElements[0].position = 0.527
+            CElements[0].color = 0, 0, 0, 1
+            CElements[1].position = 0.759
+            CElements[1].color = 1, 1, 1, 1
+            NoiseTex = NodeGroup.nodes.new('ShaderNodeTexNoise')
+            NoiseTex.location = [-940,0]
+            NoiseTex.inputs['Detail'].default_value = 4
+            TexCoord = NodeGroup.nodes.new('ShaderNodeTexCoord')
+            TexCoord.location = [-1250,0]
+            
+            
+            NodeGroup.links.new(MathAdd.inputs[0],MathDensityMultiply.outputs[0])
+            NodeGroup.links.new(MathAdd.inputs[1],PointDensityRamp.outputs[0])
+            NodeGroup.links.new(MathDensityMultiply.inputs[0],CloudRamp.outputs[0])
+            NodeGroup.links.new(CloudRamp.inputs[0],NoiseTex.outputs[0])
+            NodeGroup.links.new(NoiseTex.inputs[0],TexCoord.outputs[3])
+            
+# Create and Link In/Out to Group Nodes
+# Outputs
+            group_outputs = NodeGroup.nodes.new('NodeGroupOutput')
+            group_outputs.location = (0,0)
+            NodeGroup.outputs.new('NodeSocketFloat','Density W_CloudTex')             
+            NodeGroup.links.new(MathAdd.outputs[0],group_outputs.inputs['Density W_CloudTex']) 
+            
+# Inputs
+            group_inputs = NodeGroup.nodes.new('NodeGroupInput')
+            group_inputs.location = (-1250,-300)
+            NodeGroup.inputs.new('NodeSocketFloat','Scale')   
+            NodeGroup.inputs.new('NodeSocketFloat','Point Density In')  
+            NodeGroup.links.new(group_inputs.outputs['Scale'],NoiseTex.inputs['Scale']) 
+            NodeGroup.links.new(group_inputs.outputs['Point Density In'],MathDensityMultiply.inputs[1]) 
+            NodeGroup.links.new(group_inputs.outputs['Point Density In'],PointDensityRamp.inputs[0]) 
+            
+    return NodeGroup
 
 # This routine takes an object and deletes all of the geometry in it
 # and adds a bounding box to it.
@@ -306,43 +446,38 @@ class VIEW3D_PT_tools_cloud(Panel):
     bl_options = {'DEFAULT_CLOSED'}
 
     def draw(self, context):
-        if context.scene.render.engine == "BLENDER_RENDER":
-            active_obj = context.active_object
-            layout = self.layout
-            col = layout.column(align=True)
+        active_obj = context.active_object
+        layout = self.layout
+        col = layout.column(align=True)
 
-            WhatToDo = getActionToDo(active_obj)
+        WhatToDo = getActionToDo(active_obj)
+
+        if WhatToDo == 'DEGENERATE':
+            col.operator("cloud.generate_cloud", text="DeGenerate")
 
-            if WhatToDo == 'DEGENERATE':
-                col.operator("cloud.generate_cloud", text="DeGenerate")
+        elif WhatToDo == 'CLOUD_CONVERT_TO_MESH':
+            col.operator("cloud.generate_cloud", text="Convert to Mesh")
 
-            elif WhatToDo == 'CLOUD_CONVERT_TO_MESH':
-                col.operator("cloud.generate_cloud", text="Convert to Mesh")
+        elif WhatToDo == 'NO_SELECTION_DO_NOTHING':
+            col.label(text="Select one or more")
+            col.label(text="objects to generate")
+            col.label(text="a cloud")
 
-            elif WhatToDo == 'NO_SELECTION_DO_NOTHING':
-                col.label(text="Select one or more")
-                col.label(text="

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list