added the 3d stuff
|
@ -3,6 +3,7 @@
|
|||
;; exmaple chat client
|
||||
|
||||
(require "xmpp.scm")
|
||||
(require openssl)
|
||||
|
||||
(define (read-input prompt)
|
||||
(display prompt)
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
(map
|
||||
(lambda (cp)
|
||||
(vector (- (- (/ (vx cp) (pixels-width)) 0.5))
|
||||
(- 1 (/ (vy cp) (pixels-height))) 0))
|
||||
(/ (vy cp) (pixels-height)) 0))
|
||||
l))
|
||||
|
||||
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -102,7 +102,7 @@
|
|||
(let* ((connection-list (get-connection-list id))
|
||||
(root (with-state
|
||||
(translate (vector 0 0.5 (* 0.01 (rndf))))
|
||||
h (texture (load-texture (string-append "textures/comp-" id ".png")))
|
||||
(texture (load-texture (string-append "textures/comp-" id ".png")))
|
||||
(build-plane)))
|
||||
(comp (make-component root col
|
||||
(map
|
||||
|
@ -399,7 +399,8 @@ h (texture (load-texture (string-append "textures/com
|
|||
(let ((colours (suck world current-flower)))
|
||||
(when (not (zero? (length colours)))
|
||||
(let
|
||||
((av-col (vdiv (foldl vadd (vector 0 0 0) colours) (length colours))))
|
||||
((av-col (vdiv (foldl (lambda (c1 c2)
|
||||
(vadd c1 c2)) (vector 0 0 0) colours) (length colours))))
|
||||
|
||||
(set-component-col! flower
|
||||
(vadd (vmul (component-col flower) 0.9)
|
||||
|
|
666
hayfever/hayfever2.scm
Normal file
|
@ -0,0 +1,666 @@
|
|||
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
(require scheme/class)
|
||||
(require mzlib/string)
|
||||
|
||||
(osc-destination "osc.udp://127.0.0.255:4001")
|
||||
(osc-source "4002")
|
||||
|
||||
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
; pixel primitive things for getting connection points
|
||||
|
||||
; converts a 2D vector into an angle, with some dodgy dave maths
|
||||
(define (2dvec->angle x y)
|
||||
(let ((q (/ 3.141 2)))
|
||||
(when (zero? y) (set! y 0.0001))
|
||||
(cond
|
||||
((>= y 0)
|
||||
(fmod (* (+ q q q (- q (atan (/ x y)))) 57.2957795) 360))
|
||||
(else
|
||||
(fmod (* (+ q (- q (atan (/ x y)))) 57.2957795) 360)))))
|
||||
|
||||
(define (i->pos i)
|
||||
(vector (modulo i (pixels-width))
|
||||
(quotient i (pixels-width)) 0))
|
||||
|
||||
(define (pos->i pos)
|
||||
(+ (* (round (vy pos)) (pixels-width)) (round (vx pos))))
|
||||
|
||||
(define (pixels-ref name pos)
|
||||
(pdata-ref name (pos->i pos)))
|
||||
|
||||
(define (pixels-set! name pos s)
|
||||
(pdata-set! name (pos->i pos) s))
|
||||
|
||||
(define (search i)
|
||||
(cond
|
||||
((eq? i (pdata-size)) i)
|
||||
((< (vr (pdata-ref "c" i)) 0.5) i)
|
||||
(else (search (+ i 1)))))
|
||||
|
||||
(define (flood pos tc av)
|
||||
(define (rec-flood pos)
|
||||
(pixels-set! "c" pos (vector 1 0 1))
|
||||
(set! tc (+ tc 1))
|
||||
(set! av (vadd av pos))
|
||||
(when (< (vr (pixels-ref "c" (vadd pos (vector -1 0 0)))) 0.5)
|
||||
(rec-flood (vadd pos (vector -1 0 0))))
|
||||
(when (< (vr (pixels-ref "c" (vadd pos (vector 1 0 0)))) 0.5)
|
||||
(rec-flood (vadd pos (vector 1 0 0))))
|
||||
(when (< (vr (pixels-ref "c" (vadd pos (vector 0 1 0)))) 0.5)
|
||||
(rec-flood (vadd pos (vector 0 1 0))))
|
||||
(when (< (vr (pixels-ref "c" (vadd pos (vector 0 -1 0)))) 0.5)
|
||||
(rec-flood (vadd pos (vector 0 -1 0)))))
|
||||
(rec-flood pos)
|
||||
(vmul av (/ 1 tc)))
|
||||
|
||||
(define (find-centroids pos l)
|
||||
(let ((i (search pos)))
|
||||
(cond ((eq? i (pdata-size)) l)
|
||||
(else
|
||||
(find-centroids i
|
||||
(cons (flood (i->pos i) 0 (vector 0 0 0)) l))))))
|
||||
|
||||
(define (convert-to-pos l)
|
||||
(map
|
||||
(lambda (cp)
|
||||
(vector (- (- (/ (vx cp) (pixels-width)) 0.5))
|
||||
(/ (vy cp) (pixels-height)) 0))
|
||||
l))
|
||||
|
||||
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
; a cache for the connection points - should save this out
|
||||
|
||||
(define connection-cache '())
|
||||
|
||||
(define (get-connection-list id)
|
||||
(let ((ret (assoc id connection-cache)))
|
||||
(cond
|
||||
(ret (cdr ret))
|
||||
(else
|
||||
(let* ((tex (load-primitive (string-append "textures/comp-cp-" id ".png")))
|
||||
(connections (with-primitive tex (convert-to-pos (find-centroids 0 '())))))
|
||||
(set! connection-cache (cons (cons id connections) connection-cache))
|
||||
(destroy tex)
|
||||
connections)))))
|
||||
|
||||
|
||||
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
; a plant component
|
||||
|
||||
(define-struct component (root (col #:mutable) children))
|
||||
|
||||
(define (build-component id col children)
|
||||
(cond
|
||||
((null? children)
|
||||
(let ((root (with-state
|
||||
(translate (vector 0 0.5 (* 0.1 (rndf))))
|
||||
(hint-depth-sort)
|
||||
(texture (load-texture (string-append "textures/comp-" id ".png")))
|
||||
(build-plane))))
|
||||
(make-component root col '())))
|
||||
(else
|
||||
(let* ((connection-list (get-connection-list id))
|
||||
(root (with-state
|
||||
(hint-depth-sort)
|
||||
(translate (vector 0 0.5 (* 0.01 (rndf))))
|
||||
; (rotate (vector 0 0 90))
|
||||
(texture (load-texture (string-append "textures/comp-" id ".png")))
|
||||
(build-plane)))
|
||||
(comp (make-component root col
|
||||
(map
|
||||
(lambda (child connection)
|
||||
(with-state
|
||||
(parent root)
|
||||
(translate (vadd connection (vector 0 0 (* 0.01 (rndf)))))
|
||||
(rotate (vector 0 0 (2dvec->angle
|
||||
(vx connection) (- (vy connection) 0.5))))
|
||||
(rotate (vector 0 0 0))
|
||||
(build-component (car child) col (cadr child))))
|
||||
children
|
||||
connection-list))))
|
||||
(with-primitive root (apply-transform))
|
||||
comp))))
|
||||
|
||||
(define (random-leaf component)
|
||||
(cond
|
||||
((null? (component-children component)) component)
|
||||
(else (random-leaf (choose (component-children component))))))
|
||||
|
||||
(define (component-leaves component)
|
||||
(cond
|
||||
((null? (component-children component)) (list component))
|
||||
(else
|
||||
(foldl
|
||||
(lambda (child r)
|
||||
(append (component-leaves child) r))
|
||||
'()
|
||||
(component-children component)))))
|
||||
|
||||
(define (component-print component)
|
||||
(printf "~a~n" (component-children component)))
|
||||
|
||||
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
; utils for building random plants
|
||||
|
||||
(define (choose l)
|
||||
(list-ref l (random (length l))))
|
||||
|
||||
(define (make-random-plant depth)
|
||||
(let ((num-children (cond ((> depth 2) 0)
|
||||
((< depth 1) (choose (list 2 3)))
|
||||
(else (choose (list 0 1 2 3))))))
|
||||
(cond
|
||||
((eq? num-children 0) (list (choose (list "11")) (list)))
|
||||
((eq? num-children 1) (list "1-1" (list (make-random-plant (+ depth 1)))))
|
||||
((eq? num-children 2) (list "2-1" (list (make-random-plant (+ depth 1))
|
||||
(make-random-plant (+ depth 1)))))
|
||||
((eq? num-children 3) (list "3-1" (list (make-random-plant (+ depth 1))
|
||||
(make-random-plant (+ depth 1)) (make-random-plant (+ depth 1)))))
|
||||
((eq? num-children 4) (list "4-1" (list (make-random-plant (+ depth 1))
|
||||
(make-random-plant (+ depth 1)) (make-random-plant (+ depth 1))
|
||||
(make-random-plant (+ depth 1)))))
|
||||
((eq? num-children 5) (list "5-1" (list (make-random-plant (+ depth 1))
|
||||
(make-random-plant (+ depth 1)) (make-random-plant (+ depth 1))
|
||||
(make-random-plant (+ depth 1)) (make-random-plant (+ depth 1))))))))
|
||||
|
||||
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
; the world things live in
|
||||
|
||||
(define world%
|
||||
(class object%
|
||||
(init-field (size 1))
|
||||
|
||||
(field
|
||||
(root 0)
|
||||
(entity-list '())
|
||||
(id 0)
|
||||
(pollen 0)
|
||||
(my-id 0))
|
||||
|
||||
(define/public (init)
|
||||
|
||||
(set! pollen (with-state
|
||||
(translate (vector 0 0 0.2))
|
||||
(texture (load-texture "textures/pollen.png"))
|
||||
(build-particles 1000)))
|
||||
|
||||
(with-primitive pollen
|
||||
(pdata-map!
|
||||
(lambda (p)
|
||||
(vmul (vector (crndf) (crndf) (+ 0.2 (* (rndf) 0.01))) 10))
|
||||
"p")
|
||||
(pdata-map!
|
||||
(lambda (c)
|
||||
(vector (rndf) (rndf) (rndf) 0.5))
|
||||
"c")
|
||||
(pdata-map!
|
||||
(lambda (c)
|
||||
(let ((s (* 0.2 (grndf))))
|
||||
(vector s s 1)))
|
||||
"s"))
|
||||
|
||||
|
||||
#;(set! root (with-state
|
||||
|
||||
(rotate (vector 90 0 0))
|
||||
(scale 100)
|
||||
(build-plane)))
|
||||
#;(with-state
|
||||
; (parent root)
|
||||
(with-state
|
||||
(colour (vector 0.5 1 0.5))
|
||||
(scale (vector 20 13 1))
|
||||
(translate (vector 0 0.2 0))
|
||||
(rotate (vector 0 0 180))
|
||||
; (texture (load-texture "textures/hills.png"))
|
||||
(hint-unlit)
|
||||
(build-plane))
|
||||
#;(with-state
|
||||
(scale (vector 14 15 1))
|
||||
(translate (vector 0 0.3 4.5))
|
||||
(rotate (vector 0 0 180))
|
||||
(texture (load-texture "textures/fg.png"))
|
||||
(hint-unlit)
|
||||
(build-plane))))
|
||||
|
||||
(define/public (get-entity-list)
|
||||
entity-list)
|
||||
|
||||
(define/public (get-my-id)
|
||||
my-id)
|
||||
|
||||
(define/public (make-my-plant)
|
||||
(let* ((pos (vector (* (crndf) 5) 0 0.1))
|
||||
(col (hsv->rgb (vector (rndf) 0.8 1)))
|
||||
(desc (list (make-random-plant 0))))
|
||||
(set! my-id (length entity-list))
|
||||
(set-entity my-id (make-object plant% pos col desc))))
|
||||
|
||||
(define/public (get-entity id)
|
||||
(foldl
|
||||
(lambda (entity ret)
|
||||
(if (eq? (send entity get-id) id)
|
||||
entity
|
||||
ret))
|
||||
#f
|
||||
entity-list))
|
||||
|
||||
(define/public (choose)
|
||||
(list-ref entity-list (random (length entity-list))))
|
||||
|
||||
|
||||
(define/public (set-entity id entity)
|
||||
; if it already exists, destroy it
|
||||
; (do we want to do this all the time?)
|
||||
(when (get-entity id)
|
||||
(destroy-entity id))
|
||||
|
||||
(send entity set-id! id)
|
||||
(set! entity-list (cons entity entity-list)))
|
||||
|
||||
(define/public (destroy-entity id)
|
||||
(set! entity-list
|
||||
(filter
|
||||
(lambda (entity)
|
||||
(cond ((eq? (send entity get-id) id)
|
||||
(send entity destroy-me)
|
||||
#f)
|
||||
(else #t)))
|
||||
entity-list)))
|
||||
|
||||
(define/public (update network)
|
||||
(with-primitive pollen
|
||||
(animate-pollen))
|
||||
|
||||
; update my plant with player input
|
||||
(when (get-entity my-id)
|
||||
(send (get-entity my-id) player-update this network))
|
||||
|
||||
(for-each
|
||||
(lambda (entity)
|
||||
(send entity update this))
|
||||
entity-list))
|
||||
|
||||
; pollen stuff
|
||||
|
||||
(define (animate-pollen)
|
||||
(pdata-map!
|
||||
(lambda (p)
|
||||
(let* ((pp (vmul p 0.5))
|
||||
(v (vector (- (noise (vx pp) (vy pp) (time)) 0.5)
|
||||
(- (noise (vx pp) (+ (vy pp) 112.3) (time)) 0.5) 0)))
|
||||
(vadd (vadd p (vmul v 0.2))
|
||||
(vmul (vector (crndf) (crndf) 0) 0.01))))
|
||||
"p"))
|
||||
|
||||
(define (cirndvec)
|
||||
(let ((o (srndvec)))
|
||||
(vector (vx o) (vy o) 0)))
|
||||
|
||||
(define/public (puff-pollen pos col size np)
|
||||
(with-primitive pollen
|
||||
(for ((i (in-range 0 np)))
|
||||
(let ((c (random (pdata-size)))
|
||||
(cc (vmul col 1)))
|
||||
(pdata-set! "p" c (vadd (vmul (cirndvec) size)
|
||||
(vadd pos (vector 0 0 (+ 0.2 (* (rndf) 0.01))))))
|
||||
(pdata-set! "c" c (vector (vx cc) (vy cc) (vz cc) 0.5))))))
|
||||
|
||||
(define/public (suck-pollen pos size)
|
||||
(with-primitive pollen
|
||||
(pdata-index-fold
|
||||
(lambda (i p c r)
|
||||
(cond ((< (vdist pos p) (/ size 10))
|
||||
(pdata-set! "p" i (vector -1000 0 0))
|
||||
(cons c r))
|
||||
((< (vdist pos p) size)
|
||||
(pdata-set! "p" i (vadd p
|
||||
(vmul (vnormalise (vsub pos p)) 0.1)))
|
||||
r)
|
||||
(else r)))
|
||||
'()
|
||||
"p" "c")))
|
||||
|
||||
(super-new)
|
||||
(init)))
|
||||
|
||||
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
; the entity base class
|
||||
|
||||
(define entity%
|
||||
(class object%
|
||||
(init-field (id 0))
|
||||
|
||||
(define/public (get-id)
|
||||
id)
|
||||
|
||||
(define/public (set-id! s)
|
||||
(set! id s))
|
||||
|
||||
(super-new)))
|
||||
|
||||
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
; finally, a plant...
|
||||
|
||||
(define plant%
|
||||
(class entity%
|
||||
(init-field
|
||||
(pos (vector 0 0 0))
|
||||
(col (vector 1 1 1))
|
||||
(plant-desc '())
|
||||
(flower-list '())
|
||||
(current-flower 0))
|
||||
|
||||
(field
|
||||
(root-component 0)
|
||||
(spray-t 0))
|
||||
|
||||
(define/public (get-pos)
|
||||
pos)
|
||||
|
||||
(define/public (get-col)
|
||||
col)
|
||||
|
||||
(define/public (get-desc)
|
||||
plant-desc)
|
||||
|
||||
(define/public (init)
|
||||
(with-state
|
||||
;(parent (send world get-root))
|
||||
(colour col)
|
||||
(hint-unlit)
|
||||
(translate pos)
|
||||
(printf "building from:~a~n" plant-desc)
|
||||
(set! root-component (build-component "1-1" col plant-desc))
|
||||
(set! flower-list (component-leaves root-component))))
|
||||
|
||||
(define/public (destroy-me)
|
||||
(destroy (component-root root-component)))
|
||||
|
||||
|
||||
(define/public (player-update world network)
|
||||
(when (key-special-pressed 100)
|
||||
(set! current-flower (modulo (+ current-flower 1) (length flower-list))))
|
||||
|
||||
(when (key-special-pressed 102)
|
||||
(set! current-flower (modulo (- current-flower 1) (length flower-list))))
|
||||
|
||||
|
||||
; bit odd, have to go through network to tell other clients to
|
||||
; spray, and need to get the id of the player plant from the world...
|
||||
(when (key-special-pressed 101)
|
||||
(send network spray world (send world get-my-id) current-flower 0))
|
||||
|
||||
(let ((flower (list-ref flower-list current-flower)))
|
||||
|
||||
(with-primitive (component-root flower)
|
||||
(when (key-special-pressed 103)
|
||||
(rotate (vector 0 0 20))
|
||||
(let ((colours (suck world current-flower)))
|
||||
(when (not (zero? (length colours)))
|
||||
(let
|
||||
((av-col (vdiv (foldl (lambda (c1 c2)
|
||||
(vadd c1 c2)) (vector 0 0 0) colours) (length colours))))
|
||||
|
||||
(set-component-col! flower
|
||||
(vadd (vmul (component-col flower) 0.9)
|
||||
(vmul av-col 0.1)))
|
||||
|
||||
(send network flower-update world (send world get-my-id)
|
||||
current-flower (component-col flower))))))
|
||||
|
||||
|
||||
(rotate (vector 0 0 2)))))
|
||||
|
||||
(define/public (flower-update flower col)
|
||||
(let ((flower (list-ref flower-list flower)))
|
||||
(set-component-col! flower col)
|
||||
(with-primitive (component-root flower)
|
||||
(colour (component-col flower)))))
|
||||
|
||||
(define/public (update world)
|
||||
0
|
||||
#;(with-primitive root
|
||||
(colour col)
|
||||
(when (> spray-t 1)
|
||||
(set! spray-t (* spray-t 0.9))
|
||||
(colour spray-t))))
|
||||
|
||||
(define/public (spray world flower type)
|
||||
(let ((pos (vtransform (vector 0 0 0)
|
||||
(with-primitive (component-root (list-ref flower-list flower))
|
||||
(get-global-transform)))))
|
||||
(send world puff-pollen pos (component-col (list-ref flower-list flower))
|
||||
0.2 1)))
|
||||
|
||||
(define/public (suck world flower)
|
||||
(let ((pos (vtransform (vector 0 0 0)
|
||||
(with-primitive (component-root (list-ref flower-list flower))
|
||||
(get-global-transform)))))
|
||||
(send world suck-pollen pos 5)))
|
||||
|
||||
(super-new)
|
||||
(init)))
|
||||
|
||||
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
(define network-dispatch%
|
||||
(class object%
|
||||
|
||||
(field
|
||||
(waiting #f)
|
||||
(wait-till 0))
|
||||
|
||||
(define (stringify l)
|
||||
(cond
|
||||
((null? l) l)
|
||||
((symbol? (car l))
|
||||
(cons (symbol->string (car l))
|
||||
(stringify (cdr l))))
|
||||
((number? (car l))
|
||||
(cons (number->string (car l))
|
||||
(stringify (cdr l))))
|
||||
((vector? (car l))
|
||||
(cons (car l)
|
||||
(stringify (cdr l))))
|
||||
((list? (car l))
|
||||
(cons (stringify (car l)) (stringify (cdr l))))
|
||||
(else (error "oops"))))
|
||||
|
||||
|
||||
(define (dispatch world)
|
||||
(cond
|
||||
((osc-msg "/join-game")
|
||||
(printf "a new plant has joined the game~n")
|
||||
; send a plant update for the new player
|
||||
(update-plant world) )
|
||||
|
||||
((osc-msg "/plant")
|
||||
(printf "add plant message recieved : ~a~n" (osc 0))
|
||||
(send world set-entity (osc 0) (make-object plant%
|
||||
(vector (osc 1) (osc 2) (osc 3))
|
||||
(vector (osc 4) (osc 5) (osc 6))
|
||||
(stringify (eval-string (osc 7))))))
|
||||
|
||||
((osc-msg "/flower")
|
||||
;(printf "flower change msg recieved~n")
|
||||
(send (send world get-entity (osc 0)) flower-update
|
||||
(osc 1) (vector (osc 2) (osc 3) (osc 4))))
|
||||
|
||||
((osc-msg "/destroy-plant")
|
||||
(printf "destroy plant message recieved...~n")
|
||||
(send world destroy-entity (osc 0)))
|
||||
|
||||
((osc-msg "/spray")
|
||||
; (printf "destroy plant message recieved...~n")
|
||||
(let ((e (send world get-entity (osc 0))))
|
||||
; it's possible to get spray events before the
|
||||
; plant has been created...
|
||||
(when e
|
||||
(send e spray world (osc 1) (osc 2)))))))
|
||||
|
||||
(define/public (join-game world)
|
||||
(printf "sending join-game~n")
|
||||
(osc-send "/join-game" "" (list))
|
||||
(set! wait-till (+ (time) 2))
|
||||
(set! waiting #t))
|
||||
|
||||
(define/public (update-plant world)
|
||||
(printf "sending /plant...~n")
|
||||
|
||||
(let* ((my-plant (send world get-entity (send world get-my-id)))
|
||||
(pos (send my-plant get-pos))
|
||||
(col (send my-plant get-col))
|
||||
(desc-str (format "'~a" (send my-plant get-desc))))
|
||||
|
||||
(osc-send "/plant" "iffffffs" (list (send world get-my-id)
|
||||
(vx pos) (vy pos) (vz pos)
|
||||
(vx col) (vy col) (vz col)
|
||||
desc-str))))
|
||||
|
||||
(define/public (destroy-plant world id)
|
||||
(printf "sending destroy plant...~n")
|
||||
(osc-send "/destroy-plant" "i" (list id))
|
||||
(send world destroy-entity id))
|
||||
|
||||
(define/public (spray world id flower type)
|
||||
(osc-send "/spray" "iii" (list id flower type))
|
||||
(send (send world get-entity id) spray world flower type))
|
||||
|
||||
(define/public (flower-update world id flower col)
|
||||
(osc-send "/flower" "iifff" (list id flower (vx col) (vy col) (vz col)))
|
||||
(send (send world get-entity id) flower-update flower col))
|
||||
|
||||
|
||||
(define/public (update world)
|
||||
; wait for all other players to register their plants
|
||||
(when (and waiting (< wait-till (time)))
|
||||
(set! waiting #f)
|
||||
(send world make-my-plant)
|
||||
(update-plant world))
|
||||
(dispatch world))
|
||||
|
||||
|
||||
(super-new)))
|
||||
|
||||
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
; things needed for the set
|
||||
|
||||
(define (build-shells obj count dist col)
|
||||
(when (not (zero? count))
|
||||
(with-state
|
||||
(parent obj)
|
||||
(colour col)
|
||||
(let ((shell (build-copy obj)))
|
||||
(with-primitive shell
|
||||
(pdata-map!
|
||||
(lambda (p n)
|
||||
(vadd p (vmul (vector 0 1 0) dist)))
|
||||
"p" "n"))
|
||||
(build-shells shell (- count 1) dist (vmul col 1))))))
|
||||
|
||||
(define (build-shrub p n)
|
||||
(with-state
|
||||
(translate p)
|
||||
(colour (vector 0.5 0.7 0.4))
|
||||
(let ((shrub (build-ribbon (+ (random 10) 2))))
|
||||
(with-primitive shrub
|
||||
(pdata-index-map!
|
||||
(lambda (i p)
|
||||
(let ((j (* 0.2 (* i 0.2))))
|
||||
(vector (* (crndf) j) (* i 0.2) (* (crndf) j))))
|
||||
"p")
|
||||
(pdata-index-map!
|
||||
(lambda (i w)
|
||||
(* (/ 1 (+ i 1)) 0.2))
|
||||
"w")))))
|
||||
|
||||
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
(clear)
|
||||
|
||||
(clear-texture-cache)
|
||||
(clear-colour (vector 0 0 0))
|
||||
(define l (make-light 'spot 'free))
|
||||
(light-diffuse 0 (vector 0 0 0))
|
||||
(light-diffuse l (vector 1 1 1))
|
||||
(light-position l (vector 0 9 0))
|
||||
(light-direction l (vector 0 -1 0))
|
||||
(light-spot-angle l 55)
|
||||
(light-spot-exponent l 1)
|
||||
|
||||
(define l2 (make-light 'point 'free))
|
||||
(light-position l2 (vector 0 10 0))
|
||||
(light-diffuse l2 (vector 0.4 0.5 0.9))
|
||||
|
||||
(with-state
|
||||
(backfacecull 0)
|
||||
(texture (load-texture "textures/car-base.png"))
|
||||
(load-primitive "meshes/car.obj"))
|
||||
|
||||
(define terrain (with-state
|
||||
(texture (load-texture "textures/ground-base.png"))
|
||||
(load-primitive "meshes/ground.obj")))
|
||||
|
||||
|
||||
;(define grassmap (load-primitive "textures/set-grass.png"))
|
||||
|
||||
(define (tx->pi tx)
|
||||
(+ (vy tx) (* (vx tx) (pixels-width))))
|
||||
|
||||
(with-primitive terrain
|
||||
(poly-for-each-tri-sample
|
||||
(lambda (indices bary)
|
||||
(let ((tc (vadd
|
||||
(vmul (pdata-ref "t" (list-ref indices 0)) (vx bary))
|
||||
(vmul (pdata-ref "t" (list-ref indices 1)) (vy bary))
|
||||
(vmul (pdata-ref "t" (list-ref indices 2)) (vz bary)))))
|
||||
(when #t #;(> (va (with-primitive grassmap (pdata-ref "c" (tx->pi tc)))) 0.5)
|
||||
(build-shrub (vadd
|
||||
(vmul (pdata-ref "p" (list-ref indices 0)) (vx bary))
|
||||
(vmul (pdata-ref "p" (list-ref indices 1)) (vy bary))
|
||||
(vmul (pdata-ref "p" (list-ref indices 2)) (vz bary))) (vector 0 1 0)))))
|
||||
1))
|
||||
|
||||
(define shell0 (build-copy terrain))
|
||||
|
||||
(with-primitive shell0
|
||||
(pdata-copy "t" "t1")
|
||||
(pdata-map!
|
||||
(lambda (t)
|
||||
(vmul t 4))
|
||||
"t"))
|
||||
|
||||
(with-state
|
||||
(multitexture 0 (load-texture "textures/shell.png"))
|
||||
(multitexture 1 (load-texture "textures/ground-grassmap2.png"))
|
||||
(build-shells shell0 4 0.1 (vector 1 1 1)))
|
||||
|
||||
(define buildings (with-state
|
||||
(backfacecull 0)
|
||||
(texture (load-texture "textures/building-base.png"))
|
||||
(load-primitive "meshes/buildings.obj")))
|
||||
|
||||
(with-state
|
||||
(multitexture 0 (load-texture "textures/shell.png"))
|
||||
(multitexture 1 (load-texture "textures/building-grassmap.png"))
|
||||
(build-shells buildings 4 0.04 (vector 1 1 1)))
|
||||
|
||||
|
||||
(hint-depth-sort)
|
||||
|
||||
(define w (make-object world% 1))
|
||||
(define n (make-object network-dispatch%))
|
||||
|
||||
(send n join-game w)
|
||||
|
||||
(define (animate)
|
||||
(send n update w)
|
||||
(send w update n))
|
||||
|
||||
(every-frame (animate))
|
||||
|
||||
|
12
hayfever/meshes/buildings.mtl
Normal file
|
@ -0,0 +1,12 @@
|
|||
# Blender3D MTL File: set-2.blend
|
||||
# Material Count: 1
|
||||
newmtl None_building-base.png
|
||||
Ns 0
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.8 0.8 0.8
|
||||
Ks 0.8 0.8 0.8
|
||||
d 1
|
||||
illum 2
|
||||
map_Kd building-base.png
|
||||
|
||||
|
836
hayfever/meshes/buildings.obj
Normal file
|
@ -0,0 +1,836 @@
|
|||
# Blender3D v245 OBJ File: set-2.blend
|
||||
# www.blender3d.org
|
||||
mtllib buildings.mtl
|
||||
o Cube.001_Cube
|
||||
v 10.568295 -0.726191 -7.363354
|
||||
v 10.568295 -0.726192 -2.423897
|
||||
v 8.568294 -0.726192 -2.423899
|
||||
v 8.568295 -0.726192 -7.363352
|
||||
v 10.568296 1.051739 -6.422636
|
||||
v 10.568293 1.273808 -2.423893
|
||||
v 8.568295 1.273808 -2.164847
|
||||
v 8.568295 1.273808 -6.530418
|
||||
v 8.568294 1.273806 -1.128821
|
||||
v 8.568291 -0.726194 -1.128823
|
||||
v 10.568291 1.273806 -1.128817
|
||||
v 10.568293 -0.726194 -1.128821
|
||||
v 9.887153 2.715447 -1.128815
|
||||
v 8.568294 2.672285 -1.128818
|
||||
v 10.568293 2.342384 -2.423891
|
||||
v 8.568294 2.715450 -2.024298
|
||||
v -5.248294 -0.756044 10.960698
|
||||
v -10.178847 -0.756044 10.686761
|
||||
v -10.120747 -0.756044 9.641026
|
||||
v -5.190193 -0.756044 9.914964
|
||||
v -6.766133 4.182114 10.876369
|
||||
v -9.689278 4.111638 10.713960
|
||||
v -10.120746 4.182114 9.641025
|
||||
v -6.064506 4.182114 9.866387
|
||||
v -11.006251 4.182114 9.591825
|
||||
v -11.006252 -0.756044 9.591826
|
||||
v -10.569792 4.182114 10.235881
|
||||
v -11.064353 -0.756044 10.637561
|
||||
v -10.066323 4.182114 8.661508
|
||||
v -10.951829 4.182114 8.612309
|
||||
v -10.951829 -0.756044 8.612309
|
||||
v -10.066323 -0.756044 8.661508
|
||||
v -10.066323 2.911450 8.661508
|
||||
v -10.066323 4.198201 8.661508
|
||||
v -10.951829 2.911450 8.612309
|
||||
v -10.951829 4.198201 8.612309
|
||||
v -9.925598 4.526523 6.128698
|
||||
v -10.811104 4.198201 6.079499
|
||||
v -10.811105 2.911450 6.079499
|
||||
v -9.925598 2.911450 6.128698
|
||||
v -9.833617 2.911450 4.473202
|
||||
v -9.867198 4.198201 5.077632
|
||||
v -10.724578 2.911450 4.522182
|
||||
v -10.771517 4.198201 5.367021
|
||||
v -9.807529 -0.590291 4.003661
|
||||
v -10.693035 -0.590291 3.954462
|
||||
v -10.811105 -0.590291 6.079500
|
||||
v -9.925598 -0.590291 6.128698
|
||||
v -13.131713 -0.533763 -8.983381
|
||||
v -13.131713 -0.533763 -4.407258
|
||||
v -14.209670 -0.533763 -4.407259
|
||||
v -14.209670 -0.533763 -8.983382
|
||||
v -13.131712 4.042361 -8.983381
|
||||
v -13.131713 4.042361 -4.518392
|
||||
v -14.209670 3.674810 -4.407259
|
||||
v -14.209670 3.989019 -8.983382
|
||||
v -14.209670 -0.533763 -10.089749
|
||||
v -13.856647 4.042361 -9.787442
|
||||
v -13.131713 -0.533763 -10.089748
|
||||
v -13.131712 4.042361 -10.089747
|
||||
v -10.723534 4.042361 -9.894854
|
||||
v -10.948980 4.042361 -8.983381
|
||||
v -10.723534 -0.533763 -10.089748
|
||||
v -10.723534 -0.533763 -8.983381
|
||||
v -10.723534 -0.568558 -8.983381
|
||||
v -10.723533 2.701798 -8.983381
|
||||
v -10.723534 -0.568558 -10.089748
|
||||
v -10.723533 2.701798 -10.089747
|
||||
v -10.128723 2.701791 -10.089747
|
||||
v -9.811058 2.701791 -8.983381
|
||||
v -9.811060 -0.568565 -10.089748
|
||||
v -9.811060 -0.568565 -8.983381
|
||||
v -9.811058 1.304780 -8.983381
|
||||
v -9.811060 -0.574798 -8.983381
|
||||
v -9.811060 -0.574798 -10.089748
|
||||
v -9.811058 1.304780 -10.089747
|
||||
v -8.173998 1.304751 -8.983381
|
||||
v -8.139668 1.304751 -9.870808
|
||||
v -7.773963 -0.574827 -10.089748
|
||||
v -7.773963 -0.574827 -8.983381
|
||||
v -13.131712 4.042362 -7.174145
|
||||
v -14.209670 4.042362 -7.174145
|
||||
v -14.209670 4.042361 -4.803533
|
||||
v -13.131713 4.042361 -4.803531
|
||||
v -13.364929 5.273930 -7.174145
|
||||
v -13.131713 5.273930 -5.099784
|
||||
v -14.209670 5.029894 -4.803533
|
||||
v -14.209670 5.014520 -7.174145
|
||||
vt 0.924118 0.972332 0.0
|
||||
vt 0.924018 0.871925 0.0
|
||||
vt 0.990761 0.871880 0.0
|
||||
vt 0.924118 0.972332 0.0
|
||||
vt 0.990761 0.871880 0.0
|
||||
vt 0.982538 1.000000 0.0
|
||||
vt 0.917383 0.825620 0.0
|
||||
vt 0.917809 0.697545 0.0
|
||||
vt 0.952081 0.798017 0.0
|
||||
vt 0.917809 0.697545 0.0
|
||||
vt 0.945126 0.697628 0.0
|
||||
vt 0.952081 0.798017 0.0
|
||||
vt 0.560014 0.730063 0.0
|
||||
vt 0.559810 0.663885 0.0
|
||||
vt 0.587384 0.729980 0.0
|
||||
vt 0.559810 0.663885 0.0
|
||||
vt 0.587613 0.663801 0.0
|
||||
vt 0.587384 0.729980 0.0
|
||||
vt 0.424390 0.939951 0.0
|
||||
vt 0.424005 0.811880 0.0
|
||||
vt 0.452192 0.939866 0.0
|
||||
vt 0.424005 0.811880 0.0
|
||||
vt 0.458754 0.811848 0.0
|
||||
vt 0.452192 0.939866 0.0
|
||||
vt 0.266098 0.394095 0.0
|
||||
vt 0.959092 0.395644 0.0
|
||||
vt 0.352750 0.757354 0.0
|
||||
vt 0.959092 0.395644 0.0
|
||||
vt 0.936808 0.767476 0.0
|
||||
vt 0.352750 0.757354 0.0
|
||||
vt 0.288061 0.586267 0.0
|
||||
vt 0.288446 0.711233 0.0
|
||||
vt 0.288290 0.660596 0.0
|
||||
vt 0.288061 0.586267 0.0
|
||||
vt 0.288290 0.660596 0.0
|
||||
vt 0.288085 0.594248 0.0
|
||||
vt 0.281942 0.586267 0.0
|
||||
vt 0.278945 0.714403 0.0
|
||||
vt 0.270828 0.586334 0.0
|
||||
vt 0.278945 0.714403 0.0
|
||||
vt 0.270917 0.714409 0.0
|
||||
vt 0.270828 0.586334 0.0
|
||||
vt 0.558668 0.780575 0.0
|
||||
vt 0.549428 0.652855 0.0
|
||||
vt 0.560014 0.730063 0.0
|
||||
vt 0.549428 0.652855 0.0
|
||||
vt 0.559810 0.663885 0.0
|
||||
vt 0.560014 0.730063 0.0
|
||||
vt 0.650902 0.542311 0.0
|
||||
vt 0.650807 0.414227 0.0
|
||||
vt 0.701750 0.414200 0.0
|
||||
vt 0.650902 0.542311 0.0
|
||||
vt 0.701750 0.414200 0.0
|
||||
vt 0.701839 0.542275 0.0
|
||||
vt 0.696212 0.770123 0.0
|
||||
vt 0.696259 0.370450 0.0
|
||||
vt 0.882008 0.757157 0.0
|
||||
vt 0.696259 0.370450 0.0
|
||||
vt 0.925069 0.355605 0.0
|
||||
vt 0.882008 0.757157 0.0
|
||||
vt 0.105829 0.736519 0.0
|
||||
vt 0.142023 0.240829 0.0
|
||||
vt 0.625248 0.779788 0.0
|
||||
vt 0.142023 0.240829 0.0
|
||||
vt 0.674742 0.210178 0.0
|
||||
vt 0.625248 0.779788 0.0
|
||||
vt 0.588605 0.414200 0.0
|
||||
vt 0.619754 0.414295 0.0
|
||||
vt 0.619007 0.656331 0.0
|
||||
vt 0.588605 0.414200 0.0
|
||||
vt 0.619007 0.656331 0.0
|
||||
vt 0.587858 0.656236 0.0
|
||||
vt 0.759429 0.108695 0.0
|
||||
vt 0.812244 0.108534 0.0
|
||||
vt 0.813192 0.307140 0.0
|
||||
vt 0.759429 0.108695 0.0
|
||||
vt 0.813192 0.307140 0.0
|
||||
vt 0.760117 0.350729 0.0
|
||||
vt 0.279109 0.843617 0.0
|
||||
vt 0.289638 0.646185 0.0
|
||||
vt 0.515291 0.628690 0.0
|
||||
vt 0.279109 0.843617 0.0
|
||||
vt 0.515291 0.628690 0.0
|
||||
vt 0.477715 0.845979 0.0
|
||||
vt 0.709684 0.974575 0.0
|
||||
vt 0.476596 0.965308 0.0
|
||||
vt 0.732855 0.641381 0.0
|
||||
vt 0.476596 0.965308 0.0
|
||||
vt 0.475597 0.641571 0.0
|
||||
vt 0.732855 0.641381 0.0
|
||||
vt 0.759604 0.108694 0.0
|
||||
vt 0.851392 0.070671 0.0
|
||||
vt 0.812244 0.108534 0.0
|
||||
vt 0.759604 0.108694 0.0
|
||||
vt 0.812244 0.108534 0.0
|
||||
vt 0.759429 0.108695 0.0
|
||||
vt 0.282118 0.586267 0.0
|
||||
vt 0.282213 0.617152 0.0
|
||||
vt 0.282038 0.617153 0.0
|
||||
vt 0.282118 0.586267 0.0
|
||||
vt 0.282038 0.617153 0.0
|
||||
vt 0.281942 0.586268 0.0
|
||||
vt 0.233516 0.242307 0.0
|
||||
vt 0.141447 0.242027 0.0
|
||||
vt 0.194187 0.242187 0.0
|
||||
vt 0.141447 0.242027 0.0
|
||||
vt 0.141271 0.242026 0.0
|
||||
vt 0.194187 0.242187 0.0
|
||||
vt 0.305783 0.145568 0.0
|
||||
vt 0.319423 0.931969 0.0
|
||||
vt 0.729049 0.918960 0.0
|
||||
vt 0.305783 0.145568 0.0
|
||||
vt 0.729049 0.918960 0.0
|
||||
vt 0.737121 0.089909 0.0
|
||||
vt 0.858535 0.589035 0.0
|
||||
vt 0.889683 0.589130 0.0
|
||||
vt 0.889349 0.697545 0.0
|
||||
vt 0.858535 0.589035 0.0
|
||||
vt 0.889349 0.697545 0.0
|
||||
vt 0.858200 0.697450 0.0
|
||||
vt 0.759296 0.000280 0.0
|
||||
vt 0.851191 0.000000 0.0
|
||||
vt 0.851392 0.070671 0.0
|
||||
vt 0.759296 0.000280 0.0
|
||||
vt 0.851392 0.070671 0.0
|
||||
vt 0.759604 0.108694 0.0
|
||||
vt 0.889683 0.589153 0.0
|
||||
vt 0.920832 0.589131 0.0
|
||||
vt 0.889732 0.659824 0.0
|
||||
vt 0.920832 0.589131 0.0
|
||||
vt 0.920907 0.697545 0.0
|
||||
vt 0.889732 0.659824 0.0
|
||||
vt 0.288068 1.041047 0.0
|
||||
vt 0.061115 1.058961 0.0
|
||||
vt 0.061622 0.743307 0.0
|
||||
vt 0.288068 1.041047 0.0
|
||||
vt 0.061622 0.743307 0.0
|
||||
vt 0.316845 0.730653 0.0
|
||||
vt 0.589264 0.663219 0.0
|
||||
vt 0.619382 0.787866 0.0
|
||||
vt 0.606761 0.752090 0.0
|
||||
vt 0.589264 0.663219 0.0
|
||||
vt 0.606761 0.752090 0.0
|
||||
vt 0.589076 0.662263 0.0
|
||||
vt 0.619754 0.657286 0.0
|
||||
vt 0.589264 0.663219 0.0
|
||||
vt 0.589076 0.662263 0.0
|
||||
vt 0.619754 0.657286 0.0
|
||||
vt 0.589076 0.662263 0.0
|
||||
vt 0.619566 0.656331 0.0
|
||||
vt 0.270828 0.377618 0.0
|
||||
vt 0.142083 0.350440 0.0
|
||||
vt 0.233173 0.350718 0.0
|
||||
vt 0.142083 0.350440 0.0
|
||||
vt 0.141103 0.350437 0.0
|
||||
vt 0.233173 0.350718 0.0
|
||||
vt 0.745817 0.084074 0.0
|
||||
vt 0.757368 0.908847 0.0
|
||||
vt 0.304144 0.101658 0.0
|
||||
vt 0.757368 0.908847 0.0
|
||||
vt 0.319335 0.925698 0.0
|
||||
vt 0.304144 0.101658 0.0
|
||||
vt 0.540189 0.128470 0.0
|
||||
vt 0.571338 0.128565 0.0
|
||||
vt 0.570455 0.414690 0.0
|
||||
vt 0.540189 0.128470 0.0
|
||||
vt 0.570455 0.414690 0.0
|
||||
vt 0.539306 0.414595 0.0
|
||||
vt 0.572097 0.128076 0.0
|
||||
vt 0.700684 0.127684 0.0
|
||||
vt 0.572912 0.414200 0.0
|
||||
vt 0.700684 0.127684 0.0
|
||||
vt 0.701839 0.413827 0.0
|
||||
vt 0.572912 0.414200 0.0
|
||||
vt 0.619754 0.542333 0.0
|
||||
vt 0.650902 0.542311 0.0
|
||||
vt 0.651082 0.801647 0.0
|
||||
vt 0.619754 0.542333 0.0
|
||||
vt 0.651082 0.801647 0.0
|
||||
vt 0.625439 0.828451 0.0
|
||||
vt 0.700684 0.127684 0.0
|
||||
vt 0.572097 0.128076 0.0
|
||||
vt 0.700968 0.041583 0.0
|
||||
vt 0.572097 0.128076 0.0
|
||||
vt 0.571733 0.000000 0.0
|
||||
vt 0.700968 0.041583 0.0
|
||||
vt 0.540189 0.128470 0.0
|
||||
vt 0.540584 0.000393 0.0
|
||||
vt 0.571338 0.128565 0.0
|
||||
vt 0.540584 0.000393 0.0
|
||||
vt 0.571733 0.000488 0.0
|
||||
vt 0.571338 0.128565 0.0
|
||||
vt 0.650807 0.414227 0.0
|
||||
vt 0.650902 0.542311 0.0
|
||||
vt 0.628205 0.456195 0.0
|
||||
vt 0.650902 0.542311 0.0
|
||||
vt 0.619754 0.542333 0.0
|
||||
vt 0.628205 0.456195 0.0
|
||||
vt 0.431335 0.780963 0.0
|
||||
vt 0.558668 0.780575 0.0
|
||||
vt 0.431430 0.811848 0.0
|
||||
vt 0.558668 0.780575 0.0
|
||||
vt 0.560249 0.806023 0.0
|
||||
vt 0.431430 0.811848 0.0
|
||||
vt 0.430940 0.653216 0.0
|
||||
vt 0.549428 0.652855 0.0
|
||||
vt 0.431335 0.780963 0.0
|
||||
vt 0.549428 0.652855 0.0
|
||||
vt 0.558668 0.780575 0.0
|
||||
vt 0.431335 0.780963 0.0
|
||||
vt 0.627773 0.326915 0.0
|
||||
vt 0.631590 0.841202 0.0
|
||||
vt 0.415066 0.817284 0.0
|
||||
vt 0.627773 0.326915 0.0
|
||||
vt 0.415066 0.817284 0.0
|
||||
vt 0.414628 0.314543 0.0
|
||||
vt 0.954908 0.089400 0.0
|
||||
vt 0.939420 0.960069 0.0
|
||||
vt 0.087043 0.942968 0.0
|
||||
vt 0.954908 0.089400 0.0
|
||||
vt 0.087043 0.942968 0.0
|
||||
vt 0.081315 0.071874 0.0
|
||||
vt 0.540189 0.128470 0.0
|
||||
vt 0.411354 0.128077 0.0
|
||||
vt 0.411749 0.000000 0.0
|
||||
vt 0.540189 0.128470 0.0
|
||||
vt 0.411749 0.000000 0.0
|
||||
vt 0.540584 0.000393 0.0
|
||||
vt 0.210745 0.980078 0.0
|
||||
vt 0.210831 0.874857 0.0
|
||||
vt 0.270828 0.888155 0.0
|
||||
vt 0.210745 0.980078 0.0
|
||||
vt 0.270828 0.888155 0.0
|
||||
vt 0.270742 0.993375 0.0
|
||||
vt 0.858200 0.592326 0.0
|
||||
vt 0.857879 0.697545 0.0
|
||||
vt 0.759296 0.697244 0.0
|
||||
vt 0.858200 0.592326 0.0
|
||||
vt 0.759296 0.697244 0.0
|
||||
vt 0.759617 0.592025 0.0
|
||||
vt 0.901999 0.726525 0.0
|
||||
vt 0.644392 0.732142 0.0
|
||||
vt 0.634410 0.198654 0.0
|
||||
vt 0.901999 0.726525 0.0
|
||||
vt 0.634410 0.198654 0.0
|
||||
vt 0.965081 0.191445 0.0
|
||||
vt 0.293013 0.593779 0.0
|
||||
vt 0.100763 0.586697 0.0
|
||||
vt 0.311082 0.168457 0.0
|
||||
vt 0.100763 0.586697 0.0
|
||||
vt 0.048748 0.158792 0.0
|
||||
vt 0.311082 0.168457 0.0
|
||||
vt 0.650391 0.984131 0.0
|
||||
vt 0.439362 0.965457 0.0
|
||||
vt 0.649087 0.434210 0.0
|
||||
vt 0.439362 0.965457 0.0
|
||||
vt 0.439318 0.416595 0.0
|
||||
vt 0.649087 0.434210 0.0
|
||||
vt 0.634213 0.403858 0.0
|
||||
vt 0.815281 0.378766 0.0
|
||||
vt 0.831343 0.901672 0.0
|
||||
vt 0.634213 0.403858 0.0
|
||||
vt 0.831343 0.901672 0.0
|
||||
vt 0.648464 0.934539 0.0
|
||||
vt 0.820574 0.944713 0.0
|
||||
vt 0.924010 0.967272 0.0
|
||||
vt 0.820621 0.965201 0.0
|
||||
vt 0.924010 0.967272 0.0
|
||||
vt 0.924018 0.997522 0.0
|
||||
vt 0.820621 0.965201 0.0
|
||||
vt 0.293013 0.593779 0.0
|
||||
vt 0.286373 0.750068 0.0
|
||||
vt 0.198418 0.746828 0.0
|
||||
vt 0.293013 0.593779 0.0
|
||||
vt 0.198418 0.746828 0.0
|
||||
vt 0.100763 0.586697 0.0
|
||||
vt 0.648996 0.978196 0.0
|
||||
vt 0.644392 0.732142 0.0
|
||||
vt 0.811613 0.924611 0.0
|
||||
vt 0.644392 0.732142 0.0
|
||||
vt 0.901999 0.726525 0.0
|
||||
vt 0.811613 0.924611 0.0
|
||||
vt 0.253938 0.936769 0.0
|
||||
vt 0.250270 0.740734 0.0
|
||||
vt 0.644392 0.732142 0.0
|
||||
vt 0.253938 0.936769 0.0
|
||||
vt 0.644392 0.732142 0.0
|
||||
vt 0.648996 0.978196 0.0
|
||||
vt 0.905882 0.332684 0.0
|
||||
vt 0.905968 0.227464 0.0
|
||||
vt 0.977478 0.243313 0.0
|
||||
vt 0.905882 0.332684 0.0
|
||||
vt 0.977478 0.243313 0.0
|
||||
vt 0.977391 0.348533 0.0
|
||||
vt 0.605686 0.605299 0.0
|
||||
vt 0.599046 0.761588 0.0
|
||||
vt 0.293013 0.593779 0.0
|
||||
vt 0.599046 0.761588 0.0
|
||||
vt 0.286373 0.750068 0.0
|
||||
vt 0.293013 0.593779 0.0
|
||||
vt 0.820410 0.871880 0.0
|
||||
vt 0.923785 0.894464 0.0
|
||||
vt 0.820574 0.944713 0.0
|
||||
vt 0.923785 0.894464 0.0
|
||||
vt 0.924010 0.967272 0.0
|
||||
vt 0.820574 0.944713 0.0
|
||||
vt 0.843532 0.414796 0.0
|
||||
vt 0.759296 0.351087 0.0
|
||||
vt 0.759570 0.350729 0.0
|
||||
vt 0.843532 0.414796 0.0
|
||||
vt 0.759570 0.350729 0.0
|
||||
vt 0.843806 0.414437 0.0
|
||||
vt 0.759352 0.524784 0.0
|
||||
vt 0.843532 0.414796 0.0
|
||||
vt 0.821871 0.443097 0.0
|
||||
vt 0.843532 0.414796 0.0
|
||||
vt 0.843806 0.414437 0.0
|
||||
vt 0.821871 0.443097 0.0
|
||||
vt 0.819983 0.987104 0.0
|
||||
vt 0.714144 0.986841 0.0
|
||||
vt 0.714460 0.884394 0.0
|
||||
vt 0.819983 0.987104 0.0
|
||||
vt 0.714460 0.884394 0.0
|
||||
vt 0.820299 0.884656 0.0
|
||||
vt 0.820409 0.849162 0.0
|
||||
vt 0.819983 0.987104 0.0
|
||||
vt 0.820299 0.884656 0.0
|
||||
vt 0.820409 0.849162 0.0
|
||||
vt 0.820299 0.884656 0.0
|
||||
vt 0.820410 0.848712 0.0
|
||||
vt 0.251067 0.094442 0.0
|
||||
vt 0.248460 0.939414 0.0
|
||||
vt 0.077221 0.939690 0.0
|
||||
vt 0.251067 0.094442 0.0
|
||||
vt 0.077221 0.939690 0.0
|
||||
vt 0.079828 0.094718 0.0
|
||||
vt 0.731622 0.111673 0.0
|
||||
vt 0.731384 0.006454 0.0
|
||||
vt 0.759058 0.012498 0.0
|
||||
vt 0.731622 0.111673 0.0
|
||||
vt 0.759058 0.012498 0.0
|
||||
vt 0.759296 0.117718 0.0
|
||||
vt 0.990332 0.035851 0.0
|
||||
vt 0.990759 0.174060 0.0
|
||||
vt 0.962360 0.035936 0.0
|
||||
vt 0.990759 0.174060 0.0
|
||||
vt 0.962786 0.174145 0.0
|
||||
vt 0.962360 0.035936 0.0
|
||||
vt 0.885363 0.000000 0.0
|
||||
vt 0.879356 0.105049 0.0
|
||||
vt 0.857399 0.004537 0.0
|
||||
vt 0.879356 0.105049 0.0
|
||||
vt 0.851392 0.109586 0.0
|
||||
vt 0.857399 0.004537 0.0
|
||||
vt 0.000000 0.697723 0.0
|
||||
vt 0.139312 0.639490 0.0
|
||||
vt 0.139313 0.691508 0.0
|
||||
vt 0.000000 0.697723 0.0
|
||||
vt 0.139313 0.691508 0.0
|
||||
vt 0.000291 0.691084 0.0
|
||||
vt 0.731622 0.111673 0.0
|
||||
vt 0.702077 0.105220 0.0
|
||||
vt 0.731384 0.006454 0.0
|
||||
vt 0.702077 0.105220 0.0
|
||||
vt 0.701839 0.000000 0.0
|
||||
vt 0.731384 0.006454 0.0
|
||||
vt 0.905882 0.158272 0.0
|
||||
vt 0.879356 0.105049 0.0
|
||||
vt 0.899810 0.052989 0.0
|
||||
vt 0.879356 0.105049 0.0
|
||||
vt 0.885363 0.000000 0.0
|
||||
vt 0.899810 0.052989 0.0
|
||||
vt 0.000321 0.592504 0.0
|
||||
vt 0.137536 0.534749 0.0
|
||||
vt 0.139312 0.639490 0.0
|
||||
vt 0.000321 0.592504 0.0
|
||||
vt 0.139312 0.639490 0.0
|
||||
vt 0.000000 0.697723 0.0
|
||||
vt 0.140579 0.187417 0.0
|
||||
vt 0.002107 0.006639 0.0
|
||||
vt 0.141103 0.104313 0.0
|
||||
vt 0.002107 0.006639 0.0
|
||||
vt 0.002398 0.000000 0.0
|
||||
vt 0.141103 0.104313 0.0
|
||||
vt 0.877681 0.083208 0.0
|
||||
vt 0.899329 0.808351 0.0
|
||||
vt 0.173096 0.801416 0.0
|
||||
vt 0.877681 0.083208 0.0
|
||||
vt 0.173096 0.801416 0.0
|
||||
vt 0.133391 0.106765 0.0
|
||||
vt 0.002107 0.006639 0.0
|
||||
vt 0.140579 0.187417 0.0
|
||||
vt 0.000321 0.592504 0.0
|
||||
vt 0.140579 0.187417 0.0
|
||||
vt 0.137536 0.534749 0.0
|
||||
vt 0.000321 0.592504 0.0
|
||||
vt 0.886058 0.505060 0.0
|
||||
vt 0.851838 0.586246 0.0
|
||||
vt 0.879356 0.105049 0.0
|
||||
vt 0.886058 0.505060 0.0
|
||||
vt 0.879356 0.105049 0.0
|
||||
vt 0.905882 0.158272 0.0
|
||||
vt 0.703405 0.691091 0.0
|
||||
vt 0.702077 0.105220 0.0
|
||||
vt 0.731622 0.111673 0.0
|
||||
vt 0.703405 0.691091 0.0
|
||||
vt 0.731622 0.111673 0.0
|
||||
vt 0.732950 0.697545 0.0
|
||||
vt 0.963664 0.823954 0.0
|
||||
vt 0.974059 0.586348 0.0
|
||||
vt 0.999862 0.742949 0.0
|
||||
vt 0.974059 0.586348 0.0
|
||||
vt 0.999265 0.586246 0.0
|
||||
vt 0.999862 0.742949 0.0
|
||||
vt 0.000223 0.935432 0.0
|
||||
vt 0.000000 0.697832 0.0
|
||||
vt 0.030249 0.935340 0.0
|
||||
vt 0.000000 0.697832 0.0
|
||||
vt 0.040755 0.697723 0.0
|
||||
vt 0.030249 0.935340 0.0
|
||||
vt 0.308962 0.781811 0.0
|
||||
vt 0.308239 0.547925 0.0
|
||||
vt 0.637092 0.749080 0.0
|
||||
vt 0.308239 0.547925 0.0
|
||||
vt 0.626640 0.546953 0.0
|
||||
vt 0.637092 0.749080 0.0
|
||||
vt 1.000000 0.823645 0.0
|
||||
vt 0.963539 0.823783 0.0
|
||||
vt 0.963664 0.823954 0.0
|
||||
vt 1.000000 0.823645 0.0
|
||||
vt 0.963664 0.823954 0.0
|
||||
vt 0.999862 0.742949 0.0
|
||||
vt 0.229746 0.874737 0.0
|
||||
vt 0.230499 0.637119 0.0
|
||||
vt 0.270828 0.718168 0.0
|
||||
vt 0.229746 0.874737 0.0
|
||||
vt 0.270828 0.718168 0.0
|
||||
vt 0.269117 0.874857 0.0
|
||||
vt 0.174193 0.636947 0.0
|
||||
vt 0.230499 0.637119 0.0
|
||||
vt 0.229746 0.874737 0.0
|
||||
vt 0.174193 0.636947 0.0
|
||||
vt 0.229746 0.874737 0.0
|
||||
vt 0.173440 0.874566 0.0
|
||||
vt 0.447815 0.415114 0.0
|
||||
vt 0.448548 0.652743 0.0
|
||||
vt 0.412087 0.652855 0.0
|
||||
vt 0.447815 0.415114 0.0
|
||||
vt 0.412087 0.652855 0.0
|
||||
vt 0.411354 0.415225 0.0
|
||||
vt 0.906078 0.137835 0.0
|
||||
vt 0.962360 0.138007 0.0
|
||||
vt 0.905882 0.173974 0.0
|
||||
vt 0.962360 0.138007 0.0
|
||||
vt 0.962164 0.174146 0.0
|
||||
vt 0.905882 0.173974 0.0
|
||||
vt 0.799296 0.826255 0.0
|
||||
vt 0.782184 0.599419 0.0
|
||||
vt 0.926854 0.607007 0.0
|
||||
vt 0.799296 0.826255 0.0
|
||||
vt 0.926854 0.607007 0.0
|
||||
vt 0.915028 0.832325 0.0
|
||||
vt 0.958164 0.586190 0.0
|
||||
vt 0.906558 0.586246 0.0
|
||||
vt 0.905882 0.348619 0.0
|
||||
vt 0.958164 0.586190 0.0
|
||||
vt 0.905882 0.348619 0.0
|
||||
vt 0.963539 0.348533 0.0
|
||||
vt 0.805287 0.515313 0.0
|
||||
vt 0.829222 0.771028 0.0
|
||||
vt 0.278199 0.752081 0.0
|
||||
vt 0.805287 0.515313 0.0
|
||||
vt 0.278199 0.752081 0.0
|
||||
vt 0.181829 0.493876 0.0
|
||||
vt 0.906825 0.000000 0.0
|
||||
vt 0.956716 0.026403 0.0
|
||||
vt 0.906078 0.137835 0.0
|
||||
vt 0.956716 0.026403 0.0
|
||||
vt 0.962360 0.138007 0.0
|
||||
vt 0.906078 0.137835 0.0
|
||||
vt 0.153388 0.515844 0.0
|
||||
vt 0.428825 0.501519 0.0
|
||||
vt 0.147277 0.813547 0.0
|
||||
vt 0.428825 0.501519 0.0
|
||||
vt 0.422259 0.826460 0.0
|
||||
vt 0.147277 0.813547 0.0
|
||||
vt 0.587613 0.652319 0.0
|
||||
vt 0.448548 0.652743 0.0
|
||||
vt 0.586880 0.414690 0.0
|
||||
vt 0.448548 0.652743 0.0
|
||||
vt 0.447815 0.415114 0.0
|
||||
vt 0.586880 0.414690 0.0
|
||||
vn -0.293553 0.955923 -0.006199
|
||||
vn -0.214429 0.976442 0.024108
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 0.000001 0.000000 -1.000000
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn -0.000001 0.000000 1.000000
|
||||
vn 0.209503 0.228687 0.950690
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.976598 0.184935 -0.109797
|
||||
vn 0.776908 -0.629614 0.000000
|
||||
vn -0.447214 0.894427 0.000000
|
||||
vn -0.177041 0.721598 0.669293
|
||||
vn -0.000000 1.000000 0.000000
|
||||
vn -0.049402 0.998345 -0.029435
|
||||
vn 0.977393 0.208021 0.037810
|
||||
vn 0.981593 0.190986 0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn -0.000014 -1.000000 0.000000
|
||||
vn 0.129883 0.000000 -0.991529
|
||||
vn 0.000002 0.115702 -0.993284
|
||||
vn 0.000018 1.000000 -0.000000
|
||||
vn 0.000017 1.000000 0.000001
|
||||
vn 0.939000 0.213518 -0.269610
|
||||
vn 0.000002 0.000001 -1.000000
|
||||
vn 0.447214 0.000000 -0.894427
|
||||
vn -0.000008 -1.000000 0.000000
|
||||
vn 0.000012 1.000000 0.000000
|
||||
vn 0.000008 1.000000 -0.000002
|
||||
vn 0.958063 0.161121 0.236971
|
||||
vn 1.000000 0.000001 0.000000
|
||||
vn -1.000000 0.000000 -0.000007
|
||||
vn 0.707107 0.000000 -0.707107
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn 0.080594 0.042413 -0.995844
|
||||
vn -0.384885 0.000000 -0.922964
|
||||
vn 0.000001 0.065918 -0.997825
|
||||
vn -0.049375 0.997788 0.044516
|
||||
vn -0.913699 0.096565 -0.394753
|
||||
vn 0.094365 0.024170 0.995244
|
||||
vn -0.055475 0.000000 0.998460
|
||||
vn -0.055474 0.000000 0.998460
|
||||
vn 0.998460 0.000000 0.055475
|
||||
vn -0.998460 -0.000000 -0.055476
|
||||
vn -0.054190 0.159325 -0.985738
|
||||
vn 0.054981 0.133100 -0.989576
|
||||
vn -0.049724 0.423574 -0.904496
|
||||
vn -0.259706 0.523372 -0.811563
|
||||
vn -0.346641 0.937800 -0.019260
|
||||
vn -0.096531 0.948519 -0.301653
|
||||
vn -0.998460 0.000001 -0.055477
|
||||
vn -0.998460 0.000001 -0.055476
|
||||
vn 0.998460 0.000000 0.055477
|
||||
vn 0.998460 -0.000001 0.055475
|
||||
vn -0.998460 0.000000 -0.055475
|
||||
vn -0.998460 0.000001 -0.055475
|
||||
vn -0.350800 0.930967 0.101188
|
||||
vn 0.000000 0.000000 0.000000
|
||||
vn 0.055475 0.000000 -0.998460
|
||||
vn 0.998460 -0.000000 0.055476
|
||||
vn -0.821066 0.127490 0.556415
|
||||
vn -0.998460 0.000000 -0.055474
|
||||
vn 0.056628 0.997480 0.042748
|
||||
vn -0.474075 0.042766 0.879445
|
||||
vn -0.055268 0.086448 0.994722
|
||||
vn 0.794425 0.253606 0.551882
|
||||
vn 0.983123 0.174602 0.054622
|
||||
vn 0.055474 -0.000000 -0.998460
|
||||
vn -0.028298 0.996641 0.076845
|
||||
vn 0.139603 0.968627 -0.205602
|
||||
vn -0.032672 0.998307 0.048122
|
||||
vn -0.128450 0.000002 -0.991716
|
||||
vn -0.177871 0.095484 -0.979410
|
||||
vn -1.000000 -0.000001 -0.000002
|
||||
vn 1.000000 -0.000000 0.000001
|
||||
vn 0.852738 0.402896 0.332435
|
||||
vn -0.000002 -0.000002 1.000000
|
||||
vn -0.000003 -0.000002 1.000000
|
||||
vn -0.000001 -0.000001 1.000000
|
||||
vn -0.000000 -1.000000 -0.000001
|
||||
vn 1.000000 0.000001 0.000001
|
||||
vn -1.000000 0.000001 -0.000002
|
||||
vn -0.000001 0.467678 -0.883899
|
||||
vn 0.092045 0.382826 -0.919223
|
||||
vn -1.000000 0.000001 -0.000000
|
||||
vn 1.000000 -0.000001 -0.000000
|
||||
vn 0.113121 0.992053 -0.055093
|
||||
usemtl None_building-base.png
|
||||
s off
|
||||
f 85/1/1 88/2/1 87/3/1
|
||||
f 85/4/2 87/5/2 86/6/2
|
||||
f 81/7/3 82/8/3 85/9/3
|
||||
f 82/10/4 88/11/4 85/12/4
|
||||
f 82/13/5 83/14/5 88/15/5
|
||||
f 83/16/5 87/17/5 88/18/5
|
||||
f 83/19/6 84/20/6 87/21/6
|
||||
f 84/22/7 86/23/7 87/24/7
|
||||
f 84/25/8 81/26/8 86/27/8
|
||||
f 81/28/9 85/29/9 86/30/9
|
||||
f 54/31/10 53/32/10 81/33/10
|
||||
f 54/34/11 81/35/11 84/36/11
|
||||
f 55/37/12 54/38/12 83/39/12
|
||||
f 54/40/13 84/41/13 83/42/13
|
||||
f 56/43/5 55/44/5 82/45/5
|
||||
f 55/46/5 83/47/5 82/48/5
|
||||
f 53/49/14 56/50/14 82/51/14
|
||||
f 53/52/13 82/53/13 81/54/13
|
||||
f 77/55/15 80/56/15 78/57/15
|
||||
f 80/58/16 79/59/16 78/60/16
|
||||
f 73/61/17 74/62/17 77/63/17
|
||||
f 74/64/17 80/65/17 77/66/17
|
||||
f 74/67/18 75/68/18 79/69/18
|
||||
f 74/70/18 79/71/18 80/72/18
|
||||
f 75/73/19 76/74/19 78/75/19
|
||||
f 75/76/20 78/77/20 79/78/20
|
||||
f 76/79/21 73/80/21 77/81/21
|
||||
f 76/82/22 77/83/22 78/84/22
|
||||
f 69/85/23 70/86/23 76/87/23
|
||||
f 70/88/8 73/89/8 76/90/8
|
||||
f 71/91/24 69/92/24 76/93/24
|
||||
f 71/94/25 76/95/25 75/96/25
|
||||
f 72/97/5 71/98/5 75/99/5
|
||||
f 72/100/5 75/101/5 74/102/5
|
||||
f 70/103/17 72/104/17 73/105/17
|
||||
f 72/106/17 74/107/17 73/108/17
|
||||
f 66/109/17 65/110/17 72/111/17
|
||||
f 66/112/17 72/113/17 70/114/17
|
||||
f 65/115/26 67/116/26 71/117/26
|
||||
f 65/118/26 71/119/26 72/120/26
|
||||
f 67/121/3 68/122/3 69/123/3
|
||||
f 67/124/3 69/125/3 71/126/3
|
||||
f 68/127/27 66/128/27 69/129/27
|
||||
f 66/130/28 70/131/28 69/132/28
|
||||
f 61/133/29 62/134/29 66/135/29
|
||||
f 61/136/30 66/137/30 68/138/30
|
||||
f 63/139/31 61/140/31 68/141/31
|
||||
f 63/142/32 68/143/32 67/144/32
|
||||
f 64/145/5 63/146/5 67/147/5
|
||||
f 64/148/5 67/149/5 65/150/5
|
||||
f 62/151/17 64/152/17 66/153/17
|
||||
f 64/154/17 65/155/17 66/156/17
|
||||
f 53/157/17 49/158/17 62/159/17
|
||||
f 49/160/17 64/161/17 62/162/17
|
||||
f 49/163/33 59/164/33 63/165/33
|
||||
f 49/166/33 63/167/33 64/168/33
|
||||
f 59/169/3 60/170/3 63/171/3
|
||||
f 60/172/34 61/173/34 63/174/34
|
||||
f 60/175/13 53/176/13 62/177/13
|
||||
f 60/178/13 62/179/13 61/180/13
|
||||
f 60/181/35 59/182/35 58/183/35
|
||||
f 59/184/36 57/185/36 58/186/36
|
||||
f 49/187/33 52/188/33 59/189/33
|
||||
f 52/190/33 57/191/33 59/192/33
|
||||
f 56/193/37 53/194/37 58/195/37
|
||||
f 53/196/13 60/197/13 58/198/13
|
||||
f 52/199/5 56/200/5 57/201/5
|
||||
f 56/202/38 58/203/38 57/204/38
|
||||
f 51/205/5 55/206/5 52/207/5
|
||||
f 55/208/5 56/209/5 52/210/5
|
||||
f 50/211/39 54/212/39 55/213/39
|
||||
f 50/214/17 55/215/17 51/216/17
|
||||
f 49/217/8 53/218/8 54/219/8
|
||||
f 49/220/8 54/221/8 50/222/8
|
||||
f 49/223/33 50/224/33 51/225/33
|
||||
f 49/226/33 51/227/33 52/228/33
|
||||
f 48/229/33 47/230/33 46/231/33
|
||||
f 48/232/33 46/233/33 45/234/33
|
||||
f 40/235/40 39/236/40 47/237/40
|
||||
f 40/238/41 47/239/41 48/240/41
|
||||
f 41/241/42 40/242/42 48/243/42
|
||||
f 41/244/42 48/245/42 45/246/42
|
||||
f 39/247/43 43/248/43 47/249/43
|
||||
f 43/250/43 46/251/43 47/252/43
|
||||
f 43/253/44 41/254/44 46/255/44
|
||||
f 41/256/45 45/257/45 46/258/45
|
||||
f 42/259/46 41/260/46 43/261/46
|
||||
f 42/262/47 43/263/47 44/264/47
|
||||
f 38/265/48 37/266/48 44/267/48
|
||||
f 37/268/49 42/269/49 44/270/49
|
||||
f 39/271/50 38/272/50 44/273/50
|
||||
f 39/274/51 44/275/51 43/276/51
|
||||
f 37/277/52 40/278/52 42/279/52
|
||||
f 40/280/53 41/281/53 42/282/53
|
||||
f 34/283/42 33/284/42 40/285/42
|
||||
f 34/286/42 40/287/42 37/288/42
|
||||
f 33/289/33 35/290/33 39/291/33
|
||||
f 33/292/33 39/293/33 40/294/33
|
||||
f 35/295/54 36/296/54 39/297/54
|
||||
f 36/298/55 38/299/55 39/300/55
|
||||
f 36/301/13 34/302/13 38/303/13
|
||||
f 34/304/56 37/305/56 38/306/56
|
||||
f 30/307/40 29/308/40 34/309/40
|
||||
f 30/310/40 34/311/40 36/312/40
|
||||
f 31/313/57 30/314/57 35/315/57
|
||||
f 30/316/57 36/317/57 35/318/57
|
||||
f 32/319/58 31/320/58 35/321/58
|
||||
f 32/322/58 35/323/58 33/324/58
|
||||
f 29/325/57 32/326/57 33/327/57
|
||||
f 29/328/57 33/329/57 34/330/57
|
||||
f 23/331/59 19/332/59 32/333/59
|
||||
f 23/334/42 32/335/42 29/336/42
|
||||
f 19/337/33 26/338/33 31/339/33
|
||||
f 19/340/33 31/341/33 32/342/33
|
||||
f 26/343/43 25/344/43 31/345/43
|
||||
f 25/346/54 30/347/54 31/348/54
|
||||
f 25/349/13 23/350/13 30/351/13
|
||||
f 23/352/13 29/353/13 30/354/13
|
||||
f 28/355/60 27/356/60 25/357/60
|
||||
f 28/358/61 25/359/61 26/360/61
|
||||
f 19/361/33 18/362/33 26/363/33
|
||||
f 18/364/33 28/365/33 26/366/33
|
||||
f 22/367/62 23/368/62 27/369/62
|
||||
f 23/370/13 25/371/13 27/372/13
|
||||
f 18/373/63 22/374/63 27/375/63
|
||||
f 18/376/64 27/377/64 28/378/64
|
||||
f 21/379/65 17/380/65 24/381/65
|
||||
f 17/382/66 20/383/66 24/384/66
|
||||
f 19/385/67 23/386/67 24/387/67
|
||||
f 19/388/67 24/389/67 20/390/67
|
||||
f 17/391/41 21/392/41 18/393/41
|
||||
f 21/394/41 22/395/41 18/396/41
|
||||
f 21/397/13 24/398/13 23/399/13
|
||||
f 21/400/68 23/401/68 22/402/68
|
||||
f 17/403/33 18/404/33 19/405/33
|
||||
f 17/406/33 19/407/33 20/408/33
|
||||
f 15/409/69 16/410/69 13/411/69
|
||||
f 16/412/70 14/413/70 13/414/70
|
||||
f 6/415/71 7/416/71 15/417/71
|
||||
f 7/418/72 16/419/72 15/420/72
|
||||
f 7/421/73 9/422/73 16/423/73
|
||||
f 9/424/5 14/425/5 16/426/5
|
||||
f 11/427/74 6/428/74 15/429/74
|
||||
f 11/430/75 15/431/75 13/432/75
|
||||
f 9/433/76 11/434/76 13/435/76
|
||||
f 9/436/77 13/437/77 14/438/77
|
||||
f 12/439/76 11/440/76 9/441/76
|
||||
f 12/442/78 9/443/78 10/444/78
|
||||
f 3/445/79 2/446/79 12/447/79
|
||||
f 3/448/79 12/449/79 10/450/79
|
||||
f 2/451/80 6/452/80 12/453/80
|
||||
f 6/454/80 11/455/80 12/456/80
|
||||
f 7/457/81 3/458/81 10/459/81
|
||||
f 7/460/81 10/461/81 9/462/81
|
||||
f 5/463/82 1/464/82 4/465/82
|
||||
f 5/466/83 4/467/83 8/468/83
|
||||
f 3/469/84 7/470/84 8/471/84
|
||||
f 3/472/5 8/473/5 4/474/5
|
||||
f 1/475/85 5/476/85 2/477/85
|
||||
f 5/478/80 6/479/80 2/480/80
|
||||
f 5/481/86 8/482/86 6/483/86
|
||||
f 8/484/13 7/485/13 6/486/13
|
||||
f 1/487/33 2/488/33 4/489/33
|
||||
f 2/490/33 3/491/33 4/492/33
|
2337
hayfever/meshes/car.obj
Normal file
12
hayfever/meshes/ground.mtl
Normal file
|
@ -0,0 +1,12 @@
|
|||
# Blender3D MTL File: <memory>
|
||||
# Material Count: 1
|
||||
newmtl None_ground-base.png
|
||||
Ns 0
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.8 0.8 0.8
|
||||
Ks 0.8 0.8 0.8
|
||||
d 1
|
||||
illum 2
|
||||
map_Kd ground-base.png
|
||||
|
||||
|
2986
hayfever/meshes/ground.obj
Normal file
1044
hayfever/meshes/set.obj
Normal file
99
hayfever/set-test.scm
Normal file
|
@ -0,0 +1,99 @@
|
|||
(define (build-shells obj count dist col)
|
||||
(when (not (zero? count))
|
||||
(with-state
|
||||
(parent obj)
|
||||
(colour col)
|
||||
(let ((shell (build-copy obj)))
|
||||
(with-primitive shell
|
||||
(pdata-map!
|
||||
(lambda (p n)
|
||||
(vadd p (vmul (vector 0 1 0) dist)))
|
||||
"p" "n"))
|
||||
(build-shells shell (- count 1) dist (vmul col 1))))))
|
||||
|
||||
(define (build-shrub p n)
|
||||
(with-state
|
||||
(translate p)
|
||||
(colour (vector 0.5 0.7 0.4))
|
||||
(let ((shrub (build-ribbon (+ (random 10) 2))))
|
||||
(with-primitive shrub
|
||||
(pdata-index-map!
|
||||
(lambda (i p)
|
||||
(let ((j (* 0.2 (* i 0.2))))
|
||||
(vector (* (crndf) j) (* i 0.2) (* (crndf) j))))
|
||||
"p")
|
||||
(pdata-index-map!
|
||||
(lambda (i w)
|
||||
(* (/ 1 (+ i 1)) 0.2))
|
||||
"w")))))
|
||||
|
||||
(clear)
|
||||
|
||||
;----------------------------------------------
|
||||
; build the set
|
||||
|
||||
(clear-colour (vector 0.5 0.8 1))
|
||||
(define l (make-light 'spot 'free))
|
||||
(light-diffuse 0 (vector 0 0 0))
|
||||
(light-diffuse l (vector 1 1 1))
|
||||
(light-position l (vector 0 9 -10))
|
||||
(define l2 (make-light 'spot 'free))
|
||||
(light-diffuse l2 (vector 0.5 0.5 0.5))
|
||||
(light-position l2 (vector 0 9 10))
|
||||
|
||||
(clear-texture-cache)
|
||||
(clear-geometry-cache)
|
||||
|
||||
(with-state
|
||||
(backfacecull 0)
|
||||
(texture (load-texture "textures/car-base.png"))
|
||||
(load-primitive "meshes/car.obj"))
|
||||
|
||||
(define terrain (with-state
|
||||
(texture (load-texture "textures/ground-base.png"))
|
||||
(load-primitive "meshes/ground.obj")))
|
||||
|
||||
|
||||
;(define grassmap (load-primitive "textures/set-grass.png"))
|
||||
|
||||
(define (tx->pi tx)
|
||||
(+ (vy tx) (* (vx tx) (pixels-width))))
|
||||
|
||||
(with-primitive terrain
|
||||
(poly-for-each-tri-sample
|
||||
(lambda (indices bary)
|
||||
(let ((tc (vadd
|
||||
(vmul (pdata-ref "t" (list-ref indices 0)) (vx bary))
|
||||
(vmul (pdata-ref "t" (list-ref indices 1)) (vy bary))
|
||||
(vmul (pdata-ref "t" (list-ref indices 2)) (vz bary)))))
|
||||
(when #t #;(> (va (with-primitive grassmap (pdata-ref "c" (tx->pi tc)))) 0.5)
|
||||
(build-shrub (vadd
|
||||
(vmul (pdata-ref "p" (list-ref indices 0)) (vx bary))
|
||||
(vmul (pdata-ref "p" (list-ref indices 1)) (vy bary))
|
||||
(vmul (pdata-ref "p" (list-ref indices 2)) (vz bary))) (vector 0 1 0)))))
|
||||
1))
|
||||
|
||||
(define shell0 (build-copy terrain))
|
||||
|
||||
(with-primitive shell0
|
||||
(pdata-copy "t" "t1")
|
||||
(pdata-map!
|
||||
(lambda (t)
|
||||
(vmul t 4))
|
||||
"t"))
|
||||
|
||||
(with-state
|
||||
(multitexture 0 (load-texture "textures/shell.png"))
|
||||
(multitexture 1 (load-texture "textures/ground-grassmap.png"))
|
||||
(build-shells shell0 4 0.1 (vector 1 1 1)))
|
||||
|
||||
(define buildings (with-state
|
||||
(backfacecull 0)
|
||||
(texture (load-texture "textures/building-base.png"))
|
||||
(load-primitive "meshes/buildings.obj")))
|
||||
|
||||
(with-state
|
||||
(multitexture 0 (load-texture "textures/shell.png"))
|
||||
(multitexture 1 (load-texture "textures/building-grassmap.png"))
|
||||
(build-shells buildings 4 0.04 (vector 1 1 1)))
|
||||
|
BIN
hayfever/textures/building-base.png
Normal file
After Width: | Height: | Size: 585 KiB |
BIN
hayfever/textures/building-grassmap.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
hayfever/textures/car-base.png
Normal file
After Width: | Height: | Size: 342 KiB |
BIN
hayfever/textures/car-map.png
Normal file
After Width: | Height: | Size: 340 KiB |
BIN
hayfever/textures/ground-base.png
Normal file
After Width: | Height: | Size: 591 KiB |
BIN
hayfever/textures/ground-grassmap.png
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
hayfever/textures/ground-grassmap2.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
hayfever/textures/shell.png
Normal file
After Width: | Height: | Size: 304 KiB |
|
@ -54,7 +54,7 @@
|
|||
(map
|
||||
(lambda (cp)
|
||||
(vector (- (- (/ (vx cp) (pixels-width)) 0.5))
|
||||
(- 1 (/ (vy cp) (pixels-height))) 0))
|
||||
(/ (vy cp) (pixels-height)) 0))
|
||||
l))
|
||||
|
||||
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
|