view src/scheme/view3d.scm @ 0:bf79fb79ee13

Initial Mercurial check in.
author samer
date Tue, 17 Jan 2012 17:50:20 +0000
parents
children
line wrap: on
line source
(import "samer.j3d.*")
(import "samer.j3d.Util")


(define (xform . nodes)
	(define tg (javax.media.j3d.TransformGroup.))
	(for-each (lambda (node) (.addChild tg node)) nodes)
	tg)

(define (branch . nodes)
	(define bg (javax.media.j3d.BranchGroup.))
	(for-each (lambda (node) (.addChild bg node)) nodes)
	bg)

(define (root3d . nodes)
	(define r (Root.))
	(for-each (lambda (node) (.addChild r node)) nodes)
	r)
	
(define shape javax.media.j3d.Shape3D.)
(define (appearance shape app) (.setAppearance shape app) shape)

(define (manipulate tg)
	(Util.mouseRotate tg)
;	(Util.mouseTranslate tg)
	(Util.mouseZoom tg)
	tg)

(define (rotating period) (lambda (x) (Util.addRotator period x)))
	
(put "lookfrom" "(10 20 64)")

(define c3f javax.vecmath.Color3f.)
(define (white) (c3f 1f 1f 1f))
(define (green) (c3f 0.1f 1f 0.2f))


(define (view3d vec points container mk-view)
	(node (.getNode vec)
	  (node "3d"
		(define view (mk-view))
		(define VG (ViewGroup.))
		(define root
			(root3d
				(container (xform (manipulate (xform
					(appearance (Axes.) (Util.color (green) (Util.alpha 0.5 (Util.wireframe))))
					(shape 
						(Points3DAlpha. points vec) 	
						;(Points4D. points vec) 	
						(Util.alpha 0 (Util.points)))
				))))
				VG
			)
		)
		(.attachView VG view)
		(addtask view)
		(.compile root)
		(.activate root)
	  )
	)
)

;;; immediate mode viewer:
;	get root
;	add viewer
;   get renderer
;   set geometry and appearance

(define (view-patches x)
	(define patches (Matrix. "PatchesMatrix" 512 6))
	(put "stereo" #f)
	(put "linewidth" 1)
	;(addtask (.getTask (samer.j3d.J3DViewer. patches x)))
	;(model (PatchArrayAlpha. points vec)		(flat (alpha 0.0 (patches))))
)

;		Optional background colour
;		(Util.addBackground root 
;			(javax.media.j3d.Background 
;				(Color3f. 0.26f 0.23f 0.35f)));

;;; appearance bundles
'(
	(define (pointy1) (alpha 0.8 (color '(0.8 0.6 1) (points))))
	(define (pointy3) (color '(0.8 0.6 1) (points)))
	(define (wireframe1) (color '(0.6 0.4 0.5) (transparent 0.4 (wireframe)))) 
	(define (wireframe2) (color '(0.8 0.6 1) (transparent 0.7 (wireframe)))) 
	(define (wireframe3) 
		(define col (c3f 0.6 0.5 0.7))
		(Util.material col col 48 (wireframe)))
)