905c7df831054378705f1120bcf66b5a5cad315d
[blender-addons-contrib.git] / add_test_scene_elements / scene_materials.py
1 # gpl: author meta-androcto
2
3 import bpy
4 import mathutils
5 import math
6 from math import pi
7 from bpy.props import *
8 from mathutils import Vector
9
10
11 class add_BI_scene(bpy.types.Operator):
12     bl_idname = "materials.add_scene"
13     bl_label = "Create test scene"
14     bl_description = "Materials Scene with Objects"
15     bl_register = True
16     bl_undo = True
17
18     def execute(self, context):
19         blend_data = context.blend_data
20         ob = bpy.context.active_object
21
22 # add new scene
23         bpy.ops.scene.new(type="NEW")
24         scene = bpy.context.scene
25         scene.name = "scene_materials"
26
27 # render settings
28         render = scene.render
29         render.resolution_x = 1920
30         render.resolution_y = 1080
31         render.resolution_percentage = 50
32
33 # add new world
34         world = bpy.data.worlds.new("Materials_World")
35         scene.world = world
36         world.use_sky_blend = True
37         world.use_sky_paper = True
38         world.horizon_color = (0.004393, 0.02121, 0.050)
39         world.zenith_color = (0.03335, 0.227, 0.359)
40         world.light_settings.use_ambient_occlusion = True
41         world.light_settings.ao_factor = 0.25
42
43 # add camera
44         bpy.ops.object.camera_add(location=(7.48113, -6.50764, 5.34367), rotation=(1.109319, 0.010817, 0.814928))
45         cam = bpy.context.active_object.data
46         cam.lens = 35
47         cam.draw_size = 0.1
48         bpy.ops.view3d.viewnumpad(type='CAMERA')
49
50 # add point lamp
51         bpy.ops.object.lamp_add(type="POINT", location=(4.07625, 1.00545, 5.90386), rotation=(0.650328, 0.055217, 1.866391))
52         lamp1 = bpy.context.active_object.data
53         lamp1.name = "Point_Right"
54         lamp1.energy = 1.0
55         lamp1.distance = 30.0
56         lamp1.shadow_method = "RAY_SHADOW"
57         lamp1.use_sphere = True
58
59 # add point lamp2
60         bpy.ops.object.lamp_add(type="POINT", location=(-0.57101, -4.24586, 5.53674), rotation=(1.571, 0, 0.785))
61         lamp2 = bpy.context.active_object.data
62         lamp2.name = "Point_Left"
63         lamp2.energy = 1.0
64         lamp2.distance = 30.0
65
66 # add cube
67         bpy.ops.mesh.primitive_cube_add()
68         bpy.ops.object.editmode_toggle()
69         bpy.ops.mesh.subdivide(number_cuts=2)
70         bpy.ops.uv.unwrap(method='CONFORMAL', margin=0.001)
71         bpy.ops.object.editmode_toggle()
72
73         cube = bpy.context.active_object
74 # add new material
75         cubeMaterial = blend_data.materials.new("Cube_Material")
76         bpy.ops.object.material_slot_add()
77         cube.material_slots[0].material = cubeMaterial
78 # Diffuse
79         cubeMaterial.preview_render_type = "CUBE"
80         cubeMaterial.diffuse_color = (1.000, 0.373, 0.00)
81         cubeMaterial.diffuse_shader = 'OREN_NAYAR'
82         cubeMaterial.diffuse_intensity = 1.0
83         cubeMaterial.roughness = 0.09002
84 # Specular
85         cubeMaterial.specular_color = (1.000, 0.800, 0.136)
86         cubeMaterial.specular_shader = "PHONG"
87         cubeMaterial.specular_intensity = 1.0
88         cubeMaterial.specular_hardness = 511.0
89 # Shading
90         cubeMaterial.ambient = 1.00
91         cubeMaterial.use_cubic = False
92 # Transparency
93         cubeMaterial.use_transparency = False
94         cubeMaterial.alpha = 0
95 # Mirror
96         cubeMaterial.raytrace_mirror.use = True
97         cubeMaterial.mirror_color = (1.000, 0.793, 0.0)
98         cubeMaterial.raytrace_mirror.reflect_factor = 0.394
99         cubeMaterial.raytrace_mirror.fresnel = 2.0
100         cubeMaterial.raytrace_mirror.fresnel_factor = 1.641
101         cubeMaterial.raytrace_mirror.fade_to = "FADE_TO_SKY"
102         cubeMaterial.raytrace_mirror.gloss_anisotropic = 1.0
103 # Shadow
104         cubeMaterial.use_transparent_shadows = True
105
106 # Add a texture
107         cubetex = blend_data.textures.new("CloudTex", type='CLOUDS')
108         cubetex.noise_type = 'SOFT_NOISE'
109         cubetex.noise_scale = 0.25
110         mtex = cubeMaterial.texture_slots.add()
111         mtex.texture = cubetex
112         mtex.texture_coords = 'ORCO'
113         mtex.scale = (0.800, 0.800, 0.800)
114         mtex.use_map_mirror = True
115         mtex.mirror_factor = 0.156
116         mtex.use_map_color_diffuse = True
117         mtex.diffuse_color_factor = 0.156
118         mtex.use_map_normal = True
119         mtex.normal_factor = 0.010
120         mtex.blend_type = "ADD"
121         mtex.use_rgb_to_intensity = True
122         mtex.color = (1.000, 0.207, 0.000)
123
124 #add monkey #
125 ### add monkey
126         bpy.ops.mesh.primitive_monkey_add(location=(-0.1, 0.08901, 1.505))
127         bpy.ops.transform.rotate(value=(1.15019), axis=(0, 0, 1))
128         bpy.ops.transform.rotate(value=(-0.673882), axis=(0, 1, 0))
129         bpy.ops.transform.rotate(value=-0.055, axis=(1, 0, 0))
130         bpy.ops.object.modifier_add(type='SUBSURF')
131         bpy.ops.object.shade_smooth()
132         monkey = bpy.context.active_object
133 # add new material
134         monkeyMaterial = blend_data.materials.new("Monkey_Material")
135         bpy.ops.object.material_slot_add()
136         monkey.material_slots[0].material = monkeyMaterial
137 # Material settings
138         monkeyMaterial.preview_render_type = "MONKEY"
139         monkeyMaterial.diffuse_color = (0.239, 0.288, 0.288)
140         monkeyMaterial.specular_color = (0.604, 0.465, 0.136)
141         monkeyMaterial.diffuse_shader = 'LAMBERT'
142         monkeyMaterial.diffuse_intensity = 1.0
143         monkeyMaterial.specular_intensity = 0.3
144         monkeyMaterial.ambient = 0
145         monkeyMaterial.type = 'SURFACE'
146         monkeyMaterial.use_cubic = True
147         monkeyMaterial.use_transparency = False
148         monkeyMaterial.alpha = 0
149         monkeyMaterial.use_transparent_shadows = True
150         monkeyMaterial.raytrace_mirror.use = True
151         monkeyMaterial.raytrace_mirror.reflect_factor = 0.65
152         monkeyMaterial.raytrace_mirror.fade_to = "FADE_TO_MATERIAL"
153
154 ### add plane
155         bpy.ops.mesh.primitive_plane_add(radius=50, view_align=False, enter_editmode=False, location=(0, 0, -1))
156         bpy.ops.object.editmode_toggle()
157         bpy.ops.transform.rotate(value=-0.8, axis=(0, 0, 1), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1)
158         bpy.ops.uv.unwrap(method='CONFORMAL', margin=0.001)
159         bpy.ops.object.editmode_toggle()
160         plane = bpy.context.active_object
161 # add new material
162         planeMaterial = blend_data.materials.new("Plane_Material")
163         bpy.ops.object.material_slot_add()
164         plane.material_slots[0].material = planeMaterial
165 # Material settings
166         planeMaterial.preview_render_type = "CUBE"
167         planeMaterial.diffuse_color = (0.2, 0.2, 0.2)
168         planeMaterial.specular_color = (0.604, 0.465, 0.136)
169         planeMaterial.specular_intensity = 0.3
170         planeMaterial.ambient = 0
171         planeMaterial.use_cubic = True
172         planeMaterial.use_transparency = False
173         planeMaterial.alpha = 0
174         planeMaterial.use_transparent_shadows = True
175
176         return {"FINISHED"}