def METHOD_NAME(self):
    THREE = self.THREE
    document <= (container := html.DIV())
    self.camera = THREE.PerspectiveCamera.new(
                    70, window.innerWidth / window.innerHeight, 1, 10000)
    self.scene = THREE.Scene.new()
    self.scene.background = THREE.Color.new(0xf0f0f0)
    light = THREE.DirectionalLight.new(0xffffff, 1)
    light.position.set(1, 1, 1).normalize()
    self.scene.add(light)
    geometry = THREE.BoxGeometry.new(20, 20, 20)
    for _ in range(2000):
        obj = THREE.Mesh.new(
                  geometry,
                  THREE.MeshLambertMaterial.new({'color': random() * 0xffffff}))
        obj.position.x = random() * 800 - 400
        obj.position.y = random() * 800 - 400
        obj.position.z = random() * 800 - 400
        obj.rotation.x = random() * 2 * math.pi
        obj.rotation.y = random() * 2 * math.pi
        obj.rotation.z = random() * 2 * math.pi
        obj.scale.x = random() + 0.5
        obj.scale.y = random() + 0.5
        obj.scale.z = random() + 0.5
        self.scene.add(obj)
    self.raycaster = THREE.Raycaster.new()
    self.renderer = THREE.WebGLRenderer.new()
    self.renderer.setPixelRatio(window.devicePixelRatio)
    self.set_size()
    container <= self.renderer.domElement
    self.stats = self.Stats.new()
    container <= self.stats.dom
    document.bind('mousemove', self.onPointerMove)
    window.bind('resize', self.onWindowResize)