3028 lines
70 KiB
Text
3028 lines
70 KiB
Text
--------------------
|
|
detach-parent
|
|
; builds and animates a random heirarchical structure,
|
|
; click on the objects to detach them from their parents
|
|
(define (build-heir depth)
|
|
(with-state
|
|
(let ((p (with-state
|
|
(translate (vector 2 0 0))
|
|
(scale 0.9)
|
|
(build-cube))))
|
|
(when (> depth 0)
|
|
(parent p)
|
|
(for ((i (in-range 0 5)))
|
|
(when (zero? (random 3))
|
|
(rotate (vector 0 0 (* 45 (crndf))))
|
|
(build-heir (- depth 1))))))))
|
|
|
|
(define (animate-heir children depth)
|
|
(for-each
|
|
(lambda (child)
|
|
(with-primitive child
|
|
(rotate (vector 0 0 (sin (+ depth (time)))))
|
|
(animate-heir (get-children) (+ depth 1))))
|
|
children))
|
|
|
|
(define (animate)
|
|
(animate-heir (get-children) 0)
|
|
(when (mouse-button 1)
|
|
(let ((s (select (mouse-x) (mouse-y) 2)))
|
|
(when (not (zero? s))
|
|
(with-primitive s
|
|
(detach-parent))))))
|
|
|
|
(clear)
|
|
(build-heir 5)
|
|
(every-frame (animate))
|
|
|
|
--------------------
|
|
with-state
|
|
; state hierachy, by nesting with-state:
|
|
(with-state
|
|
(hint-vertcols)
|
|
(colour (vector 0 0 1))
|
|
(with-state
|
|
(translate (vector 1 0 0))
|
|
(build-sphere 10 10))
|
|
(build-torus 1 2 30 30))
|
|
|
|
; making primitives:
|
|
(define my-torus (with-state
|
|
(hint-vertcols)
|
|
(colour (vector 0 0 1))
|
|
(build-torus 1 2 30 30)))
|
|
|
|
--------------------
|
|
with-primitive
|
|
|
|
(define my-torus (with-state
|
|
(colour (vector 0 0 1))
|
|
(build-torus 1 2 30 30)))
|
|
|
|
; change the torus colour:
|
|
(with-primitive my-torus
|
|
(colour (vector 0 1 0)))
|
|
|
|
--------------------
|
|
with-pixels-renderer
|
|
|
|
|
|
--------------------
|
|
pdata-map!
|
|
(clear)
|
|
(define my-torus (build-torus 1 2 30 30))
|
|
|
|
(with-primitive my-torus
|
|
(pdata-map!
|
|
(lambda (position)
|
|
(vadd position (vector (flxrnd) 0 0))) ; jitter the vertex in x
|
|
"p")) ; read/write the position pdata array
|
|
|
|
(with-primitive my-torus
|
|
(pdata-map!
|
|
(lambda (position normal)
|
|
(vadd position normal)) ; add the normal to the position (expand the object)
|
|
"p" "n")) ; read/write the position pdata array, read the normals array
|
|
|
|
--------------------
|
|
pdata-index-map!
|
|
(clear)
|
|
(define my-torus (build-torus 1 2 30 30))
|
|
|
|
(with-primitive my-torus
|
|
(pdata-index-map!
|
|
(lambda (index position)
|
|
(vadd position (vector (gh index) 0 0))) ; jitter the vertex in x
|
|
"p")) ; read/write the position pdata array
|
|
|
|
--------------------
|
|
pdata-fold
|
|
|
|
(define my-torus (build-torus 1 2 30 30))
|
|
|
|
; find the centre of the primitive by averaging
|
|
; the points position's together
|
|
(let ((centre
|
|
(with-primitive my-torus
|
|
(vdiv (pdata-fold
|
|
vadd
|
|
(vector 0 0 0)
|
|
"p") (pdata-size)))))
|
|
|
|
(display centre)(newline))
|
|
|
|
--------------------
|
|
pdata-index-fold
|
|
|
|
(define my-torus (build-torus 1 2 30 30))
|
|
|
|
; can't think of a good example for this yet...
|
|
(let ((something
|
|
(with-primitive my-torus
|
|
(vdiv (pdata-index-fold
|
|
(lambda (index position ret)
|
|
(vadd ret (vmul position index)))
|
|
(vector 0 0 0)
|
|
"p") (pdata-size)))))
|
|
|
|
(display something)(newline))
|
|
|
|
--------------------
|
|
collada-import
|
|
;(collada-import "test.dae")
|
|
|
|
--------------------
|
|
vmix
|
|
|
|
; mix red and blue together
|
|
(colour (vmix (vector 1 0 0) (vector 0 0 1) 0.5))
|
|
|
|
--------------------
|
|
vclamp
|
|
|
|
; make a valid colour from any old vector
|
|
(colour (vclamp (vector 2 400 -123)))
|
|
|
|
--------------------
|
|
vsquash
|
|
|
|
; make a valid colour from any old vector
|
|
(colour (vclamp (vector 2 400 -123)))
|
|
|
|
--------------------
|
|
pixels-circle
|
|
|
|
(with-primitive (build-pixels 100 100)
|
|
(pixels-circle (vector 50 50 0) 30 (vector 1 0 0 1))
|
|
(pixels-upload))
|
|
|
|
--------------------
|
|
pixels-blend-circle
|
|
|
|
(with-primitive (build-pixels 100 100)
|
|
(pixels-blend-circle (vector 50 50 0) 30 (vector 1 0 0 1))
|
|
(pixels-upload))
|
|
|
|
--------------------
|
|
pixels-dodge
|
|
|
|
(with-primitive (build-pixels 100 100)
|
|
(pixels-dodge (vector 50 50 0) 30 (vector 1 0 0 1))
|
|
(pixels-upload))
|
|
|
|
--------------------
|
|
pixels-burn
|
|
|
|
(with-primitive (build-pixels 100 100)
|
|
(pixels-burn (vector 50 50 0) 30 (vector 1 0 0 1))
|
|
(pixels-upload))
|
|
|
|
--------------------
|
|
pixels-clear
|
|
|
|
(with-primitive (build-pixels 100 100)
|
|
(pixels-clear (vector 1 0 0))
|
|
(pixels-upload))
|
|
|
|
--------------------
|
|
poly-type
|
|
(define p (build-polygons 3 'triangle-strip))
|
|
(with-primitive p
|
|
(display (poly-type))(newline))
|
|
|
|
--------------------
|
|
pdata-for-each-face
|
|
|
|
|
|
--------------------
|
|
pdata-for-each-triangle
|
|
|
|
|
|
--------------------
|
|
pdata-for-each-tri-sample
|
|
|
|
|
|
--------------------
|
|
build-extrusion
|
|
|
|
(clear)
|
|
(build-extrusion
|
|
(build-circle-profile 20 0.3)
|
|
(list
|
|
(vector 0 0 0)
|
|
(vector 0 1 2)
|
|
(vector 0 -1 4)
|
|
(vector 0 0 6))
|
|
(list 0 1 1 0) 1 (vector 0 1 0))
|
|
|
|
--------------------
|
|
build-partial-extrusion
|
|
|
|
(clear)
|
|
|
|
(define profile (build-circle-profile 10 0.3))
|
|
(define path (build-list 20 (lambda (i) (vector (crndf) (crndf) i))))
|
|
(define width (build-list 20 (lambda (_) 1)))
|
|
|
|
(hint-wire)
|
|
(define p (build-partial-extrusion profile path 1))
|
|
|
|
(every-frame
|
|
(with-primitive p
|
|
(partial-extrude (* (length path) 0.5 (+ (sin (time)) 1))
|
|
profile path width (vector 0 1 0) 0.1)))
|
|
|
|
--------------------
|
|
partial-extrude
|
|
|
|
(clear)
|
|
|
|
(define profile (build-circle-profile 10 0.3))
|
|
(define path (build-list 20 (lambda (i) (vector (crndf) (crndf) i))))
|
|
(define width (build-list 20 (lambda (_) 1)))
|
|
|
|
(hint-wire)
|
|
(define p (build-partial-extrusion profile path 100))
|
|
|
|
(every-frame
|
|
(with-primitive p
|
|
(partial-extrude (* (length path) 0.5 (+ (sin (time)) 1))
|
|
profile path width (vector 0 1 0) 0.1)))
|
|
|
|
--------------------
|
|
build-circle-profile
|
|
|
|
(clear)
|
|
(build-extrusion
|
|
(build-circle-profile 20 0.3)
|
|
(list
|
|
(vector 0 0 0)
|
|
(vector 0 1 2)
|
|
(vector 0 -1 4)
|
|
(vector 0 0 6))
|
|
(list 0 1 1 0) 1 (vector 0 1 0))
|
|
|
|
--------------------
|
|
rndf
|
|
(display (rndf))(newline)
|
|
|
|
--------------------
|
|
crndf
|
|
(display (crndf))(newline)
|
|
|
|
--------------------
|
|
rndvec
|
|
(clear)
|
|
(hint-none)
|
|
(hint-points)
|
|
(point-width 4)
|
|
(define p (build-particles 1000))
|
|
|
|
(show-axis 1)
|
|
|
|
(with-primitive p
|
|
(pdata-map!
|
|
(lambda (p)
|
|
(vector 1 1 1))
|
|
"c")
|
|
(pdata-map!
|
|
(lambda (p)
|
|
(rndvec))
|
|
"p"))
|
|
|
|
--------------------
|
|
crndvec
|
|
(clear)
|
|
(hint-none)
|
|
(hint-points)
|
|
(point-width 4)
|
|
(define p (build-particles 1000))
|
|
|
|
(show-axis 1)
|
|
|
|
(with-primitive p
|
|
(pdata-map!
|
|
(lambda (p)
|
|
(vector 1 1 1))
|
|
"c")
|
|
(pdata-map!
|
|
(lambda (p)
|
|
(crndvec))
|
|
"p"))
|
|
|
|
--------------------
|
|
srndvec
|
|
(clear)
|
|
(hint-none)
|
|
(hint-points)
|
|
(point-width 4)
|
|
(define p (build-particles 1000))
|
|
|
|
(show-axis 1)
|
|
|
|
(with-primitive p
|
|
(pdata-map!
|
|
(lambda (p)
|
|
(vector 1 1 1))
|
|
"c")
|
|
(pdata-map!
|
|
(lambda (p)
|
|
(srndvec))
|
|
"p"))
|
|
|
|
--------------------
|
|
hsrndvec
|
|
(clear)
|
|
(hint-none)
|
|
(hint-points)
|
|
(point-width 4)
|
|
(define p (build-particles 1000))
|
|
|
|
(show-axis 1)
|
|
|
|
(with-primitive p
|
|
(pdata-map!
|
|
(lambda (p)
|
|
(vector 1 1 1))
|
|
"c")
|
|
(pdata-map!
|
|
(lambda (p)
|
|
(hsrndvec))
|
|
"p"))
|
|
|
|
--------------------
|
|
grndf
|
|
(display (grndf))(newline)
|
|
|
|
--------------------
|
|
grndvec
|
|
(clear)
|
|
(hint-none)
|
|
(hint-points)
|
|
(point-width 4)
|
|
(define p (build-particles 1000))
|
|
|
|
(show-axis 1)
|
|
|
|
(with-primitive p
|
|
(pdata-map!
|
|
(lambda (p)
|
|
(vector 1 1 1))
|
|
"c")
|
|
(pdata-map!
|
|
(lambda (p)
|
|
(grndvec))
|
|
"p"))
|
|
|
|
--------------------
|
|
rndbary
|
|
(rndbary)
|
|
|
|
--------------------
|
|
rndbary
|
|
(clear)
|
|
(hint-none)
|
|
(hint-points)
|
|
(point-width 4)
|
|
(define p (build-particles 1000))
|
|
|
|
(show-axis 1)
|
|
|
|
(with-primitive p
|
|
(pdata-map!
|
|
(lambda (p)
|
|
(vector 1 1 1))
|
|
"c")
|
|
(pdata-map!
|
|
(lambda (p)
|
|
(rndhemi (vector 0 1 0)))
|
|
"p"))
|
|
|
|
--------------------
|
|
hrndbary
|
|
(clear)
|
|
(hint-none)
|
|
(hint-points)
|
|
(point-width 4)
|
|
(define p (build-particles 1000))
|
|
|
|
(show-axis 1)
|
|
|
|
(with-primitive p
|
|
(pdata-map!
|
|
(lambda (p)
|
|
(vector 1 1 1))
|
|
"c")
|
|
(pdata-map!
|
|
(lambda (p)
|
|
(hrndhemi (vector 0 1 0)))
|
|
"p"))
|
|
|
|
--------------------
|
|
pdata-for-each-tri-sample
|
|
|
|
|
|
--------------------
|
|
pdata-for-each-tri-sample
|
|
|
|
|
|
--------------------
|
|
occlusion-texture-bake
|
|
|
|
|
|
--------------------
|
|
oa-start
|
|
(oa-start)
|
|
(define mysample (oa-load-sample (fullpath "sample.wav")))
|
|
(oa-play mysample (vector 0 0 0) 1 0.2)
|
|
|
|
--------------------
|
|
oa-load-sample
|
|
(oa-start)
|
|
(define mysample (oa-load-sample "sample.wav"))
|
|
(oa-play mysample (vector 0 0 0) 1 0.2)
|
|
|
|
--------------------
|
|
oa-update
|
|
(oa-update)
|
|
|
|
--------------------
|
|
oa-play
|
|
(oa-start)
|
|
(define mysample (oa-load-sample (fullpath "sample.wav")))
|
|
(oa-play mysample (vector 0 0 0) 1 0.2)
|
|
|
|
--------------------
|
|
oa-set-head-pos
|
|
(oa-start)
|
|
(define mysample (oa-load-sample (fullpath "sample.wav")))
|
|
(oa-set-head-pos (vector -1 0 0) (vector 0 0 1))
|
|
(oa-play mysample (vector 0 0 0) 1 0.2)
|
|
|
|
--------------------
|
|
oa-set-poly
|
|
(oa-set-poly 256)
|
|
|
|
--------------------
|
|
oa-set-cull-dist
|
|
(oa-set-cull-dist 1000)
|
|
|
|
--------------------
|
|
oa-set-acoustics
|
|
(oa-set-acoustics 1 1 1 1)
|
|
|
|
--------------------
|
|
time
|
|
(define (animate)
|
|
(rotate (vector (sin (time)) 0 0))
|
|
(draw-cube))
|
|
(every-frame (animate))
|
|
|
|
--------------------
|
|
delta
|
|
(define (animate)
|
|
(rotate (vector (* (delta) 10) 0 0))
|
|
(draw-cube))
|
|
(every-frame (animate))
|
|
|
|
--------------------
|
|
flxrnd
|
|
(define (animate)
|
|
(colour (vector (flxrnd) (flxrnd) (flxrnd)))
|
|
(draw-cube))
|
|
(every-frame (animate))
|
|
|
|
--------------------
|
|
flxseed
|
|
(define (animate)
|
|
(colour (vector (flxrnd) (flxrnd) (flxrnd)))
|
|
(draw-cube))
|
|
(flxseed 10)
|
|
(every-frame (animate)) ; the same sequence of colours will be generated
|
|
|
|
--------------------
|
|
set-searchpathss
|
|
(set-searchpaths (append (get-searchpaths) (list "/path/to/my/textures/" "/path/to/my/other/textures/")))
|
|
|
|
--------------------
|
|
get-searchpaths
|
|
(display (get-searchpaths))(newline)
|
|
|
|
--------------------
|
|
fullpath
|
|
(fullpath "myfile")
|
|
|
|
--------------------
|
|
framedump
|
|
(framedump "picture.jpg")
|
|
|
|
--------------------
|
|
tiled-framedump
|
|
(tiled-framedump "picture.jpg" 3000 2000)
|
|
|
|
--------------------
|
|
build-cube
|
|
(define mynewcube (build-cube))
|
|
|
|
--------------------
|
|
build-polygons
|
|
(define mynewshape (build-polygons 100 'triangle-strip))
|
|
|
|
--------------------
|
|
build-sphere
|
|
(define mynewshape (build-sphere 10 10))
|
|
|
|
--------------------
|
|
build-torus
|
|
(define mynewshape (build-torus 0.5 1 12 12))
|
|
|
|
--------------------
|
|
build-plane
|
|
(define mynewshape (build-plane))
|
|
|
|
--------------------
|
|
build-seg-plane
|
|
(define mynewshape (build-plane))
|
|
|
|
--------------------
|
|
build-cylinder
|
|
(define mynewshape (build-cylinder 10 10))
|
|
|
|
--------------------
|
|
build-ribbon
|
|
(define mynewshape (build-ribbon 10))
|
|
|
|
--------------------
|
|
build-text
|
|
(texture (load-texture "font.png"))
|
|
(define mynewshape (build-text "hello"))
|
|
|
|
--------------------
|
|
build-type
|
|
(clear)
|
|
(wire-colour (vector 0 0 1))
|
|
; this font should be on the default fluxus path (as it's the editor font)
|
|
(define t (build-type "Bitstream-Vera-Sans-Mono.ttf" "fluxus rocks!!"))
|
|
|
|
; make a poly primitive from the type
|
|
(define p (with-state
|
|
(translate (vector 0 4 0))
|
|
(type->poly t)))
|
|
|
|
; set some texture coords on the poly prim and load a texture onto it
|
|
(with-primitive p
|
|
(pdata-map!
|
|
(lambda (t p)
|
|
(vmul p 0.5))
|
|
"t" "p")
|
|
(texture (load-texture "refmap.png")))
|
|
|
|
--------------------
|
|
build-extruded-type
|
|
(clear)
|
|
(wire-colour (vector 0 0 1))
|
|
; this font should be on the default fluxus path (as it's the editor font)
|
|
(define t (build-extruded-type "Bitstream-Vera-Sans-Mono.ttf" "fluxus rocks!!" 1))
|
|
|
|
; make a poly primitive from the type
|
|
(define p (with-state
|
|
(translate (vector 0 4 0))
|
|
(type->poly t)))
|
|
|
|
; set some texture coords on the poly prim and load a texture onto it
|
|
(with-primitive p
|
|
(pdata-map!
|
|
(lambda (t p)
|
|
(vmul p 0.5))
|
|
"t" "p")
|
|
(texture (load-texture "refmap.png")))
|
|
|
|
--------------------
|
|
type->poly
|
|
(clear)
|
|
(wire-colour (vector 0 0 1))
|
|
; this font should be on the default fluxus path (as it's the editor font)
|
|
(define t (build-extruded-type "Bitstream-Vera-Sans-Mono.ttf" "fluxus rocks!!" 1))
|
|
|
|
; make a poly primitive from the type
|
|
(define p (with-state
|
|
(translate (vector 0 4 0))
|
|
(type->poly t)))
|
|
|
|
; set some texture coords on the poly prim and load a texture onto it
|
|
(with-primitive p
|
|
(pdata-map!
|
|
(lambda (t p)
|
|
(vmul p 0.5))
|
|
"t" "p")
|
|
(texture (load-texture "refmap.png")))
|
|
|
|
--------------------
|
|
text-params
|
|
; don't use me!
|
|
|
|
--------------------
|
|
build-nurbs-sphere
|
|
(define mynewshape (build-nurbs-sphere 10 10))
|
|
|
|
--------------------
|
|
build-nurbs-plane
|
|
(define mynewshape (build-nurbs-plane 10 10))
|
|
|
|
--------------------
|
|
build-particles
|
|
(define mynewshape (build-particles 100))
|
|
|
|
--------------------
|
|
build-image
|
|
(define img (build-image (load-texture "test.png") (vector 0 0) (get-screen-size)))
|
|
|
|
--------------------
|
|
build-locator
|
|
(define mynewshape (build-locator))
|
|
|
|
--------------------
|
|
locator-bounding-radius
|
|
(define mylocator (build-locator))
|
|
(with-primitive mylocator
|
|
(locator-bounding-radius 23.4))
|
|
|
|
--------------------
|
|
load-primitive
|
|
(define mynewshape (load-primitive "octopus.obj"))
|
|
|
|
--------------------
|
|
clear-geometry-cache
|
|
(clear-geometry-cache)
|
|
|
|
--------------------
|
|
save-primitive
|
|
(with-primitive (build-sphere 10 10)
|
|
(save-primitive "mymesh.obj"))
|
|
|
|
--------------------
|
|
build-pixels
|
|
(clear)
|
|
(define p1 (build-pixels 16 16))
|
|
(with-primitive p1
|
|
(pdata-map!
|
|
(lambda (c)
|
|
(rndvec))
|
|
"c")
|
|
(pixels-upload)) ; call pixels upload to see the results
|
|
|
|
(translate (vector 1.5 0 0))
|
|
(define p2 (build-pixels 256 256 #t)) ; render target
|
|
(with-pixels-renderer p2 ; render a cube into the pixels primitive
|
|
(clear-colour (vector .37 .5 .59))
|
|
(scale 5)
|
|
(rotate (vector -5 60 140))
|
|
(build-cube))
|
|
|
|
--------------------
|
|
pixels-upload
|
|
(define mynewshape (build-pixels 100 100))
|
|
(with-primitive mynewshape
|
|
(pdata-map!
|
|
(lambda (c)
|
|
(rndvec))
|
|
"c")
|
|
(pixels-upload)) ; call pixels upload to see the results
|
|
|
|
--------------------
|
|
pixels-download
|
|
|
|
--------------------
|
|
pixels->texture
|
|
(define mypixels (build-pixels 100 100))
|
|
(with-primitive mypixels
|
|
(pdata-map!
|
|
(lambda (c)
|
|
(rndvec))
|
|
"c")
|
|
(pixels-upload))
|
|
|
|
(with-state
|
|
(texture (pixels->texture mypixels))
|
|
(build-torus 1 2 10 10))
|
|
|
|
--------------------
|
|
pixels-width
|
|
(define mynewshape (build-pixels 100 100))
|
|
(with-primitive mynewshape
|
|
(display (vector (pixels-width) (pixels-height)))(newline))
|
|
|
|
--------------------
|
|
pixels-height
|
|
(define mynewshape (build-pixels 100 100))
|
|
(with-primitive mynewshape
|
|
(display (vector (pixels-width) (pixels-height)))(newline))
|
|
|
|
--------------------
|
|
pixels-renderer-activate
|
|
(clear)
|
|
(define p (build-pixels 256 256))
|
|
|
|
(with-primitive p
|
|
(pixels-renderer-activate #t))
|
|
|
|
(define cube (with-pixels-renderer p
|
|
(clear-colour (vector .2 .4 .8))
|
|
(rotate #(30 50 80))
|
|
(scale 5)
|
|
(build-cube)))
|
|
|
|
--------------------
|
|
build-blobby
|
|
(clear)
|
|
(define b (build-blobby 5 (vector 30 30 30) (vector 1 1 1)))
|
|
|
|
(with-primitive b
|
|
(shinyness 100)
|
|
(specular (vector 1 1 1))
|
|
(hint-vertcols)
|
|
(pdata-set "p" 0 (vector 0.75 0.25 0.5))
|
|
(pdata-set "c" 0 (vector 0.01 0 0))
|
|
(pdata-set "s" 0 0.01)
|
|
(pdata-set "p" 1 (vector 0.25 0.75 0.5))
|
|
(pdata-set "c" 1 (vector 0 0.01 0))
|
|
(pdata-set "s" 1 0.01)
|
|
(pdata-set "p" 2 (vector 0.75 0.75 0.5))
|
|
(pdata-set "c" 2 (vector 0 0 0.01))
|
|
(pdata-set "s" 2 0.01)
|
|
(pdata-set "p" 3 (vector 0.25 0.25 0.5))
|
|
(pdata-set "c" 3 (vector 0.01 0.01 0))
|
|
(pdata-set "s" 3 0.01)
|
|
(pdata-set "p" 4 (vector 0.5 0.5 0.5))
|
|
(pdata-set "c" 4 (vector 0.01 0.01 0.01))
|
|
(pdata-set "s" 4 0.025))
|
|
|
|
--------------------
|
|
blobby->poly
|
|
(clear)
|
|
(define b (build-blobby 5 (vector 30 30 30) (vector 1 1 1)))
|
|
|
|
(with-primitive b
|
|
(shinyness 100)
|
|
(specular (vector 1 1 1))
|
|
(hint-vertcols)
|
|
(pdata-set "p" 0 (vector 0.75 0.25 0.5))
|
|
(pdata-set "c" 0 (vector 0.01 0 0))
|
|
(pdata-set "s" 0 0.01)
|
|
(pdata-set "p" 1 (vector 0.25 0.75 0.5))
|
|
(pdata-set "c" 1 (vector 0 0.01 0))
|
|
(pdata-set "s" 1 0.01)
|
|
(pdata-set "p" 2 (vector 0.75 0.75 0.5))
|
|
(pdata-set "c" 2 (vector 0 0 0.01))
|
|
(pdata-set "s" 2 0.01)
|
|
(pdata-set "p" 3 (vector 0.25 0.25 0.5))
|
|
(pdata-set "c" 3 (vector 0.01 0.01 0))
|
|
(pdata-set "s" 3 0.01)
|
|
(pdata-set "p" 4 (vector 0.5 0.5 0.5))
|
|
(pdata-set "c" 4 (vector 0.01 0.01 0.01))
|
|
(pdata-set "s" 4 0.025))
|
|
|
|
(define p (with-state
|
|
(translate (vector 1 0 0))
|
|
(blobby->poly b)))
|
|
|
|
--------------------
|
|
draw-instance
|
|
(define mynewshape (build-cube))
|
|
(colour (vector 1 0 0))
|
|
(draw-instance mynewshape) ; draws a copy of mynewshape
|
|
|
|
--------------------
|
|
draw-cube
|
|
(define (render)
|
|
(draw-cube))
|
|
(every-frame (render))
|
|
|
|
--------------------
|
|
draw-plane
|
|
(define (render)
|
|
(draw-plane))
|
|
(every-frame (render))
|
|
|
|
--------------------
|
|
draw-sphere
|
|
(define (render)
|
|
(draw-sphere))
|
|
(every-frame (render))
|
|
|
|
--------------------
|
|
draw-cylinder
|
|
(define (render)
|
|
(draw-cylinder))
|
|
(every-frame (render))
|
|
|
|
--------------------
|
|
draw-torus
|
|
(define (render)
|
|
(draw-torus))
|
|
(every-frame (render))
|
|
|
|
--------------------
|
|
destroy
|
|
(define mynewshape (build-sphere 10 10))
|
|
(destroy mynewshape)
|
|
|
|
--------------------
|
|
poly-indices
|
|
(define p (build-cube))
|
|
|
|
(with-primitive p
|
|
(poly-convert-to-indexed)
|
|
(display (poly-indices))(newline))
|
|
|
|
--------------------
|
|
poly-type-enum
|
|
(define (poly-type)
|
|
(let ((t (poly-type-enum)))
|
|
(cond
|
|
((eq? t 0) 'triangle-strip)
|
|
((eq? t 1) 'quad-list)
|
|
((eq? t 2) 'triangle-list)
|
|
((eq? t 3) 'triangle-fan)
|
|
((eq? t 4) 'polygon))))
|
|
|
|
--------------------
|
|
poly-indexed?
|
|
(define p (build-polygons 3 'triangle-strip))
|
|
(with-primitive p
|
|
(poly-convert-to-indexed)
|
|
(display (poly-indexed?))(newline))
|
|
|
|
--------------------
|
|
poly-set-index
|
|
(clear)
|
|
; lets build our own cube primitive...
|
|
(define p (build-polygons 8 'quad-list))
|
|
|
|
(with-primitive p
|
|
; setup the vertex data
|
|
(pdata-set "p" 0 (vector -1 -1 -1))
|
|
(pdata-set "p" 1 (vector 1 -1 -1))
|
|
(pdata-set "p" 2 (vector 1 -1 1))
|
|
(pdata-set "p" 3 (vector -1 -1 1))
|
|
(pdata-set "p" 4 (vector -1 1 -1))
|
|
(pdata-set "p" 5 (vector 1 1 -1))
|
|
(pdata-set "p" 6 (vector 1 1 1))
|
|
(pdata-set "p" 7 (vector -1 1 1))
|
|
(pdata-set "c" 0 (vector 0 0 0))
|
|
(pdata-set "c" 1 (vector 0 0 1))
|
|
(pdata-set "c" 2 (vector 0 1 0))
|
|
(pdata-set "c" 3 (vector 0 1 1))
|
|
(pdata-set "c" 4 (vector 1 0 0))
|
|
(pdata-set "c" 5 (vector 1 0 1))
|
|
(pdata-set "c" 6 (vector 1 1 0))
|
|
(pdata-set "c" 7 (vector 1 1 1))
|
|
|
|
(hint-wire)
|
|
(hint-unlit)
|
|
(hint-vertcols)
|
|
|
|
; connect the verts together into faces
|
|
(poly-set-index (list 7 6 5 4 5 6 2 1
|
|
4 5 1 0 1 2 3 0
|
|
3 7 4 0 6 7 3 2)))
|
|
|
|
--------------------
|
|
poly-convert-to-indexed
|
|
(define mynewshape (build-sphere 10 10))
|
|
(grab mynewshape)
|
|
(poly-convert-to-indexed)
|
|
(ungrab)
|
|
|
|
--------------------
|
|
build-copy
|
|
(define mynewshape (build-sphere 10 10))
|
|
(define myothernewshape (build-copy mynewshape))
|
|
|
|
--------------------
|
|
make-pfunc
|
|
(define mypfunc (make-pfunc 'arithmetic))
|
|
|
|
--------------------
|
|
pfunc-set!
|
|
(define mypfunc (make-pfunc 'arithmetic))
|
|
(pfunc-set! mypfunc (list 'operator "add"
|
|
'src "p"
|
|
'const 0.4
|
|
'dst "p"))
|
|
|
|
--------------------
|
|
pfunc-run
|
|
(define mypfunc (make-pfunc 'arithmetic))
|
|
|
|
--------------------
|
|
geo/line-intersect
|
|
(clear)
|
|
(define s (with-state
|
|
(build-torus 1 2 10 10)))
|
|
|
|
(define l (with-state
|
|
(hint-none)
|
|
(hint-unlit)
|
|
(hint-wire)
|
|
(build-line 2)))
|
|
|
|
(define (check a b)
|
|
(with-primitive s
|
|
(for-each
|
|
(lambda (intersection)
|
|
(with-state ; draw a sphere at the intersection point
|
|
(translate (cdr (assoc "p" intersection)))
|
|
(colour (vector 0 1 0))
|
|
(scale (vector 0.3 0.3 0.3))
|
|
(draw-sphere)))
|
|
(geo/line-intersect a b))))
|
|
|
|
(every-frame
|
|
(with-primitive l
|
|
(pdata-set "p" 0 (vector 0 -5 0))
|
|
(pdata-set "p" 1 (vector (* 5 (sin (time))) 5 0))
|
|
(check (pdata-ref "p" 0) (pdata-ref "p" 1))))
|
|
|
|
--------------------
|
|
recalc-bb
|
|
|
|
--------------------
|
|
bb/bb-intersect?
|
|
(clear)
|
|
|
|
(define a (with-state
|
|
(build-sphere 10 10)))
|
|
|
|
(define b (with-state
|
|
(translate (vector 2 0 0))
|
|
(build-sphere 10 10)))
|
|
|
|
(every-frame
|
|
(begin
|
|
(with-primitive b
|
|
(translate (vector (* -0.1 (sin (time))) 0 0)))
|
|
(with-primitive a
|
|
(when (bb/bb-intersect? b 0)
|
|
(colour (rndvec))))))
|
|
|
|
--------------------
|
|
bb/point-intersect?
|
|
(clear)
|
|
|
|
(define a (with-state
|
|
(build-sphere 10 10)))
|
|
|
|
(define b (with-state
|
|
(translate (vector 2 0 0))
|
|
(build-sphere 10 10)))
|
|
|
|
(every-frame
|
|
(begin
|
|
(with-primitive b
|
|
(translate (vector (* -0.1 (sin (time))) 0 0))
|
|
(recalc-bb))
|
|
(with-primitive a
|
|
; check the centre point and give the radius, this sphere
|
|
; check is faster than a bb/bb one
|
|
(when (bb/point-intersect? (vtransform (vector 0 0 0)
|
|
(with-primitive b (get-transform))) 1)
|
|
(colour (rndvec))))))
|
|
|
|
--------------------
|
|
get-children
|
|
; build a random heirachical structure
|
|
(define (build-heir depth)
|
|
(with-state
|
|
(let ((p (with-state
|
|
(translate (vector 2 0 0))
|
|
(scale 0.9)
|
|
(build-cube))))
|
|
(when (> depth 0)
|
|
(parent p)
|
|
(for ((i (in-range 0 5)))
|
|
(when (zero? (random 3))
|
|
(rotate (vector 0 0 (* 45 (crndf))))
|
|
(build-heir (- depth 1))))))))
|
|
|
|
; navigate the scene graph and print it out
|
|
(define (print-heir children)
|
|
(for-each
|
|
(lambda (child)
|
|
(with-primitive child
|
|
(printf "id: ~a parent: ~a children: ~a~n" child (get-parent) (get-children))
|
|
(print-heir (get-children))))
|
|
children))
|
|
|
|
(clear)
|
|
(build-heir 5)
|
|
(print-heir (get-children))
|
|
|
|
--------------------
|
|
get-parent
|
|
; build a random heirachical structure
|
|
(define (build-heir depth)
|
|
(with-state
|
|
(let ((p (with-state
|
|
(translate (vector 2 0 0))
|
|
(scale 0.9)
|
|
(build-cube))))
|
|
(when (> depth 0)
|
|
(parent p)
|
|
(for ((i (in-range 0 5)))
|
|
(when (zero? (random 3))
|
|
(rotate (vector 0 0 (* 45 (crndf))))
|
|
(build-heir (- depth 1))))))))
|
|
|
|
; navigate the scene graph and print it out
|
|
(define (print-heir children)
|
|
(for-each
|
|
(lambda (child)
|
|
(with-primitive child
|
|
(printf "id: ~a parent: ~a children: ~a~n" child (get-parent) (get-children))
|
|
(print-heir (get-children))))
|
|
children))
|
|
|
|
(clear)
|
|
(build-heir 5)
|
|
(print-heir (get-children))
|
|
|
|
--------------------
|
|
pdata-ref
|
|
(pdata-ref "p" 1)
|
|
|
|
--------------------
|
|
pdata-set!
|
|
(pdata-set! "p" 1 (vector 0 100 0))
|
|
|
|
--------------------
|
|
pdata-add
|
|
(pdata-add "mydata" "v")
|
|
(pdata-set "mydata" 0 (vector 1 2 3))
|
|
|
|
--------------------
|
|
pdata-op
|
|
(clear)
|
|
(define t (build-torus 1 4 10 10))
|
|
|
|
(with-primitive t
|
|
(pdata-op "+" "p" (vector 1 0 0)) ; add a vector to all the pdata vectors
|
|
(pdata-op "+" "p" "n") ; add two pdata vectors element for element
|
|
(pdata-op "*" "n" (vector -1 -1 -1)) ; multiply a vector to all the pdata vectors
|
|
(pdata-op "*" "n" "p") ; multiply two pdata vectors element for element
|
|
(let ((pos (pdata-op "closest" "p" (vector 100 0 0)))) ; returns position of the closest vertex to this point
|
|
(with-state ; draw a sphere there
|
|
(translate pos)
|
|
(scale (vector 0.1 0.1 0.1))
|
|
(build-sphere 5 5)))
|
|
; can't think of a good example for these...
|
|
;(pdata-op "sin" "mydata" "myotherdata") ; sine of one float pdata to another
|
|
;(pdata-op "cos" "mydata" "myotherdata") ; cosine of one float pdata to another
|
|
)
|
|
|
|
; most common example of pdata op is for particles
|
|
(define p (with-state
|
|
(hint-points)
|
|
(point-width 10)
|
|
(build-particles 100)))
|
|
|
|
(with-primitive p
|
|
(pdata-add "vel" "v") ; add a velocity vector
|
|
(pdata-map!
|
|
(lambda (vel)
|
|
(srndvec)) ; set random velocities
|
|
"vel")
|
|
(pdata-map!
|
|
(lambda (c)
|
|
(rndvec)) ; set random colours
|
|
"c"))
|
|
|
|
(every-frame (with-primitive p
|
|
(pdata-op "+" "p" "vel")))
|
|
|
|
--------------------
|
|
pdata-copy
|
|
(pdata-copy "p" "mydata") ; copy the vertex positions to a user array
|
|
|
|
--------------------
|
|
pdata-size
|
|
(define (mashup n)
|
|
(pdata-set "p" n (vector (flxrnd) (flxrnd) (flxrnd))) ; randomise the vertex position
|
|
(if (zero? n)
|
|
0
|
|
(mashup (- n 1)))) ; loops till n is 0
|
|
|
|
(define shape (build-sphere 10 10))
|
|
(grab shape)
|
|
(mashup (pdata-size)) ; randomise verts on currently grabbed primitive
|
|
(ungrab)
|
|
|
|
--------------------
|
|
recalc-normals
|
|
(define shape (build-sphere 10 10)) ; build a sphere (which is smooth by default)
|
|
(grab shape)
|
|
(recalc-normals 0) ; make the sphere faceted
|
|
(ungrab)
|
|
|
|
--------------------
|
|
push
|
|
(colour (vector 1 0 0)) ; set current colour to red
|
|
(push) ; copy and push drawing state
|
|
(colour (vector 0 1 0)) ; set current colour to green
|
|
(draw-cube) ; draws a green cube
|
|
(pop) ; forget old drawing state
|
|
; current colour is now red again
|
|
|
|
--------------------
|
|
pop
|
|
(colour (vector 1 0 0)) ; set current colour to red
|
|
(push) ; copy and push drawing state
|
|
(colour (vector 0 1 0)) ; set current colour to green
|
|
(draw-cube) ; draws a green cube
|
|
(pop) ; forget old drawing state
|
|
; current colour is now red again
|
|
|
|
--------------------
|
|
grab
|
|
(colour (vector 1 0 0)) ; set the current colour to red
|
|
(define mycube (build-cube)) ; makes a red cube
|
|
(grab mycube)
|
|
(colour (vector 0 1 0)) ; sets the cubes colour to green
|
|
(ungrab) ; return to normal state
|
|
|
|
--------------------
|
|
ungrab
|
|
(colour (vector 1 0 0)) ; set the current colour to red
|
|
(define mycube (build-cube)) ; makes a red cube
|
|
(grab mycube)
|
|
(colour (vector 0 1 0)) ; sets the cubes colour to green
|
|
(ungrab) ; return to normal state
|
|
|
|
--------------------
|
|
apply-transform
|
|
(rotate (vector 45 0 0))
|
|
(define mycube (build-cube)) ; makes a cube with a rotation
|
|
(with-primitive mycube (apply-transform)) ; applies the rotation to the points of the cube
|
|
|
|
--------------------
|
|
opacity
|
|
(opacity 0.5)
|
|
(define mycube (build-cube)) ; makes a half transparent cube
|
|
|
|
--------------------
|
|
wire-opacity
|
|
(hint-none)
|
|
(hint-wire)
|
|
(backfacecull 0)
|
|
(line-width 5)
|
|
(wire-colour (vector 1 1 1))
|
|
(wire-opacity 0.5)
|
|
(build-cube) ; makes a half transparent wireframe cube
|
|
|
|
--------------------
|
|
shinyness
|
|
(shinyness 100)
|
|
(specular (vector 1 1 1)) ; sets the specular colour
|
|
(define mysphere (build-sphere 10 10)) ; makes a shiny cube
|
|
|
|
--------------------
|
|
colour
|
|
(colour (vector 1 0.5 0.1)) ; mmm orange...
|
|
(define mycube (build-cube)) ; makes an orange cube
|
|
|
|
--------------------
|
|
colour-mode
|
|
(clear)
|
|
(colour-mode 'hsv)
|
|
|
|
(for ((x (in-range 0 10)))
|
|
(translate (vector 1 0 0))
|
|
(colour (vector (/ x 10) 1 1))
|
|
(build-cube))
|
|
|
|
--------------------
|
|
rgb->hsv
|
|
(rgb->hsv (vector 1 0.5 0.1))
|
|
|
|
--------------------
|
|
hsv->rgb
|
|
(clear)
|
|
(for* ((x (in-range 0 10)) ; builds a 10x10 HSV colour pattern
|
|
(y (in-range 0 10)))
|
|
(identity)
|
|
(translate (vector x y 0))
|
|
(colour (hsv->rgb (vector (/ x 10) (/ y 10) 1)))
|
|
(build-cube))
|
|
|
|
--------------------
|
|
wire-colour
|
|
(wire-colour (vector 1 1 0)) ; set yellow as current wire colour
|
|
(hint-wire)
|
|
(define mycube (build-cube)) ; makes a cube with yellow wireframe
|
|
|
|
--------------------
|
|
specular
|
|
(specular (vector 0 0 1)) ; set blue as specular colour
|
|
(define mysphere (build-sphere 10 10)) ; makes a shiny blue sphere
|
|
|
|
--------------------
|
|
ambient
|
|
(ambient (vector 0 0 1)) ; set blue as ambient colour
|
|
(define mysphere (build-sphere 10 10)) ; makes a boringly blue sphere
|
|
|
|
--------------------
|
|
opacity
|
|
(emissive (vector 0 0 1)) ; set blue as emissive colour
|
|
(define mysphere (build-sphere 10 10)) ; makes an bright blue sphere
|
|
|
|
--------------------
|
|
identity
|
|
(define mycube (with-state
|
|
(scale (vector 2 2 2)) ; set the current scale to double in each dimension
|
|
(build-cube))) ; make a scaled cube
|
|
|
|
(with-primitive mycube
|
|
(identity)) ; erases the transform and puts the cube back to its original state
|
|
|
|
--------------------
|
|
concat
|
|
(define mymatrix (mrotate (vector 0 45 0))) ; make a matrix
|
|
(concat mymatrix) ; concat it into the current state
|
|
(build-cube) ; make a cube with this rotation
|
|
|
|
--------------------
|
|
translate
|
|
(translate (vector 0 1.4 0)) ; translates the current transform up a bit
|
|
(build-cube) ; build a cube with this transform
|
|
|
|
--------------------
|
|
rotate
|
|
(rotate (vector 0 45 0)) ; turns 45 degrees in the Y axis
|
|
(build-cube) ; build a cube with this transform
|
|
|
|
--------------------
|
|
scale
|
|
(scale (vector 0.5 0.5 0.5)) ; scales the current transform to half the size
|
|
(build-cube) ; build a cube with this transform
|
|
|
|
--------------------
|
|
get-transform
|
|
(clear)
|
|
; build a hierarchy
|
|
(define a
|
|
(with-state
|
|
(colour (vector 1 0.5 0.5))
|
|
(build-cube)))
|
|
(define b (with-state
|
|
(colour (vector 0.5 1 0.5))
|
|
(parent a)
|
|
(translate (vector 2 0 0))
|
|
(build-cube)))
|
|
(define c (with-state
|
|
(colour (vector 0.5 0.5 1))
|
|
(parent b)
|
|
(translate (vector 2 0 0))
|
|
(build-cube)))
|
|
|
|
(define (animate)
|
|
; animate the heirarchy
|
|
(with-primitive a (rotate (vector 0 0 (sin (time)))))
|
|
(with-primitive b (rotate (vector 0 0 (sin (time)))))
|
|
(with-primitive c (rotate (vector 0 0 (sin (time)))))
|
|
|
|
; position a yellow sphere with c's local transform
|
|
(with-state
|
|
(concat (with-primitive c (get-transform)))
|
|
(opacity 0.5)
|
|
(colour (vector 1 1 0))
|
|
(draw-sphere))
|
|
|
|
; position a purple sphere with c's global transform
|
|
(with-state
|
|
(concat (with-primitive c (get-global-transform)))
|
|
(opacity 0.5)
|
|
(colour (vector 1 0 1))
|
|
(draw-sphere)))
|
|
|
|
(every-frame (animate))
|
|
|
|
--------------------
|
|
get-global-transform
|
|
(clear)
|
|
; build a hierarchy
|
|
(define a
|
|
(with-state
|
|
(colour (vector 1 0.5 0.5))
|
|
(build-cube)))
|
|
(define b (with-state
|
|
(colour (vector 0.5 1 0.5))
|
|
(parent a)
|
|
(translate (vector 2 0 0))
|
|
(build-cube)))
|
|
(define c (with-state
|
|
(colour (vector 0.5 0.5 1))
|
|
(parent b)
|
|
(translate (vector 2 0 0))
|
|
(build-cube)))
|
|
|
|
(define (animate)
|
|
; animate the heirarchy
|
|
(with-primitive a (rotate (vector 0 0 (sin (time)))))
|
|
(with-primitive b (rotate (vector 0 0 (sin (time)))))
|
|
(with-primitive c (rotate (vector 0 0 (sin (time)))))
|
|
|
|
; position a yellow sphere with c's local transform
|
|
(with-state
|
|
(concat (with-primitive c (get-transform)))
|
|
(opacity 0.5)
|
|
(colour (vector 1 1 0))
|
|
(draw-sphere))
|
|
|
|
; position a purple sphere with c's global transform
|
|
(with-state
|
|
(concat (with-primitive c (get-global-transform)))
|
|
(opacity 0.5)
|
|
(colour (vector 1 0 1))
|
|
(draw-sphere)))
|
|
|
|
(every-frame (animate))
|
|
|
|
--------------------
|
|
parent
|
|
(define parent-prim (build-cube)) ; make a parent cube
|
|
(translate (vector 2 0 0)) ; move a bit in x
|
|
(parent parent-prim) ; set parent-prim as the current parent
|
|
(define child-prim (build-cube)) ; make a child cube
|
|
(grab parent-prim)
|
|
(rotate (vector 0 45 0)) ; the child will now be moved by this transform in addition to its own
|
|
(ungrab)
|
|
|
|
--------------------
|
|
line-width
|
|
(line-width 5)
|
|
(hint-wire)
|
|
(build-sphere 10 10) ; make a sphere with thick wireframe
|
|
|
|
--------------------
|
|
point-width
|
|
(point-width 5)
|
|
(hint-points)
|
|
(build-sphere 10 10) ; make a sphere with thick points
|
|
|
|
--------------------
|
|
blend-mode
|
|
; list out all the possible blendmodes
|
|
|
|
(define src-blend (vector 'zero 'one 'dst-color 'one-minus-dst-color 'src-alpha
|
|
'one-minus-src-alpha 'dst-alpha 'one-minus-dst-alpha
|
|
'src-alpha-saturate))
|
|
|
|
(define dst-blend (vector 'zero 'one 'dst-color 'one-minus-dst-color 'src-alpha
|
|
'one-minus-src-alpha 'dst-alpha 'one-minus-dst-alpha))
|
|
|
|
; picks a random element
|
|
(define (pick-rnd-item l)
|
|
(vector-ref l (random (vector-length l))))
|
|
|
|
; make lots of random spheres
|
|
(define (rnd-sphere n)
|
|
(push)
|
|
(hint-depth-sort)
|
|
(opacity 0.5)
|
|
(colour (vector (flxrnd) (flxrnd) (flxrnd)))
|
|
|
|
; set a random blendmode
|
|
(blend-mode (pick-rnd-item src-blend) (pick-rnd-item dst-blend))
|
|
|
|
(translate (vector (flxrnd) (flxrnd) (flxrnd)))
|
|
(scale (vector 0.1 0.1 0.1))
|
|
(build-sphere 10 10)
|
|
(pop)
|
|
(if (zero? n)
|
|
0
|
|
(rnd-sphere (- n 1))))
|
|
|
|
(clear)
|
|
(clear-colour (vector 0.5 0.5 0.5))
|
|
(rnd-sphere 100)
|
|
|
|
--------------------
|
|
hint-solid
|
|
(hint-solid) ; this is the default render style so this isn't too exciting
|
|
(build-cube) ; make a solid rendered cube
|
|
|
|
--------------------
|
|
hint-wire
|
|
(hint-wire)
|
|
(build-cube) ; make a wirefame rendered cube
|
|
|
|
--------------------
|
|
hint-wire-stippled
|
|
(hint-none)
|
|
(hint-wire-stippled)
|
|
(build-cube) ; make a stippled wirefame cube
|
|
|
|
--------------------
|
|
hint-frustum-cull
|
|
(hint-frustum-cull)
|
|
|
|
--------------------
|
|
hint-normalize
|
|
(clear)
|
|
(hint-normalize)
|
|
(build-cube)
|
|
; non uniform scaling
|
|
(with-primitive (build-cube)
|
|
(translate #(.5 0 0))
|
|
(scale #(3 1 1))
|
|
(translate #(.5 0 0)))
|
|
; uniform scaling
|
|
(with-primitive (build-cube)
|
|
(translate #(0 0 2))
|
|
(scale 2))
|
|
|
|
--------------------
|
|
line-pattern
|
|
(hint-none)
|
|
(hint-wire-stippled)
|
|
(line-pattern 4 #x0aaaa)
|
|
(build-cube) ; make a stippled wirefame cube
|
|
|
|
--------------------
|
|
hint-normal
|
|
(hint-normal)
|
|
(build-cube) ; display the normals on this cube
|
|
|
|
--------------------
|
|
hint-points
|
|
(hint-points)
|
|
(build-cube) ; display the vertex points on this cube
|
|
|
|
--------------------
|
|
hint-anti-alias
|
|
(hint-anti-alias)
|
|
(build-cube) ; display a smoothed cube
|
|
|
|
--------------------
|
|
hint-unlit
|
|
(hint-unlit)
|
|
(build-cube) ; display an unlit cube
|
|
|
|
--------------------
|
|
hint-vertcols
|
|
|
|
(clear)
|
|
(hint-vertcols)
|
|
(define mycube (build-cube)) ; make a cube with vertcols enabled
|
|
|
|
(with-primitive mycube
|
|
(pdata-map!
|
|
(lambda (c)
|
|
(rndvec)) ; randomise the vertcols
|
|
"c"))
|
|
|
|
--------------------
|
|
hint-box
|
|
(hint-box)
|
|
(build-sphere 10 10) ; make a sphere with bounding box displayed
|
|
|
|
--------------------
|
|
hint-none
|
|
(hint-none)
|
|
(hint-wire)
|
|
(build-cube) ; make a cube only visible with wireframe
|
|
|
|
--------------------
|
|
hint-origin
|
|
(hint-origin)
|
|
(build-sphere 10 10) ; make a sphere with the origin displayed
|
|
|
|
--------------------
|
|
hint-cast-shadow
|
|
(hint-origin)
|
|
(build-sphere 10 10) ; make a sphere with the origin displayed
|
|
|
|
--------------------
|
|
hint-depth-sort
|
|
(hint-depth-sort)
|
|
(build-sphere 10 10)
|
|
|
|
--------------------
|
|
hint-ignore-depth
|
|
(clear)
|
|
(with-state
|
|
(hint-ignore-depth)
|
|
(opacity 0.6)
|
|
(with-state
|
|
(colour (vector 1 0 0))
|
|
(build-cube))
|
|
(with-state
|
|
(colour (vector 0 1 0))
|
|
(translate (vector 1 0 0))
|
|
(build-cube)))
|
|
|
|
--------------------
|
|
hint-lazy-parent
|
|
(hint-lazy-parent)
|
|
(build-sphere 10 10) ; make a sphere with the origin displayed
|
|
|
|
--------------------
|
|
hint-cull-ccw
|
|
(hint-cull-ccw)
|
|
(build-sphere 10 10) ; make an inside out
|
|
|
|
--------------------
|
|
hint-sphere-map
|
|
(clear)
|
|
(hint-sphere-map)
|
|
(texture (load-texture "test.png"))
|
|
(define p (build-torus 1 2 20 20))
|
|
(every-frame (with-primitive p
|
|
(rotate #(.543 .59 .87))))
|
|
|
|
--------------------
|
|
texture
|
|
(texture (load-texture "mytexture.png"))
|
|
(build-sphere 10 10) ; make a sphere textured with mytexture.png
|
|
|
|
--------------------
|
|
multitexture
|
|
(clear)
|
|
(define p (build-torus 1 2 20 20))
|
|
|
|
(with-primitive p
|
|
(multitexture 0 (load-texture "refmap.png"))
|
|
(multitexture 1 (load-texture "transp.png")))
|
|
|
|
--------------------
|
|
print-scene-graph
|
|
(print-scene-graph) ; exciting...
|
|
|
|
--------------------
|
|
hide
|
|
(define obj (build-cube))
|
|
(grab obj)
|
|
(hide 1) ; hide this cube
|
|
(ungrab)
|
|
|
|
--------------------
|
|
camera-hide
|
|
(define obj (build-cube))
|
|
(with-primitive obj
|
|
(camera-hide 1)) ; hide this cube
|
|
|
|
--------------------
|
|
selectable
|
|
(define obj (build-cube))
|
|
(grab obj)
|
|
(selectable 0) ; now it won't be "seen" by calling select
|
|
(ungrab)
|
|
|
|
--------------------
|
|
backfacecull
|
|
(backfacecull 0)
|
|
|
|
--------------------
|
|
shader
|
|
; you need to have built fluxus with GLSL=1
|
|
(clear)
|
|
(fluxus-init) ; this is important to add when using shaders
|
|
; at the moment, it will be moved somewhere
|
|
; to run automatically...
|
|
|
|
(define s (with-state
|
|
; assign the shaders to the surface
|
|
(shader "simple.vert.glsl" "simple.frag.glsl")
|
|
(build-sphere 20 20)))
|
|
|
|
(with-primitive s
|
|
; add and set the pdata - this is then picked up in the vertex shader
|
|
; as an input attribute called "testcol"
|
|
(pdata-add "testcol" "v")
|
|
; set the testcol pdata with a random colour for every vertex
|
|
(pdata-map!
|
|
(lambda (c)
|
|
(rndvec))
|
|
"testcol"))
|
|
|
|
(define (animate)
|
|
(with-primitive s
|
|
; animate the deformamount uniform input parameter
|
|
(shader-set! (list "deformamount" (cos (time))))))
|
|
|
|
(every-frame (animate))
|
|
|
|
--------------------
|
|
shader-source
|
|
; you need to have built fluxus with GLSL=1
|
|
|
|
--------------------
|
|
clear-shader-cache
|
|
(clear-shader-cache)
|
|
|
|
--------------------
|
|
shader-set!
|
|
; you need to have built fluxus with GLSL=1
|
|
(clear)
|
|
(fluxus-init) ; this is important to add when using shaders
|
|
; at the moment, it will be moved somewhere
|
|
; to run automatically...
|
|
|
|
(define s (with-state
|
|
; assign the shaders to the surface
|
|
(shader "simple.vert.glsl" "simple.frag.glsl")
|
|
(build-sphere 20 20)))
|
|
|
|
(with-primitive s
|
|
; add and set the pdata - this is then picked up in the vertex shader
|
|
; as an input attribute called "testcol"
|
|
(pdata-add "testcol" "v")
|
|
; set the testcol pdata with a random colour for every vertex
|
|
(pdata-map!
|
|
(lambda (c)
|
|
(rndvec))
|
|
"testcol"))
|
|
|
|
(define (animate)
|
|
(with-primitive s
|
|
; animate the deformamount uniform input parameter
|
|
(shader-set! (list "deformamount" (cos (time))))))
|
|
|
|
(every-frame (animate))
|
|
|
|
--------------------
|
|
texture-params
|
|
; parameters are the following:
|
|
; tex-env : [modulate decal blend replace]
|
|
; min : [nearest linear nearest-mipmap-nearest linear-mipmap-nearest linear-mipmap-linear]
|
|
; mag : [nearest linear]
|
|
; wrap-s : [clamp repeat]
|
|
; wrap-t : [clamp repeat]
|
|
; wrap-r : [clamp repeat] (for cube maps)
|
|
; border-colour : (vector of length 4)
|
|
; priority : real number 0 -> 1
|
|
; env-colour : (vector of length 4)
|
|
; min-lod : real number (for mipmap blending - default -1000)
|
|
; max-lod : real number (for mipmap blending - default 1000)
|
|
(texture-params 0 '(min nearest mag nearest))
|
|
|
|
--------------------
|
|
clear-engine
|
|
(clear-engine) ; woo hoo!
|
|
|
|
--------------------
|
|
blur
|
|
(blur 0.1) ; for nice trails
|
|
|
|
--------------------
|
|
fog
|
|
(clear-colour (vector 0 0 1)) ; looks nice if the background matches
|
|
(fog (vector 0 0 1) 0.01 1 100) ; blue fog
|
|
|
|
--------------------
|
|
show-axis
|
|
(show-axis 1)
|
|
|
|
--------------------
|
|
show-fps
|
|
(show-fps 1)
|
|
|
|
--------------------
|
|
lock-camera
|
|
(clear)
|
|
(define obj (build-cube)) ; make a cube for the camera to lock to
|
|
|
|
(with-state ; make a background cube so we can tell what's happening
|
|
(hint-wire)
|
|
(hint-unlit)
|
|
(texture (load-texture "test.png"))
|
|
(colour (vector 0.5 0.5 0.5))
|
|
(scale (vector -20 -10 -10))
|
|
(build-cube))
|
|
|
|
(lock-camera obj) ; lock the camera to our first cube
|
|
(camera-lag 0.1) ; set the lag amount, this will smooth out the cube jittery movement
|
|
|
|
(define (animate)
|
|
(with-primitive obj
|
|
(identity)
|
|
(translate (vector (fmod (time) 5) 0 0)))) ; make a jittery movement
|
|
|
|
(every-frame (animate))
|
|
|
|
--------------------
|
|
camera-lag
|
|
(clear)
|
|
(define obj (build-cube)) ; make a cube for the camera to lock to
|
|
|
|
(with-state ; make a background cube so we can tell what's happening
|
|
(hint-wire)
|
|
(hint-unlit)
|
|
(texture (load-texture "test.png"))
|
|
(colour (vector 0.5 0.5 0.5))
|
|
(scale (vector -20 -10 -10))
|
|
(build-cube))
|
|
|
|
(lock-camera obj) ; lock the camera to our first cube
|
|
(camera-lag 0.1) ; set the lag amount, this will smooth out the cube jittery movement
|
|
|
|
(define (animate)
|
|
(with-primitive obj
|
|
(identity)
|
|
(translate (vector (fmod (time) 5) 0 0)))) ; make a jittery movement
|
|
|
|
(every-frame (animate))
|
|
|
|
--------------------
|
|
load-texture
|
|
; simple usage:
|
|
(texture (load-texture "mytexture.png"))
|
|
(build-cube) ; the cube will be texture mapped with the image
|
|
|
|
; complex usages:
|
|
|
|
; the options list can contain the following keys and values:
|
|
; id: texture-id-number (for adding images to existing textures - for mipmapping and cubemapping)
|
|
; type: [texture-2d cube-map-positive-x cube-map-negative-x cube-map-positive-y
|
|
; cube-map-negative-y cube-map-positive-z cube-map-negative-z]
|
|
; generate-mipmaps : exact integer, 0 or 1
|
|
; mip-level : exact integer
|
|
; border : exact integer
|
|
|
|
; setup an environment cube map
|
|
(define t (load-texture "cube-left.png" (list 'type 'cube-map-positive-x)))
|
|
(load-texture "cube-right.png" (list 'id t 'type 'cube-map-negative-x))
|
|
(load-texture "cube-top.png" (list 'id t 'type 'cube-map-positive-y))
|
|
(load-texture "cube-bottom.png" (list 'id t 'type 'cube-map-negative-y))
|
|
(load-texture "cube-front.png" (list 'id t 'type 'cube-map-positive-z))
|
|
(load-texture "cube-back.png" (list 'id t 'type 'cube-map-negative-z))
|
|
(texture t)
|
|
|
|
; setup a mipmapped texture with our own images
|
|
; you need as many levels as it takes you to get to 1X1 pixels from your
|
|
; level 0 texture size
|
|
(define t2 (load-texture "m0.png" (list 'generate-mipmaps 0 'mip-level 0)))
|
|
(load-texture "m1.png" (list 'id t2 'generate-mipmaps 0 'mip-level 1))
|
|
(load-texture "m2.png" (list 'id t2 'generate-mipmaps 0 'mip-level 2))
|
|
(load-texture "m3.png" (list 'id t2 'generate-mipmaps 0 'mip-level 3))
|
|
|
|
|
|
(texture (load-texture "mytexture.png"
|
|
(list
|
|
'generate-mipmaps 0 ; turn mipmapping off
|
|
'border 2))) ; add a border to the texture
|
|
|
|
(build-cube) ; the cube will be texture mapped with the image
|
|
|
|
|
|
--------------------
|
|
clear-texture-cache
|
|
(clear-texture-cache)
|
|
|
|
--------------------
|
|
frustum
|
|
(frustum -1 1 -0.75 0.75) ; default settings
|
|
|
|
--------------------
|
|
clip
|
|
(clip 1 10000) ; default settings
|
|
|
|
--------------------
|
|
ortho
|
|
(ortho)
|
|
|
|
--------------------
|
|
persp
|
|
(persp)
|
|
|
|
--------------------
|
|
set-ortho-zoom
|
|
(set-ortho-zoom 2)
|
|
|
|
--------------------
|
|
clear-colour
|
|
(clear-colour (vector 1 0 0)) ; RED!!!
|
|
|
|
--------------------
|
|
clear-frame
|
|
(clear-frame 0)
|
|
(clear-frame 1)
|
|
|
|
--------------------
|
|
clear-zbuffer
|
|
(clear-zbuffer 0)
|
|
(clear-zbuffer 1)
|
|
|
|
--------------------
|
|
clear-accum
|
|
(clear-accum 1)
|
|
|
|
--------------------
|
|
build-camera
|
|
(clear)
|
|
(viewport 0 0.5 0.5 0.5)
|
|
|
|
(define cam2 (build-camera))
|
|
(current-camera cam2)
|
|
(viewport 0.5 0 0.5 1)
|
|
|
|
(define cam3 (build-camera))
|
|
(current-camera cam3)
|
|
(set-camera (mmul (mtranslate (vector 0 0 -5))
|
|
(mrotate (vector 0 45 0))))
|
|
(viewport 0 0 0.5 0.5)
|
|
|
|
; render a primitive in one view only
|
|
(define t (with-state
|
|
(translate (vector 3 0 0))
|
|
(scale 0.3)
|
|
(colour (vector 1 0 0))
|
|
(build-torus 1 2 10 10)))
|
|
|
|
(with-primitive t
|
|
(hide 1) ; hide in all
|
|
(camera-hide 0)) ; unhide in current camera
|
|
|
|
|
|
(current-camera 0)
|
|
|
|
(define c (with-state
|
|
(hint-cull-ccw)
|
|
(hint-unlit)
|
|
(hint-wire)
|
|
(line-width 2)
|
|
(colour (vector 0.4 0.3 0.2))
|
|
(wire-colour (vector 0 0 0))
|
|
(scale 10)
|
|
(build-cube)))
|
|
|
|
(define p (with-state
|
|
(scale 3)
|
|
(load-primitive "widget.obj")))
|
|
|
|
(every-frame
|
|
(with-primitive p
|
|
(rotate (vector 0 1 0))))
|
|
|
|
--------------------
|
|
current-camera
|
|
(clear)
|
|
(viewport 0 0.5 0.5 0.5)
|
|
|
|
(define cam2 (build-camera))
|
|
(current-camera cam2)
|
|
(viewport 0.5 0 0.5 1)
|
|
|
|
(define cam3 (build-camera))
|
|
(current-camera cam3)
|
|
(set-camera (mmul (mtranslate (vector 0 0 -5))
|
|
(mrotate (vector 0 45 0))))
|
|
(viewport 0 0 0.5 0.5)
|
|
|
|
; render a primitive in one view only
|
|
(define t (with-state
|
|
(translate (vector 3 0 0))
|
|
(scale 0.3)
|
|
(colour (vector 1 0 0))
|
|
(build-torus 1 2 10 10)))
|
|
|
|
(with-primitive t
|
|
(hide 1) ; hide in all
|
|
(camera-hide 0)) ; unhide in current camera
|
|
|
|
|
|
(current-camera 0)
|
|
|
|
(define c (with-state
|
|
(hint-cull-ccw)
|
|
(hint-unlit)
|
|
(hint-wire)
|
|
(line-width 2)
|
|
(colour (vector 0.4 0.3 0.2))
|
|
(wire-colour (vector 0 0 0))
|
|
(scale 10)
|
|
(build-cube)))
|
|
|
|
(define p (with-state
|
|
(scale 3)
|
|
(load-primitive "widget.obj")))
|
|
|
|
(every-frame
|
|
(with-primitive p
|
|
(rotate (vector 0 1 0))))
|
|
|
|
--------------------
|
|
viewport
|
|
(clear)
|
|
(viewport 0 0.5 0.5 0.5)
|
|
|
|
(define cam2 (build-camera))
|
|
(current-camera cam2)
|
|
(viewport 0.5 0 0.5 1)
|
|
|
|
(define cam3 (build-camera))
|
|
(current-camera cam3)
|
|
(set-camera (mmul (mtranslate (vector 0 0 -5))
|
|
(mrotate (vector 0 45 0))))
|
|
(viewport 0 0 0.5 0.5)
|
|
|
|
; render a primitive in one view only
|
|
(define t (with-state
|
|
(translate (vector 3 0 0))
|
|
(scale 0.3)
|
|
(colour (vector 1 0 0))
|
|
(build-torus 1 2 10 10)))
|
|
|
|
(with-primitive t
|
|
(hide 1) ; hide in all
|
|
(camera-hide 0)) ; unhide in current camera
|
|
|
|
|
|
(current-camera 0)
|
|
|
|
(define c (with-state
|
|
(hint-cull-ccw)
|
|
(hint-unlit)
|
|
(hint-wire)
|
|
(line-width 2)
|
|
(colour (vector 0.4 0.3 0.2))
|
|
(wire-colour (vector 0 0 0))
|
|
(scale 10)
|
|
(build-cube)))
|
|
|
|
(define p (with-state
|
|
(scale 3)
|
|
(load-primitive "widget.obj")))
|
|
|
|
(every-frame
|
|
(with-primitive p
|
|
(rotate (vector 0 1 0))))
|
|
|
|
--------------------
|
|
get-camera
|
|
(get-camera)
|
|
|
|
--------------------
|
|
get-locked-matrix
|
|
(get-locked-matrix)
|
|
|
|
--------------------
|
|
set-camera
|
|
(set-camera (mtranslate (vector 0 0 -10)))
|
|
|
|
--------------------
|
|
get-projection-transform
|
|
(get-projection-transform)
|
|
|
|
--------------------
|
|
set-projection-transform
|
|
(set-projection-transform (vector 1 0 0 0 0 4/3 0 0 0 0 -1 -1 0 0 -2 -0))
|
|
|
|
--------------------
|
|
get-screen-size
|
|
(get-screen-size)
|
|
|
|
--------------------
|
|
set-screen-size
|
|
(set-screen-size (vector 10 10)) ; small window time :)
|
|
(set-screen-size (vector 720 576)) ; and back again!
|
|
|
|
--------------------
|
|
select
|
|
(display (select 10 10 2))(newline)
|
|
|
|
--------------------
|
|
select-all
|
|
(display (select-all 10 10 2))(newline)
|
|
|
|
--------------------
|
|
desiredfps
|
|
(desiredfps 100000) ; makes fluxus render as fast as it can, and take 100% cpu.
|
|
|
|
--------------------
|
|
draw-buffer
|
|
(draw-buffer 'back)
|
|
|
|
--------------------
|
|
read-buffer
|
|
(read-buffer 'back)
|
|
|
|
--------------------
|
|
set-stereo-mode
|
|
(set-stereo-mode 'crystal-eyes)
|
|
|
|
--------------------
|
|
set-colour-mask
|
|
(set-colour-mask #(#t #f #f #t))
|
|
|
|
--------------------
|
|
shadow-light
|
|
(shadow-light 1)
|
|
|
|
--------------------
|
|
shadow-length
|
|
(shadow-length 10)
|
|
|
|
--------------------
|
|
shadow-debug
|
|
(shadow-debug 1)
|
|
|
|
--------------------
|
|
accum
|
|
(accum 'add 1)
|
|
|
|
--------------------
|
|
print-info
|
|
(print-info)
|
|
|
|
--------------------
|
|
set-cursor
|
|
(set-cursor 'crosshair)
|
|
|
|
--------------------
|
|
start-audio
|
|
(start-audio "alsa_pcm:capture_1" 1024 44100)
|
|
|
|
--------------------
|
|
gh
|
|
(define (animate)
|
|
(colour (vector (gh 1) (gh 2) (gh 3))) ; make a colour from the harmonics, and set it to be the current colour
|
|
(draw-cube)) ; draw a cube with this colour
|
|
(every-frame (animate))
|
|
|
|
--------------------
|
|
gain
|
|
(gain 100) ; too quiet?!
|
|
|
|
--------------------
|
|
process
|
|
(process "somemusic.wav") ; read a precorded audio file
|
|
|
|
--------------------
|
|
smoothing-bias
|
|
(smoothing-bias 0) ; no smoothing
|
|
|
|
--------------------
|
|
update-audio
|
|
(update-audio)
|
|
|
|
--------------------
|
|
make-light
|
|
; turn off the main light
|
|
(light-diffuse 0 (vector 0 0 0))
|
|
(light-specular 0 (vector 0 0 0))
|
|
(light-ambient 0 (vector 0 0 0))
|
|
|
|
(define mylight (make-light 'point 'free))
|
|
(light-position mylight (vector 5 2 0))
|
|
(light-diffuse mylight (rndvec))
|
|
(light-ambient mylight (vmul (rndvec) 0.1))
|
|
(light-specular mylight (vmul (rndvec) 10))
|
|
|
|
(with-state
|
|
(ambient (vector 1 1 1))
|
|
(colour (vector 1 1 1))
|
|
(specular (vector 0.5 0.5 0.5))
|
|
(shinyness 20)
|
|
(build-torus 1 2 20 20))
|
|
|
|
--------------------
|
|
light-ambient
|
|
; turn off the main light
|
|
(light-diffuse 0 (vector 0 0 0))
|
|
(light-specular 0 (vector 0 0 0))
|
|
(light-ambient 0 (vector 0 0 0))
|
|
|
|
(define mylight (make-light 'point 'free))
|
|
(light-position mylight (vector 5 2 0))
|
|
(light-diffuse mylight (rndvec))
|
|
(light-ambient mylight (vmul (rndvec) 0.1))
|
|
(light-specular mylight (vmul (rndvec) 10))
|
|
|
|
(with-state
|
|
(ambient (vector 1 1 1))
|
|
(colour (vector 1 1 1))
|
|
(specular (vector 0.5 0.5 0.5))
|
|
(shinyness 20)
|
|
(build-torus 1 2 20 20))
|
|
|
|
--------------------
|
|
light-diffuse
|
|
; turn off the main light
|
|
(light-diffuse 0 (vector 0 0 0))
|
|
(light-specular 0 (vector 0 0 0))
|
|
(light-ambient 0 (vector 0 0 0))
|
|
|
|
(define mylight (make-light 'point 'free))
|
|
(light-position mylight (vector 5 2 0))
|
|
(light-diffuse mylight (rndvec))
|
|
(light-ambient mylight (vmul (rndvec) 0.1))
|
|
(light-specular mylight (vmul (rndvec) 10))
|
|
|
|
(with-state
|
|
(ambient (vector 1 1 1))
|
|
(colour (vector 1 1 1))
|
|
(specular (vector 0.5 0.5 0.5))
|
|
(shinyness 20)
|
|
(build-torus 1 2 20 20))
|
|
|
|
--------------------
|
|
light-specular
|
|
; turn off the main light
|
|
(light-diffuse 0 (vector 0 0 0))
|
|
(light-specular 0 (vector 0 0 0))
|
|
(light-ambient 0 (vector 0 0 0))
|
|
|
|
(define mylight (make-light 'point 'free))
|
|
(light-position mylight (vector 5 2 0))
|
|
(light-diffuse mylight (rndvec))
|
|
(light-ambient mylight (vmul (rndvec) 0.1))
|
|
(light-specular mylight (vmul (rndvec) 10))
|
|
|
|
(with-state
|
|
(ambient (vector 1 1 1))
|
|
(colour (vector 1 1 1))
|
|
(specular (vector 0.5 0.5 0.5))
|
|
(shinyness 20)
|
|
(build-torus 1 2 20 20))
|
|
|
|
--------------------
|
|
light-position
|
|
; turn off the main light
|
|
(light-diffuse 0 (vector 0 0 0))
|
|
(light-specular 0 (vector 0 0 0))
|
|
(light-ambient 0 (vector 0 0 0))
|
|
|
|
(define mylight (make-light 'point 'free))
|
|
(light-position mylight (vector 5 2 0))
|
|
(light-diffuse mylight (rndvec))
|
|
(light-ambient mylight (vmul (rndvec) 0.1))
|
|
(light-specular mylight (vmul (rndvec) 10))
|
|
|
|
(with-state
|
|
(ambient (vector 1 1 1))
|
|
(colour (vector 1 1 1))
|
|
(specular (vector 0.5 0.5 0.5))
|
|
(shinyness 20)
|
|
(build-torus 1 2 20 20))
|
|
|
|
--------------------
|
|
light-spot-angle
|
|
; turn down the main light
|
|
(light-diffuse 0 (vector 0.1 0.1 0.1))
|
|
(light-specular 0 (vector 0 0 0))
|
|
(light-ambient 0 (vector 0 0 0))
|
|
|
|
(define mylight (make-light 'spot 'free))
|
|
(light-position mylight (vector (+ 4 (crndf)) (crndf) 2))
|
|
(light-diffuse mylight (rndvec))
|
|
(light-ambient mylight (vmul (rndvec) 0.1))
|
|
(light-specular mylight (vmul (rndvec) 10))
|
|
(light-spot-angle mylight (+ 5 (random 40)))
|
|
(light-spot-exponent mylight 500)
|
|
(light-attenuation mylight 'constant 1)
|
|
(light-direction mylight (vector -1 0 -1))
|
|
|
|
(with-state
|
|
(ambient (vector 1 1 1))
|
|
(colour (vector 1 1 1))
|
|
(specular (vector 0.5 0.5 0.5))
|
|
(shinyness 20)
|
|
(build-torus 1 2 20 20)
|
|
(scale (vector 10 10 10))
|
|
(translate (vector -0.5 -0.5 0))
|
|
(build-seg-plane 20 20))
|
|
|
|
--------------------
|
|
light-spot-exponent
|
|
; turn down the main light
|
|
(light-diffuse 0 (vector 0.1 0.1 0.1))
|
|
(light-specular 0 (vector 0 0 0))
|
|
(light-ambient 0 (vector 0 0 0))
|
|
|
|
(define mylight (make-light 'spot 'free))
|
|
(light-position mylight (vector (+ 4 (crndf)) (crndf) 2))
|
|
(light-diffuse mylight (rndvec))
|
|
(light-ambient mylight (vmul (rndvec) 0.1))
|
|
(light-specular mylight (vmul (rndvec) 10))
|
|
(light-spot-angle mylight (+ 5 (random 40)))
|
|
(light-spot-exponent mylight 500)
|
|
(light-attenuation mylight 'constant 1)
|
|
(light-direction mylight (vector -1 0 -1))
|
|
|
|
(with-state
|
|
(ambient (vector 1 1 1))
|
|
(colour (vector 1 1 1))
|
|
(specular (vector 0.5 0.5 0.5))
|
|
(shinyness 20)
|
|
(build-torus 1 2 20 20)
|
|
(scale (vector 10 10 10))
|
|
(translate (vector -0.5 -0.5 0))
|
|
(build-seg-plane 20 20))
|
|
|
|
--------------------
|
|
light-attenuation
|
|
; turn down the main light
|
|
(light-diffuse 0 (vector 0.1 0.1 0.1))
|
|
(light-specular 0 (vector 0 0 0))
|
|
(light-ambient 0 (vector 0 0 0))
|
|
|
|
(define mylight (make-light 'spot 'free))
|
|
(light-position mylight (vector (+ 4 (crndf)) (crndf) 2))
|
|
(light-diffuse mylight (rndvec))
|
|
(light-ambient mylight (vmul (rndvec) 0.1))
|
|
(light-specular mylight (vmul (rndvec) 10))
|
|
(light-spot-angle mylight (+ 5 (random 40)))
|
|
(light-spot-exponent mylight 500)
|
|
(light-attenuation mylight 'constant 1)
|
|
(light-direction mylight (vector -1 0 -1))
|
|
|
|
(with-state
|
|
(ambient (vector 1 1 1))
|
|
(colour (vector 1 1 1))
|
|
(specular (vector 0.5 0.5 0.5))
|
|
(shinyness 20)
|
|
(build-torus 1 2 20 20)
|
|
(scale (vector 10 10 10))
|
|
(translate (vector -0.5 -0.5 0))
|
|
(build-seg-plane 20 20))
|
|
|
|
--------------------
|
|
light-direction
|
|
; turn down the main light
|
|
(light-diffuse 0 (vector 0.1 0.1 0.1))
|
|
(light-specular 0 (vector 0 0 0))
|
|
(light-ambient 0 (vector 0 0 0))
|
|
|
|
(define mylight (make-light 'spot 'free))
|
|
(light-position mylight (vector (+ 4 (crndf)) (crndf) 2))
|
|
(light-diffuse mylight (rndvec))
|
|
(light-ambient mylight (vmul (rndvec) 0.1))
|
|
(light-specular mylight (vmul (rndvec) 10))
|
|
(light-spot-angle mylight (+ 5 (random 40)))
|
|
(light-spot-exponent mylight 500)
|
|
(light-attenuation mylight 'constant 1)
|
|
(light-direction mylight (vector -1 0 -1))
|
|
|
|
(with-state
|
|
(ambient (vector 1 1 1))
|
|
(colour (vector 1 1 1))
|
|
(specular (vector 0.5 0.5 0.5))
|
|
(shinyness 20)
|
|
(build-torus 1 2 20 20)
|
|
(scale (vector 10 10 10))
|
|
(translate (vector -0.5 -0.5 0))
|
|
(build-seg-plane 20 20))
|
|
|
|
--------------------
|
|
vmul
|
|
(vmul (vector 1 2 3) 2)
|
|
|
|
--------------------
|
|
vadd
|
|
(vadd (vector 1 2 3) (vector 1 2 3))
|
|
|
|
--------------------
|
|
vsub
|
|
(vsub (vector 1 2 3) (vector 1 2 3))
|
|
|
|
--------------------
|
|
vdiv
|
|
(vdiv (vector 1 2 3) 2)
|
|
|
|
--------------------
|
|
vtransform
|
|
(vtransform (vector 0 1 0) (mrotate (vector 90 0 0)))
|
|
|
|
--------------------
|
|
vtransform-rot
|
|
(vtransform-rot (vector 0 1 0) (mrotate (vector 90 0 0)))
|
|
|
|
--------------------
|
|
vnormalise
|
|
(vtransform-rot (vector 0 1 0) (mrotate (vector 90 0 0)))
|
|
|
|
--------------------
|
|
vdot
|
|
(vdot (vector 0 1 0) (vector 1 0 0))
|
|
|
|
--------------------
|
|
vmag
|
|
(vmag (vector 0 1 1))
|
|
|
|
--------------------
|
|
vreflect
|
|
(vreflect (vector 0 1 1) (vector 1 0 1))
|
|
|
|
--------------------
|
|
vdist
|
|
(vdist (vector 100 100 0) (vector 0 0 100))
|
|
|
|
--------------------
|
|
vdist-sq
|
|
(vdist-sq (vector 100 100 0) (vector 0 0 100))
|
|
|
|
--------------------
|
|
vcross
|
|
(vcross (vector 100 100 0) (vector 0 0 100))
|
|
|
|
--------------------
|
|
mmul
|
|
(mmul (mtranslate (vector 1 0 0)) (mrotate (vector 0 90 0)))
|
|
|
|
--------------------
|
|
madd
|
|
(madd (mtranslate (vector 1 0 0)) (mrotate (vector 0 90 0)))
|
|
|
|
--------------------
|
|
msub
|
|
(msub (mtranslate (vector 1 0 0)) (mrotate (vector 0 90 0)))
|
|
|
|
--------------------
|
|
mdiv
|
|
(mdiv (mtranslate (vector 1 0 0)) (mrotate (vector 0 90 0)))
|
|
|
|
--------------------
|
|
mident
|
|
(mident)
|
|
|
|
--------------------
|
|
mtranslate
|
|
(mtranslate (vector 100 0 0))
|
|
|
|
--------------------
|
|
mrotate
|
|
(mrotate (vector 0 45 0))
|
|
|
|
--------------------
|
|
mscale
|
|
(mscale (vector 0.5 2 0.5))
|
|
|
|
--------------------
|
|
mtranspose
|
|
(mtranspose (mident))
|
|
|
|
--------------------
|
|
minverse
|
|
(minverse (mscale (vector 0.5 2 0.5)))
|
|
|
|
--------------------
|
|
maim
|
|
(maim (vector 0 0 1) (vector 0 1 0))
|
|
|
|
--------------------
|
|
matrix->euler
|
|
(matrix->euler (mrotate (vector 15 0 0)))
|
|
|
|
--------------------
|
|
qaxisangle
|
|
(qaxisangle (vector 0 1 0) 45)
|
|
|
|
--------------------
|
|
qmul
|
|
(qmul (qaxisangle (vector 0 1 0) 45) (qaxisangle (vector 0 0 1) 180))
|
|
|
|
--------------------
|
|
qnormalise
|
|
(qnormalise (qaxisangle (vector 0 19 0) 45))
|
|
|
|
--------------------
|
|
qtomatrix
|
|
(qtomatrix (qaxisangle (vector 0 1 0) 45))
|
|
|
|
--------------------
|
|
qconjugate
|
|
(qconjugate (qaxisangle (vector 0 1 0) 45))
|
|
|
|
--------------------
|
|
fmod
|
|
(fmod 14.4 10)
|
|
|
|
--------------------
|
|
snoise
|
|
(snoise 1.0 2.0) ; 2D noise
|
|
(snoise 6.1 2.4 .5 1.3) ; 4D noise
|
|
|
|
; example on a pixel prim
|
|
(clear)
|
|
(with-primitive (build-pixels 100 100)
|
|
(pdata-index-map!
|
|
(lambda (i c)
|
|
(snoise (* 0.1 (modulo i (pixels-width)))
|
|
(* 0.1 (quotient i (pixels-height)))))
|
|
"c")
|
|
(pixels-upload))
|
|
|
|
--------------------
|
|
noise
|
|
(noise 1.0 2.0) ; 2D noise
|
|
(noise 6.1 2.4 .5) ; 3D noise
|
|
|
|
; example on a pixel prim
|
|
(clear)
|
|
(with-primitive (build-pixels 100 100)
|
|
(pdata-index-map!
|
|
(lambda (i c)
|
|
(noise (* 0.1 (modulo i (pixels-width)))
|
|
(* 0.1 (quotient i (pixels-height)))))
|
|
"c")
|
|
(pixels-upload))
|
|
|
|
--------------------
|
|
noise-seed
|
|
(noise-seed 1)
|
|
|
|
--------------------
|
|
noise-detail
|
|
(noise-detail 4) ; noise with 4 octaves
|
|
(noise-detail 4 .5) ; noise with 4 octaves and .5 falloff
|
|
|
|
--------------------
|
|
collisions
|
|
(collisions 1)
|
|
|
|
--------------------
|
|
ground-plane
|
|
(ground-plane (vector 0 1 0) 0)
|
|
|
|
--------------------
|
|
active-box
|
|
(define mycube (build-cube))
|
|
(active-box mycube)
|
|
|
|
--------------------
|
|
active-cylinder
|
|
(define mycube (build-cube))
|
|
(active-cylinder mycube)
|
|
|
|
--------------------
|
|
active-sphere
|
|
(define mycube (build-cube))
|
|
(active-sphere mycube)
|
|
|
|
--------------------
|
|
passive-box
|
|
(define mycube (build-cube))
|
|
(passive-box mycube)
|
|
|
|
--------------------
|
|
passive-cylinder
|
|
(define mycube (build-cube))
|
|
(passive-cylinder mycube)
|
|
|
|
--------------------
|
|
passive-sphere
|
|
(define mycube (build-cube))
|
|
(passive-sphere mycube)
|
|
|
|
--------------------
|
|
physics-remove
|
|
(define mycube (build-cube))
|
|
(active-box mycube)
|
|
(physics-remove mycube)
|
|
|
|
--------------------
|
|
surface-params
|
|
(surface-params 0.1 0.1 0.1 0.1)
|
|
|
|
--------------------
|
|
build-balljoint
|
|
(clear)
|
|
(ground-plane (vector 0 1 0) -1)
|
|
(collisions 1)
|
|
|
|
(define shape1 (with-state
|
|
(translate (vector -1 0 0))
|
|
(build-cube)))
|
|
(active-box shape1)
|
|
|
|
(define shape2 (with-state
|
|
(translate (vector 1 0 0))
|
|
(build-cube)))
|
|
(active-box shape2)
|
|
|
|
(build-balljoint shape1 shape2 (vector 0 0 0))
|
|
(kick shape1 (vector 0 2 0))
|
|
|
|
(set-physics-debug #t)
|
|
|
|
--------------------
|
|
build-fixedjoint
|
|
(clear)
|
|
(define shape1 (with-state
|
|
(translate (vector 0 1 0))
|
|
(build-cube)))
|
|
(active-box shape1)
|
|
|
|
(build-fixedjoint shape1) ; not very exciting...
|
|
|
|
--------------------
|
|
build-hingejoint
|
|
(clear)
|
|
(ground-plane (vector 0 1 0) -1)
|
|
(collisions 1)
|
|
|
|
(define shape1 (with-state
|
|
(translate (vector -1 0 0))
|
|
(build-cube)))
|
|
(active-box shape1)
|
|
|
|
(define shape2 (with-state
|
|
(translate (vector 1 0 0))
|
|
(build-cube)))
|
|
(active-box shape2)
|
|
|
|
(build-hingejoint shape1 shape2 (vector 0 0 0) (vector 0 0 1))
|
|
(kick shape1 (vector 0 2 0))
|
|
|
|
(set-physics-debug #t)
|
|
|
|
--------------------
|
|
build-sliderjoint
|
|
(clear)
|
|
(ground-plane (vector 0 1 0) -1)
|
|
(collisions 1)
|
|
|
|
(define shape1 (with-state
|
|
(translate (vector -1 0 0))
|
|
(build-cube)))
|
|
(active-box shape1)
|
|
|
|
(define shape2 (with-state
|
|
(translate (vector 1 0 0))
|
|
(build-cube)))
|
|
(active-box shape2)
|
|
|
|
(build-sliderjoint shape1 shape2 (vector 1 0 0))
|
|
(kick shape1 (vector 0 2 0))
|
|
|
|
(set-physics-debug #t)
|
|
|
|
--------------------
|
|
build-hinge2joint
|
|
(clear)
|
|
(ground-plane (vector 0 1 0) -1)
|
|
(collisions 1)
|
|
|
|
(define shape1 (with-state
|
|
(translate (vector -1 0 0))
|
|
(build-cube)))
|
|
(active-box shape1)
|
|
|
|
(define shape2 (with-state
|
|
(translate (vector 1 0 0))
|
|
(build-cube)))
|
|
(active-box shape2)
|
|
|
|
(build-hinge2joint shape1 shape2 (vector 0 0 0) (vector 1 0 0) (vector 0 1 0))
|
|
(kick shape1 (vector 0 2 0))
|
|
|
|
(set-physics-debug #t)
|
|
|
|
--------------------
|
|
build-amotorjoint
|
|
(clear)
|
|
(ground-plane (vector 0 1 0) -1)
|
|
(collisions 1)
|
|
|
|
(define shape1 (with-state
|
|
(translate (vector -1 0 0))
|
|
(build-cube)))
|
|
(active-box shape1)
|
|
|
|
(define shape2 (with-state
|
|
(translate (vector 1 0 0))
|
|
(build-cube)))
|
|
(active-box shape2)
|
|
|
|
(build-amotorjoint shape1 shape2 (vector 1 0 0))
|
|
(kick shape1 (vector 0 2 0))
|
|
|
|
(set-physics-debug #t)
|
|
|
|
--------------------
|
|
joint-param
|
|
(clear)
|
|
(ground-plane (vector 0 1 0) -1)
|
|
(collisions 1)
|
|
|
|
(define shape1 (with-state
|
|
(translate (vector -1 0 0))
|
|
(build-cube)))
|
|
(active-box shape1)
|
|
|
|
(define shape2 (with-state
|
|
(translate (vector 1 0 0))
|
|
(build-cube)))
|
|
(active-box shape2)
|
|
|
|
(define j (build-hinge2joint shape1 shape2 (vector 0 0 0) (vector 1 0 0) (vector 0 1 0)))
|
|
(joint-param j "Vel2" 0.1)
|
|
(joint-param j "FMax2" 0.2)
|
|
(joint-param j "LoStop" -0.75)
|
|
(joint-param j "HiStop" 0.75)
|
|
|
|
(set-physics-debug #t)
|
|
|
|
--------------------
|
|
joint-angle
|
|
(clear)
|
|
(ground-plane (vector 0 1 0) -1)
|
|
(collisions 1)
|
|
|
|
(define shape1 (with-state
|
|
(translate (vector -1 0 0))
|
|
(build-cube)))
|
|
(active-box shape1)
|
|
|
|
(define shape2 (with-state
|
|
(translate (vector 1 0 0))
|
|
(build-cube)))
|
|
(active-box shape2)
|
|
|
|
(define j (build-hingejoint shape1 shape2 (vector 0 0 0) (vector 0 1 0)))
|
|
(joint-param j "FMax" 20)
|
|
(joint-param j "LoStop" -1)
|
|
(joint-param j "HiStop" 1)
|
|
|
|
(set-physics-debug #t)
|
|
|
|
(define (animate)
|
|
(joint-angle j 0.1 (* 5 (sin (time)))))
|
|
|
|
--------------------
|
|
joint-slide
|
|
(clear)
|
|
(ground-plane (vector 0 1 0) -1)
|
|
(collisions 1)
|
|
|
|
(define shape1 (with-state
|
|
(translate (vector -1 0 0))
|
|
(build-cube)))
|
|
(active-box shape1)
|
|
|
|
(define shape2 (with-state
|
|
(translate (vector 1 0 0))
|
|
(build-cube)))
|
|
(active-box shape2)
|
|
|
|
(define j (build-sliderjoint shape1 shape2 (vector 1 0 0)))
|
|
(joint-param j "FMax" 20)
|
|
(joint-param j "LoStop" -1)
|
|
(joint-param j "HiStop" 1)
|
|
|
|
(set-physics-debug #t)
|
|
|
|
(define (animate)
|
|
(joint-slide j (* 5 (sin (time)))))
|
|
|
|
--------------------
|
|
set-max-physical
|
|
(clear)
|
|
(set-max-physical 200)
|
|
|
|
(every-frame
|
|
(with-state
|
|
(translate (vector 0 5 0))
|
|
(scale (srndvec))
|
|
(colour (rndvec))
|
|
(let ((ob (build-cube)))
|
|
(active-box ob)
|
|
(kick ob (vmul (srndvec) 3))
|
|
(twist ob (vmul (srndvec) 2)))))
|
|
|
|
--------------------
|
|
set-mass
|
|
(clear)
|
|
(ground-plane (vector 0 1 0) 0)
|
|
(collisions 1)
|
|
(set-max-physical 20)
|
|
|
|
; not a great example, but these boxes will have
|
|
; different mass, so behave a bit differently.
|
|
|
|
(every-frame
|
|
(when (> (rndf) 0.92)
|
|
(with-state
|
|
(translate (vector 0 5 0))
|
|
(scale (vmul (rndvec) 5))
|
|
(colour (rndvec))
|
|
(let ((ob (build-cube)))
|
|
(active-box ob)
|
|
(set-mass ob (* (rndf) 10))
|
|
(kick ob (vmul (srndvec) 3))
|
|
(twist ob (vmul (srndvec) 2))))))
|
|
|
|
--------------------
|
|
gravity
|
|
(clear)
|
|
(ground-plane (vector 0 1 0) 0)
|
|
(collisions 1)
|
|
(set-max-physical 20)
|
|
|
|
(every-frame
|
|
(begin
|
|
(gravity (vector 0 (sin (time)) 0)) ; change gravity! :)
|
|
(when (> (rndf) 0.92)
|
|
(with-state
|
|
(translate (vector 0 5 0))
|
|
(scale (rndvec))
|
|
(colour (rndvec))
|
|
(let ((ob (build-cube)))
|
|
(active-box ob)
|
|
(kick ob (vmul (srndvec) 3))
|
|
(twist ob (vmul (srndvec) 2)))))))
|
|
|
|
--------------------
|
|
kick
|
|
(clear)
|
|
(collisions 1)
|
|
(set-max-physical 20)
|
|
(gravity (vector 0 0 0))
|
|
|
|
(every-frame
|
|
(when (> (rndf) 0.92)
|
|
(with-state
|
|
(scale (rndvec))
|
|
(colour (rndvec))
|
|
(let ((ob (build-cube)))
|
|
(active-box ob)
|
|
(kick ob (vmul (srndvec) 3))
|
|
(twist ob (vmul (srndvec) 2))))))
|
|
|
|
--------------------
|
|
twist
|
|
(clear)
|
|
(collisions 1)
|
|
(set-max-physical 20)
|
|
(gravity (vector 0 0 0))
|
|
|
|
(every-frame
|
|
(when (> (rndf) 0.92)
|
|
(with-state
|
|
(scale (rndvec))
|
|
(colour (rndvec))
|
|
(let ((ob (build-cube)))
|
|
(active-box ob)
|
|
(kick ob (vmul (srndvec) 3))
|
|
(twist ob (vmul (srndvec) 2))))))
|
|
|
|
--------------------
|
|
has-collided
|
|
(clear)
|
|
(ground-plane (vector 0 1 0) 0)
|
|
(collisions 1)
|
|
(set-max-physical 20)
|
|
|
|
(define ob (with-state
|
|
(translate (vector 0 5 0))
|
|
(build-cube)))
|
|
|
|
(active-box ob)
|
|
|
|
(every-frame
|
|
(when (has-collided ob)
|
|
(with-primitive ob
|
|
(colour (rndvec)))))
|
|
|
|
--------------------
|
|
turtle-prim
|
|
(turtle-prim 0)
|
|
|
|
--------------------
|
|
turtle-vert
|
|
(turtle-vert)
|
|
|
|
--------------------
|
|
turtle-build
|
|
(define mynewshape (turtle-build))
|
|
|
|
--------------------
|
|
turtle-move
|
|
(turtle-move 1)
|
|
|
|
--------------------
|
|
turtle-push
|
|
(turtle-push)
|
|
|
|
--------------------
|
|
turtle-pop
|
|
(turtle-pop)
|
|
|
|
--------------------
|
|
turtle-turn
|
|
(turtle-turn (vector 45 0 0))
|
|
|
|
--------------------
|
|
turtle-reset
|
|
(turtle-reset)
|
|
|
|
--------------------
|
|
turtle-attach
|
|
(define myshape (build-sphere 10 10))
|
|
(turtle-attach myshape)
|
|
|
|
--------------------
|
|
turtle-skip
|
|
(turtle-skip -1)
|
|
|
|
--------------------
|
|
turtle-position
|
|
(display (turtle-position))(newline)
|
|
|
|
--------------------
|
|
turtle-seek
|
|
(turtle-seek 0)
|
|
|
|
--------------------
|
|
midi-info
|
|
(midi-info)
|
|
|
|
--------------------
|
|
midi-init
|
|
(midi-init 1)
|
|
|
|
--------------------
|
|
midi-cc
|
|
(midi-cc 0 1)
|
|
|
|
--------------------
|
|
midi-ccn
|
|
(midi-ccn 0 1)
|
|
|
|
--------------------
|
|
midi-note
|
|
(midi-note)
|
|
|
|
--------------------
|
|
midi-peek
|
|
(display (midi-peek))(newline)
|
|
|
|
--------------------
|
|
osc-source
|
|
(osc-source "4444") ; listen to port 4444 for osc messages
|
|
|
|
--------------------
|
|
osc-msg
|
|
(cond
|
|
((osc-msg "/hello") ; if a the /hello message is recieved
|
|
(display (osc 1))(newline))) ; print out the first argument
|
|
|
|
--------------------
|
|
osc
|
|
(cond
|
|
((osc-msg "/hello") ; if a the /hello message is recieved
|
|
(display (osc 1))(newline))) ; print out the first argument
|
|
|
|
--------------------
|
|
osc-destination
|
|
(osc-destination "osc.udp:localhost:4444")
|
|
(osc-send "/hello" "s" (list "boo!")) ; send a message to this destination
|
|
|
|
--------------------
|
|
osc-peek
|
|
(display (osc-peek))(newline)
|
|
|
|
--------------------
|
|
osc-send
|
|
(osc-destination "osc.udp:localhost:4444")
|
|
(osc-send "/hello" "sif" (list "boo!" 3 42.3)) ; send a message to this destination
|
|
|
|
--------------------
|
|
reset-camera
|
|
; ruin the camera transform
|
|
(set-camera-transform (vector 123 41832 28 0.2 128 0.001 123 41832 28 0.2 128 0.001 0.2 100 13 1931))
|
|
; set it back to the starting position/orientation
|
|
(reset-camera)
|
|
|
|
--------------------
|
|
set-camera-transform
|
|
(set-camera-transform (mtranslate (vector 0 0 -10)))
|
|
|
|
--------------------
|
|
get-camera-transform
|
|
(define tx (get-camera-transform))
|
|
|
|
--------------------
|
|
set-help-locale!
|
|
(set-help-locale! "pt") ; switch to portuguese
|
|
(set-help-locale! "en") ; and back to english
|
|
|
|
--------------------
|
|
help
|
|
(help "pop")
|
|
|
|
--------------------
|
|
key-pressed
|
|
(when (key-pressed "q") (display "q pressed!"))
|
|
|
|
--------------------
|
|
keys-down
|
|
(display (keys-down))(newline)
|
|
|
|
--------------------
|
|
key-special-pressed
|
|
|
|
(when (key-special-pressed 100) (display "left cursor pressed"))
|
|
(when (key-special-pressed 102) (display "right cursor pressed"))
|
|
(when (key-special-pressed 101) (display "up cursor pressed"))
|
|
(when (key-special-pressed 103) (display "down cursor pressed"))
|
|
|
|
--------------------
|
|
keys-special-down
|
|
(display (keys-special-down))
|
|
|
|
--------------------
|
|
key-pressed-this-frame
|
|
(when (key-pressed-this-frame "q") (display "q pressed!"))
|
|
|
|
--------------------
|
|
key-special-pressed-this-frame
|
|
(when (key-special-pressed-this-frame "q") (display "q pressed!"))
|
|
|
|
--------------------
|
|
mouse-x
|
|
(display (mouse-x))
|
|
|
|
--------------------
|
|
mouse-y
|
|
(display (mouse-y))
|
|
|
|
--------------------
|
|
mouse-button
|
|
(display (mouse-button 1))
|
|
|
|
--------------------
|
|
mouse-wheel
|
|
(display (mouse-wheel))
|
|
|
|
--------------------
|
|
mouse-over
|
|
(grab (mouse-over))
|
|
(colour (vector 1 0 0)) ; paints objects the mouse is over red
|
|
(ungrab)
|
|
|
|
--------------------
|
|
every-frame
|
|
(define (myfunc)
|
|
(colour (rndvec))
|
|
(draw-torus))
|
|
|
|
(every-frame (myfunc))
|
|
|
|
--------------------
|
|
clear
|
|
(clear) ; without this we would accumulate a new cube every time F5 was pressed
|
|
(build-cube)
|
|
|
|
--------------------
|
|
start-framedump
|
|
(start-framedump "frame" "jpg")
|
|
|
|
--------------------
|
|
end-framedump
|
|
(end-framedump)
|
|
|
|
--------------------
|
|
set-physics-debug
|
|
(set-physics-debug #t)
|
|
|
|
--------------------
|
|
override-frame-callback
|
|
(override-frame-callback myfunc)
|
|
(override-frame-callback default-fluxus-frame-callback) ; set it back again...
|
|
|
|
--------------------
|
|
set-auto-indent-tab
|
|
(set-auto-indent-tab 2)
|
|
|
|
--------------------
|
|
set-camera-update
|
|
(set-camera-update #f)
|
|
(set-camera-update #t)
|
|
|
|
--------------------
|
|
spawn-task
|
|
(spawn-task (lambda () (draw-torus)) 'torus-task)
|
|
(rm-task 'torus-task)
|
|
|
|
--------------------
|
|
rm-task
|
|
(spawn-task (lambda () (draw-torus)) 'torus-task) ; add a task
|
|
(rm-task 'torus-task) ; remove it again
|
|
|
|
--------------------
|
|
rm-all-tasks
|
|
(rm-all-tasks)
|
|
|
|
--------------------
|
|
ls-tasks
|
|
(spawn-task (lambda () (draw-torus)) 'torus-task) ; add a task
|
|
(ls-tasks)
|
|
(rm-task 'torus-task)
|
|
|
|
--------------------
|
|
spawn-timed-task
|
|
(spawn-timed-task (+ (time-now) 10) ; schedule a task 10 seconds from now
|
|
(lambda () (display "hello future!") (newline)))
|
|
|