Module: Glitch3d
- Defined in:
- lib/glitch3d.rb,
lib/glitch3d/version.rb,
lib/glitch3d/strategies/none.rb,
lib/glitch3d/strategies/default.rb,
lib/glitch3d/strategies/localized.rb,
lib/glitch3d/strategies/duplication.rb,
lib/glitch3d/strategies/find_and_replace.rb
Defined Under Namespace
Modules: Default, Duplication, FindAndReplace, Localized, None
Constant Summary
collapse
- VERTEX_GLITCH_ITERATION_RATIO =
0.1
- VERTEX_GLITCH_OFFSET =
1
- FACE_GLITCH_ITERATION_RATIO =
0.1
- FACE_GLITCH_OFFSET =
0.5
- BOUNDARY_LIMIT =
Contain model within BOUNDARY_LIMITxBOUNDARY_LIMITxBOUNDARY_LIMIT cube
3
- CHUNK_SIZE =
20
- BLENDER_EXECUTABLE_PATH =
ENV['BLENDER_EXECUTABLE_PATH'].freeze
- RENDERING_SCRIPT_PATH =
File.dirname(__FILE__) + '/glitch3d/bpy/main.py'
- BASE_BLEND_FILE_PATH =
File.dirname(__FILE__) + '/../fixtures/base.blend'
- VERSION =
'0.2.4.0'
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.rand_vertex_glitch_offset ⇒ Object
77
78
79
|
# File 'lib/glitch3d.rb', line 77
def rand_vertex_glitch_offset
rand(-VERTEX_GLITCH_OFFSET..VERTEX_GLITCH_OFFSET)
end
|
Instance Method Details
#clean_model(source_file) ⇒ Object
21
22
23
24
25
26
27
|
# File 'lib/glitch3d.rb', line 21
def clean_model(source_file)
self.class.include Glitch3d::None
base_file_name = source_file.gsub(/.obj/, '')
model_name = File.basename(source_file, '.obj')
target_file = base_file_name + '.obj'
create_glitched_file(glitch(read_source(source_file)), target_file, model_name)
end
|
#infer_strategy(mode) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/glitch3d.rb', line 62
def infer_strategy(mode)
if !mode
mode_chosen = [ Glitch3d::Default, Glitch3d::Duplication, Glitch3d::FindAndReplace, Glitch3d::Localized, Glitch3d::None].sample
puts "Defaulting to #{mode_chosen}"
return mode_chosen
end
puts "Using #{mode}"
begin
return eval("Glitch3d::#{mode.to_s.gsub(/(?:_|^)(\w)/){$1.upcase}}")
rescue
raise "Strategy #{mode.to_s..gsub(/(?:_|^)(\w)/){$1.upcase}} not found"
end
end
|
#print_version ⇒ Object
47
48
49
50
|
# File 'lib/glitch3d.rb', line 47
def print_version
puts Glitch3d::VERSION
return nil
end
|
#process_model(source_file, args) ⇒ Object
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/glitch3d.rb', line 31
def process_model(source_file, args)
raise 'Make sure Blender is correctly installed' if BLENDER_EXECUTABLE_PATH.nil?
return clean_model(source_file) if args['clean']
source_file = random_fixture if source_file.nil?
print_version if args.has_key?('version')
raise 'Set Blender executable path in your env variables before using glitch3d' if BLENDER_EXECUTABLE_PATH.nil?
self.class.include infer_strategy(args['mode'])
@quality = args['quality'] || 'low'
source_file = source_file
base_file_name = source_file&.gsub(/.obj/, '')
model_name = File.basename(source_file, '.obj')
target_file = base_file_name + '_glitched.obj'
create_glitched_file(glitch(read_source(source_file)), target_file, model_name)
render(args, target_file, args['shots-number'] || 6) unless args['no-render']
end
|
#random_fixture ⇒ Object
52
53
54
55
56
57
58
59
60
|
# File 'lib/glitch3d.rb', line 52
def random_fixture
@fixtures_path = File.dirname(__FILE__) + '/../fixtures'
fixtures = []
Dir.foreach(@fixtures_path) do |item|
next if item == '.' or item == '..' or item.end_with?('_glitched.obj') or !item.end_with?('.obj')
fixtures << @fixtures_path + '/' + item
end
fixtures.sample
end
|