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 +4 -4
- data/lib/glitch3d/bpy/helpers.py +29 -9
- data/lib/glitch3d/bpy/rendering.py +15 -6
- data/lib/glitch3d/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1e35aa80a88a44932933cf304f139440a8bd6d8
|
4
|
+
data.tar.gz: 264d26898524291db0ec8423353d3af45923f0b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9be85c9ec9d29dc376a31f9e3745dfb5cdf0f94d0eac46278b68aad77edf0894be480b5315cc9f0291d2fe69f3d9ea6e672ac2d6dd50cbe0aa1b1d7798b38c37
|
7
|
+
data.tar.gz: 4323ec3551d730d7eac60086ab4aa9c74d1853f550811eb8ca888c3a6e020c8a104304be6c72059b76c67f2adbbc05717a99430ed93c167c745c9b0f4c59682b
|
data/lib/glitch3d/bpy/helpers.py
CHANGED
@@ -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', '
|
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
|
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
|
80
|
-
return (
|
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 =
|
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 =
|
226
|
-
reflector2.data.materials[-1].node_tree.nodes['Emission'].inputs[0].default_value =
|
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,
|
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
|
116
|
-
reflector2 = bpy.data.objects['Plane.
|
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
|
-
|
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,
|
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()
|
data/lib/glitch3d/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2017-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|