Skip to content

Instantly share code, notes, and snippets.

@sonwh98
Created December 27, 2017 21:16
Show Gist options
  • Save sonwh98/60b9eb9b3f3c32d61b3b358de96af579 to your computer and use it in GitHub Desktop.
Save sonwh98/60b9eb9b3f3c32d61b3b358de96af579 to your computer and use it in GitHub Desktop.
clojurescript rotating cube with three.js
(ns red.cube
(:require [cljsjs.three]))
(defn draw-cube []
(let [scene (js/THREE.Scene.)
camera (js/THREE.PerspectiveCamera. 75 (/ js/window.innerWidth js/window.innerHeight) 0.1 1000)
renderer (js/THREE.WebGLRenderer. #js{:antialias true})
geometry (js/THREE.BoxGeometry. 1 1 1)
material (js/THREE.MeshBasicMaterial. #js{:color "#433F81"})
cube (js/THREE.Mesh. geometry material)
render (fn myself []
(js/requestAnimationFrame myself)
(let [x (.. cube -rotation -x)
y (.. cube -rotation -y)]
(set! (.. cube -rotation -x) (+ x 0.01))
(set! (.. cube -rotation -y) (+ y 0.01)))
(.. renderer (render scene camera)))]
(set! (.. camera -position -z) 4)
(.. renderer (setClearColor "#000000"))
(.. renderer (setSize js/window.innerWidth js/window.innerHeight))
(js/document.body.appendChild (.-domElement renderer))
(.. scene (add cube))
(render)
))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment