[fluxus] whats going on with fluxus
andersvi at extern.uio.no
andersvi at extern.uio.no
Thu Nov 23 05:23:17 PST 2006
>>>>> "DG" == Dave Griffiths <dave at pawfal.org> writes:
DG> if you want a starting point the second script here is a osc
DG> controlled physical arm:
DG> http://libarynth.org/cgi-bin/view/Libarynth/SheepScheme
DG> sounds like you've got it covered though :)
DG> cheers,
Brilliant! Im only just starting this, but heres a hand with fingers
to couple to the arm somewhere.
(clear)
(define (pickl lista)
(list-ref lista (random (length lista))))
(define (rand-cent y)
(- y (random (* 2 y))))
(define (rand-vect y)
(vector (rand-cent y) (rand-cent y) (rand-cent y)))
;; map operator gjennom liste og akkumuler resultat:
(define (akkumuler-liste liste op init)
(if (null? (cdr liste))
(cons (op (car liste) init) '())
(let ((verdi (op (car liste) init)))
(cons verdi
(akkumuler-liste (cdr liste) op verdi)))))
(searchpaths '("/home/andersvi/prosjekter/CIKADA/Fluxus/"))
(define pi 3.141592654)
;; liste av fingerlengder:
(define fingerlengder '(0.7 1.0 1.06 1.0 0.7))
(define fingerleddlengder '(3 1.3 1.0 0.8))
;;(define fingerleddoffsets '(0 2.0 3.1 4.1 5.0))
(define fingerleddoffsets
(akkumuler-liste fingerleddlengder + 0))
(define finger-avstand 2.5)
(define finger-avstand 0.9)
(define finger-hoyde 0.5)
(define hand-kurve -5)
(define finger-spredning 5)
(define (fingerleddparametre j)
(joint-param j "LoStop" -0.5)
(joint-param j "HiStop" 0.0)
(joint-param j "FMax" 3)
(joint-param j "FudgeFactor" 0))
(define (fingerleddparametre j)
(joint-param j "LoStop" -0.5)
(joint-param j "HiStop" 0.0)
(joint-param j "FMax" 3)
(joint-param j "FudgeFactor" 0.9)
(joint-param j "Bounce" 0.1)
(joint-param j "CFM" 0.5)
(joint-param j "StopERP" 0.8)
(joint-param j "StopCFM" 0)
)
(define fingerkoblinger '())
(define teksturer '("teksturer/hud1.png"
"teksturer/hud2.png"
"teksturer/hud3.png"
"teksturer/hud4.png"))
(define (lag-finger ledd n-finger)
(let ((fingerledd (make-vector ledd))
(lengde-fingerledd (list-ref fingerlengder n-finger)))
(do ((n 0 (+ n 1)))
((>= n (vector-length fingerledd)) fingerledd)
(push)
(translate (vector (* (+ n 1) lengde-fingerledd)
0 0))
(scale (vector (* lengde-fingerledd (if (= n 0) 1.3 1))
;;lengde-fingerledd ;;(* n;;(if (= n 0) 2 1) lengde-fingerledd)
finger-hoyde
finger-hoyde))
(texture (load-texture (pickl teksturer)))
(vector-set! fingerledd n (build-sphere 12 12))
(active-sphere (vector-ref fingerledd n))
(pop)
)
(do ((n 1 (+ n 1)))
((>= n (vector-length fingerledd)) fingerledd)
(let ((l1 (vector-ref fingerledd (- n 1)))
(l2 (vector-ref fingerledd n))
(hinge (vector 0 1 0))
(pos (vector (- (* (+ n 2) lengde-fingerledd)
(* 0.5 lengde-fingerledd))
(* n-finger finger-avstand)
-0.2)))
(set! fingerkoblinger
(cons (build-hingejoint l1 l2
pos
hinge)
fingerkoblinger))
(fingerleddparametre (car fingerkoblinger))))
fingerledd))
(define (lag-finger ledd n-finger)
(let ((fingerledd (make-vector ledd))
(lengde-fingerledd (list-ref fingerlengder n-finger)))
(do ((n 0 (+ n 1)))
((>= n (vector-length fingerledd)) fingerledd)
(push)
(translate (vector (* (list-ref fingerleddoffsets n) lengde-fingerledd)
0 0))
(scale (vector (* lengde-fingerledd (if (= n 0) 1.0 1))
;;lengde-fingerledd ;;(* n;;(if (= n 0) 2 1) lengde-fingerledd)
finger-hoyde
finger-hoyde))
(texture (load-texture (pickl teksturer)))
(vector-set! fingerledd n (build-sphere 12 12))
(active-sphere (vector-ref fingerledd n))
(pop)
)
(do ((n 1 (+ n 1)))
((>= n (vector-length fingerledd)) fingerledd)
(let ((l1 (vector-ref fingerledd (- n 1)))
(l2 (vector-ref fingerledd n))
(hinge (vector 0 1 0))
(pos (vector (- (* (list-ref fingerleddoffsets n) lengde-fingerledd)
(* 0.5 lengde-fingerledd))
(* n-finger finger-avstand)
-0.2)))
(set! fingerkoblinger
(cons (build-hingejoint l1 l2
pos
hinge)
fingerkoblinger))
(fingerleddparametre (car fingerkoblinger))))
fingerledd))
(define handleddskoblinger '())
(define v-handledd #f)
(define h-handledd #f)
(define (lag-venstre-hand)
(let ((hand '())
(handledd-hinge (vector 1 0 0)))
(push)
(translate (vector -2 (* finger-avstand 2) 0))
(scale (vector 4.4 2.5 1))
(texture (load-texture "teksturer/aids.png"))
(set! v-handledd (build-sphere 20 20))
;;(build-fixedjoint v-handledd)
;;(active-sphere v-handledd)
(pop)
(push)
(scale (vector 1 0.8 1.0))
(set! hand (cons (lag-finger 3 0) hand)) ; lille petter spillemann
(pop)
(translate (vector 0 finger-avstand 0))
;;(rotate (vector (* 1 hand-kurve) 0 (* 3 finger-spredning)))
(set! hand (cons (lag-finger 3 1) hand)) ; gulbrand
(set! handleddskoblinger
(cons (build-hingejoint (vector-ref (car hand) 0)
(vector-ref (car (cdr hand)) 0)
(vector 0 (* 0.5 finger-avstand) 0)
handledd-hinge)
handleddskoblinger))
(translate (vector 0 finger-avstand 0))
;;(rotate (vector hand-kurve 0 finger-spredning))
(set! hand (cons (lag-finger 3 2) hand)) ; langemann
(set! handleddskoblinger
(cons (build-hingejoint (vector-ref (car hand) 0)
(vector-ref (car (cdr hand)) 0)
(vector 0 (* 1.5 finger-avstand) 0)
handledd-hinge)
handleddskoblinger))
(translate (vector 0 finger-avstand 0))
; (rotate (vector hand-kurve 0 finger-spredning))
(set! hand (cons (lag-finger 3 3) hand)) ; slikkepott
(set! handleddskoblinger
(cons (build-hingejoint (vector-ref (car hand) 0)
(vector-ref (car (cdr hand)) 0)
(vector 0 (* 2.5 finger-avstand) 0)
handledd-hinge)
handleddskoblinger))
(translate (vector 0 finger-avstand 0))
(push)
(rotate (vector hand-kurve 0 (* finger-spredning 4)))
(set! hand (cons (lag-finger 2 4) hand)) ; tommeltott
(set! handleddskoblinger
(cons (build-hingejoint (vector-ref (car hand) 0)
(vector-ref (car (cdr hand)) 0)
(vector 0 (* 3.5 finger-avstand) 0)
handledd-hinge)
handleddskoblinger))
(pop)
;; returnere handa
hand)
)
(define (lag-hoyre-hand)
(let ((hand '())
(handledd-hinge (vector 1 0 0)))
(set! hand (cons (lag-finger 3 0) hand)) ; tommeltott
(translate (vector 0 finger-avstand 0))
;;(rotate (vector (* 1 hand-kurve) 0 (* 3 finger-spredning)))
(set! hand (cons (lag-finger 3 1) hand)) ; slikkepott
(set! handleddskoblinger
(cons (build-hingejoint (vector-ref (car hand) 0)
(vector-ref (car (cdr hand)) 0)
(vector 0 (* 0.5 finger-avstand) 0)
handledd-hinge)
handleddskoblinger))
(translate (vector 0 finger-avstand 0))
;;(rotate (vector hand-kurve 0 finger-spredning))
(set! hand (cons (lag-finger 3 2) hand)) ; langemann
(set! handleddskoblinger
(cons (build-hingejoint (vector-ref (car hand) 0)
(vector-ref (car (cdr hand)) 0)
(vector 0 (* 1.5 finger-avstand) 0)
handledd-hinge)
handleddskoblinger))
(translate (vector 0 finger-avstand 0))
; (rotate (vector hand-kurve 0 finger-spredning))
(set! hand (cons (lag-finger 3 3) hand)) ; gulbrand
(set! handleddskoblinger
(cons (build-hingejoint (vector-ref (car hand) 0)
(vector-ref (car (cdr hand)) 0)
(vector 0 (* 2.5 finger-avstand) 0)
handledd-hinge)
handleddskoblinger))
(translate (vector 0 finger-avstand 0))
; (rotate (vector hand-kurve 0 finger-spredning))
(set! hand (cons (lag-finger 3 4) hand)) ; lille petter spillemann
(set! handleddskoblinger
(cons (build-hingejoint (vector-ref (car hand) 0)
(vector-ref (car (cdr hand)) 0)
(vector 0 (* 3.5 finger-avstand) 0)
handledd-hinge)
handleddskoblinger))
;; returnere handa
hand)
)
;;(hint-none)
;;(hint-wire)
;;(hint-normal)
;;(hint-points)
;;(hint-anti-alias)
;;(hint-unlit)
;;(hint-box)
;;(hint-vertcols)
;;(show-axis 1)
(collisions 1)
(desiredfps 15)
(define size 5)
(ground-plane (vector 0 1 0) (- size))
(ground-plane (vector 0 -1 0) (- size))
(ground-plane (vector -1 0 0) (- size))
(ground-plane (vector 1 0 0) (- size))
(ground-plane (vector 0 0 1) (- size))
(ground-plane (vector 0 0 -1) (- size))
(define (festhand hand)
(do ((index 0 (+ index 1)))
((>= index (length hand)) #f)
(let* ((finger (list-ref hand index))
(fingerfeste (vector-ref finger 0)))
(build-fixedjoint fingerfeste))))
(define venstre-hand (lag-venstre-hand))
(festhand venstre-hand)
(gravity (vector 0 -1 0))
(define (tuppsleng hand)
(do ((index 0 (+ index 1)))
((>= index (length hand)) #f)
(let* ((finger (list-ref hand index))
(fingertupp (vector-ref finger (- (vector-length finger) 1)))
(fingerledd2 (vector-ref finger (- (vector-length finger) 2)))
(kraft (vector (rand-cent 2.0) (rand-cent 2.0) (* (- 1 (random 2)) -12 (expt (flxrnd) 7)))))
(kick fingertupp kraft)
(kick fingerledd2 (vmul kraft 3)))))
;;(clear-lights)
(define (fingerkick hand)
(do ((index 0 (+ index 1)))
((>= index (length hand)) #f)
(if (zero? (random 10))
(let* ((finger (list-ref hand index))
(ledd (vector-ref finger (random (vector-length finger))))
(kraft
(vector (rand-cent 1.0)
(rand-cent 20.0)
(* (- 1.8 (random 2.0)) -80 (expt (flxrnd) 4)))))
(kick ledd kraft))
#f)))
(define fingerfarger
(vector
(vector (random 1.0) (random 1.0) (random 1.0))
(vector (random 1.0) (random 1.0) (random 1.0))
(vector (random 1.0) (random 1.0) (random 1.0))
(vector (random 1.0) (random 1.0) (random 1.0))
(vector (random 1.0) (random 1.0) (random 1.0))
(vector (random 1.0) (random 1.0) (random 1.0))))
(define (fingerkickcolor hand)
(do ((index 0 (+ index 1)))
((>= index (length hand)) #f)
(let ((finger (list-ref hand index)))
(do ((fingerleddn 0 (+ fingerleddn 1)))
((>= fingerleddn (vector-length finger)) #t)
(grab (vector-ref finger fingerleddn))
(colour (vadd (vector-ref fingerfarger index)
(vmul (vector (gh fingerleddn)
(gh (+ index fingerleddn))
(gh (+ index fingerleddn)))
0.1)))
(ungrab)))
(if (zero? (random 10))
(let* ((finger (list-ref hand index))
(ledd (vector-ref finger (random (vector-length finger))))
(kraft
(vector (rand-cent 1.0)
(rand-cent 20.0)
(* (- 1.8 (random 2.0)) -80 (expt (flxrnd) 4)))))
(kick ledd kraft))
#f)))
(define l1 (make-light 0))
;;(light-position l1 (vector 0 10 10))
(define (oppdater)
;;(fingerkick venstre-hand)
(fingerkickcolor venstre-hand)
;;(osc-send "/hello" "fis" '(1 2 "three"))
;;(light-position l1 (vector (sin (time)) (cos (time)) (cos (* (time) 0.7))))
)
(osc-destination "4444")
;;(blur 0.14)
;;(shinyness 0.0)
;;(every-frame "(tuppsleng venstre-hand)")
(every-frame "(oppdater)")
More information about the Fluxus
mailing list