glitch3d 0.1.9 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b65aeea3897aebf558caa04c761a9bfc7c76a10f
4
- data.tar.gz: b86201369d5bbd5bcf69d8ef13cb2d3ce9dd941b
3
+ metadata.gz: d1e35aa80a88a44932933cf304f139440a8bd6d8
4
+ data.tar.gz: 264d26898524291db0ec8423353d3af45923f0b8
5
5
  SHA512:
6
- metadata.gz: b95f0df53586a2049dc1a178feb8d90d2fc6848e0537d7147ebea096a0be5505eb6544ba7c0a49bb234ddc0d4aa6fd07a8bf0abbf6b5847483d3e6e09ab918ed
7
- data.tar.gz: 62ab5d1abe93abf1568e60de4a845226682d7c85b116b8ba0d0bf0a12b498886c4a8f1b0ae1af3c463a7253b07599bb732ae22939cabbd3c92534a97b7295d13
6
+ metadata.gz: 9be85c9ec9d29dc376a31f9e3745dfb5cdf0f94d0eac46278b68aad77edf0894be480b5315cc9f0291d2fe69f3d9ea6e672ac2d6dd50cbe0aa1b1d7798b38c37
7
+ data.tar.gz: 4323ec3551d730d7eac60086ab4aa9c74d1853f550811eb8ca888c3a6e020c8a104304be6c72059b76c67f2adbbc05717a99430ed93c167c745c9b0f4c59682b
@@ -11,6 +11,7 @@ import uuid
11
11
  import sys
12
12
  import logging
13
13
  import string
14
+ import colorsys
14
15
 
15
16
  REFLECTOR_SCALE = 5
16
17
  REFLECTOR_STRENGTH = 12
@@ -19,7 +20,7 @@ WIREFRAME_THICKNESS = 0.008
19
20
  DISPLACEMENT_AMPLITUDE = 0.06
20
21
  ORIGIN = (0,0,0)
21
22
 
22
- PRIMITIVES = ['PYRAMID', 'CONE', 'PLANE', 'CUBE', 'ICO']
23
+ PRIMITIVES = ['PYRAMID', 'CUBE']
23
24
  props = []
24
25
  YELLOW = (1, 0.7, 0.1, 1)
25
26
  GREY = (0.2, 0.2, 0.2 ,1)
@@ -61,8 +62,9 @@ def output_name(index, model_path):
61
62
  def rotate(model_object, index):
62
63
  model_object.rotation_euler[2] = math.radians(index * (360.0 / shots_number))
63
64
 
65
+ # RGB 0 -> 1
64
66
  def rand_color_value():
65
- return round(random.uniform(0.1, 1.0), 10)
67
+ return random.uniform(0, 255) / 255
66
68
 
67
69
  def rand_location():
68
70
  return (rand_location_value(), rand_location_value(), rand_location_value())
@@ -76,8 +78,8 @@ def rand_rotation_value():
76
78
  def rand_location_value():
77
79
  return round(random.uniform(-4, 4), 10)
78
80
 
79
- def rand_color_vector():
80
- return (rand_color_value(), rand_color_value(), rand_color_value(), 1)
81
+ def rand_color():
82
+ return random.choice(COLORS)
81
83
 
82
84
  def rand_scale():
83
85
  return round(random.uniform(0, 0.2), 10)
@@ -169,7 +171,7 @@ def make_object_emitter(obj, emission_strength):
169
171
  emissive_material.use_nodes = True
170
172
  emission_node = emissive_material.node_tree.nodes.new('ShaderNodeEmission')
171
173
  # Set color
172
- emission_node.inputs[0].default_value = rand_color_vector()
174
+ emission_node.inputs[0].default_value = rand_color()
173
175
  # Set strength
174
176
  emission_node.inputs[1].default_value = emission_strength
175
177
  assign_node_to_output(emissive_material, emission_node)
@@ -222,8 +224,8 @@ def shuffle(obj):
222
224
  obj.rotation_euler = rand_rotation()
223
225
 
224
226
  def randomize_reflectors_colors():
225
- reflector1.data.materials[-1].node_tree.nodes['Emission'].inputs[0].default_value = rand_color_vector()
226
- reflector2.data.materials[-1].node_tree.nodes['Emission'].inputs[0].default_value = rand_color_vector()
227
+ reflector1.data.materials[-1].node_tree.nodes['Emission'].inputs[0].default_value = rand_color()
228
+ reflector2.data.materials[-1].node_tree.nodes['Emission'].inputs[0].default_value = rand_color()
227
229
 
228
230
  def add_object(obj, x, y, z, radius):
229
231
  infer_primitive(obj, location=(x, y, z), radius=radius)
@@ -298,15 +300,33 @@ def add_ocean(spatial_size, resolution):
298
300
  bpy.ops.object.modifier_add(type='OCEAN')
299
301
  ocean.modifiers["Ocean"].spatial_size = spatial_size
300
302
  ocean.modifiers["Ocean"].resolution = resolution
301
- make_object_glossy(ocean, rand_color_vector())
303
+ make_object_glossy(ocean, rand_color())
302
304
  ocean.name = 'Ocean'
303
305
  return ocean
304
306
 
307
+ # Delete current objects
305
308
  def flush_all_objects():
306
- # Delete current objects
307
309
  for index, obj in enumerate(bpy.data.objects):
308
310
  bpy.data.objects.remove(obj)
309
311
 
312
+ # Rotate hue to generate palette
313
+ def adjacent_colors(r, g, b, number):
314
+ angle = (360 / 5) / 360
315
+ h, l, s = colorsys.rgb_to_hls(r, g, b)
316
+ hue_positions = []
317
+ for i in range(number):
318
+ hue_positions.append(angle * i)
319
+ h = [(h + offset) % 1 for offset in hue_positions]
320
+ adjacent = [colorsys.hls_to_rgb(hi, l, s) for hi in h]
321
+ # add alpha component
322
+ res = list(map(lambda x: list(x), adjacent))
323
+ for i in res:
324
+ i.append(1)
325
+ return res
326
+
327
+ def rand_color_palette(number):
328
+ return adjacent_colors(rand_color_value(), rand_color_value(), rand_color_value(), number)
329
+
310
330
  def build_pyramid(width=1.0, length=1.0, height=1.0, location=ORIGIN):
311
331
  verts=[]
312
332
  faces=[]
@@ -23,6 +23,7 @@ FIXTURES_FOLDER_PATH = path + '/../fixtures/'
23
23
 
24
24
  DEBUG = False
25
25
  FISHEYE = False
26
+ COLORS = rand_color_palette(5)
26
27
 
27
28
  if DEBUG:
28
29
  shots_number = 2
@@ -111,23 +112,31 @@ if FISHEYE:
111
112
  bpy.ops.mesh.primitive_plane_add(location=(0,8 + REFLECTOR_LOCATION_PADDING, 0))
112
113
  bpy.ops.mesh.primitive_plane_add(location=(8 + REFLECTOR_LOCATION_PADDING,0,0))
113
114
  bpy.ops.mesh.primitive_plane_add(location=(0, 0, 8))
115
+ bpy.ops.mesh.primitive_plane_add(location=(0, 0, -2))
114
116
 
115
- reflector1 = bpy.data.objects['Plane.001']
116
- reflector2 = bpy.data.objects['Plane.002']
117
+ reflector1 = bpy.data.objects['Plane']
118
+ reflector2 = bpy.data.objects['Plane.001']
119
+ reflector3 = bpy.data.objects['Plane.002']
117
120
 
121
+ bpy.data.groups.new('Plane')
122
+ bpy.data.groups['Plane'].objects.link(reflector1)
123
+ bpy.data.groups['Plane'].objects.link(reflector2)
124
+ bpy.data.groups['Plane'].objects.link(reflector3)
125
+
126
+ reflector2.rotation_euler.x += math.radians(90)
118
127
  reflector1.rotation_euler.x += math.radians(90)
119
- reflector1.rotation_euler.z += math.radians(90)
128
+ reflector2.rotation_euler.z += math.radians(90)
120
129
 
121
130
  make_object_reflector(reflector1)
122
131
  make_object_reflector(reflector2)
132
+ make_object_reflector(reflector3)
123
133
 
124
134
  # Adjust camera
125
135
  context.scene.camera = camera_object
126
136
  look_at(camera_object, model_object)
127
137
 
128
138
  # Make floor
129
- floor = bpy.data.objects['Plane']
130
- floor.rotation_euler.x += math.radians(90)
139
+ floor = bpy.data.objects['Plane.003']
131
140
  floor.scale = (20,20,20)
132
141
  texture_object(floor)
133
142
  subdivide(floor, 8)
@@ -161,7 +170,7 @@ for index in range(0, int(shots_number)):
161
170
  rotate(model_object, index)
162
171
  randomize_reflectors_colors()
163
172
  OCEAN.modifiers['Ocean'].time += 1
164
- make_object_glossy(OCEAN, rand_color_vector())
173
+ make_object_glossy(OCEAN, rand_color())
165
174
  OCEAN.modifiers['Ocean'].choppiness += 0.3
166
175
  for prop in props:
167
176
  prop.location = rand_location()
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Glitch3d
3
- VERSION = '0.1.9'
3
+ VERSION = '0.2.0'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glitch3d
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - pskl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-26 00:00:00.000000000 Z
11
+ date: 2017-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler