Class: Three::Renderers::ThreeJSRenderer

Inherits:
Renderer
  • Object
show all
Defined in:
lib/three/renderers/threejs_renderer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(canvas: nil, backend: Backends::ThreeJS.new, **options) ⇒ ThreeJSRenderer

Returns a new instance of ThreeJSRenderer.



11
12
13
14
15
16
17
18
19
20
# File 'lib/three/renderers/threejs_renderer.rb', line 11

def initialize(canvas: nil, backend: Backends::ThreeJS.new, **options)
  shadow_map_enabled = options.delete(:shadow_map_enabled)
  shadow_map_type = options.delete(:shadow_map_type)
  shadow_map_auto_update = options.delete(:shadow_map_auto_update)
  @backend = backend
  @handle = @backend.create_renderer(canvas: canvas, **options)
  if [shadow_map_enabled, shadow_map_type, shadow_map_auto_update].any?
    configure_shadow_map(enabled: shadow_map_enabled, type: shadow_map_type, auto_update: shadow_map_auto_update)
  end
end

Instance Attribute Details

#backendObject (readonly)

Returns the value of attribute backend.



9
10
11
# File 'lib/three/renderers/threejs_renderer.rb', line 9

def backend
  @backend
end

#handleObject (readonly)

Returns the value of attribute handle.



9
10
11
# File 'lib/three/renderers/threejs_renderer.rb', line 9

def handle
  @handle
end

Instance Method Details

#animation_loop(&block) ⇒ Object



41
42
43
44
# File 'lib/three/renderers/threejs_renderer.rb', line 41

def animation_loop(&block)
  @backend.set_animation_loop(@handle, block)
  self
end

#configure_shadow_map(enabled: nil, type: nil, auto_update: nil) ⇒ Object



36
37
38
39
# File 'lib/three/renderers/threejs_renderer.rb', line 36

def configure_shadow_map(enabled: nil, type: nil, auto_update: nil)
  @backend.set_renderer_shadow_map(@handle, enabled: enabled, type: type, auto_update: auto_update)
  self
end

#dispose(object, **options) ⇒ Object



53
54
55
56
# File 'lib/three/renderers/threejs_renderer.rb', line 53

def dispose(object, **options)
  @backend.dispose(object, **options)
  self
end

#dispose_subtree(object, remove: true, dispose_geometries: true, dispose_materials: true, dispose_textures: true, dispose_skeletons: true) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/three/renderers/threejs_renderer.rb', line 65

def dispose_subtree(
  object,
  remove: true,
  dispose_geometries: true,
  dispose_materials: true,
  dispose_textures: true,
  dispose_skeletons: true
)
  @backend.dispose_subtree(
    object,
    remove: remove,
    dispose_geometries: dispose_geometries,
    dispose_materials: dispose_materials,
    dispose_textures: dispose_textures,
    dispose_skeletons: dispose_skeletons
  )
  self
end

#dom_elementObject



27
28
29
# File 'lib/three/renderers/threejs_renderer.rb', line 27

def dom_element
  @backend.renderer_dom_element(@handle)
end

#render(scene, camera) ⇒ Object



46
47
48
49
50
51
# File 'lib/three/renderers/threejs_renderer.rb', line 46

def render(scene, camera)
  scene.update_matrix_world if scene.respond_to?(:update_matrix_world)
  camera.update_matrix_world if camera.respond_to?(:update_matrix_world) && camera.parent.nil?
  @backend.render(@handle, scene, camera)
  self
end

#set_clear_color(color, alpha = 1) ⇒ Object



31
32
33
34
# File 'lib/three/renderers/threejs_renderer.rb', line 31

def set_clear_color(color, alpha = 1)
  @backend.set_clear_color(@handle, color, alpha)
  self
end

#set_size(width, height) ⇒ Object



22
23
24
25
# File 'lib/three/renderers/threejs_renderer.rb', line 22

def set_size(width, height)
  @backend.set_renderer_size(@handle, width, height)
  self
end

#traverse_handles(object, &block) ⇒ Object



58
59
60
61
62
63
# File 'lib/three/renderers/threejs_renderer.rb', line 58

def traverse_handles(object, &block)
  return enum_for(:traverse_handles, object) unless block

  @backend.traverse_handles(object, &block)
  self
end