samer@0: (import "samer.j3d.*") samer@0: (import "samer.j3d.Util") samer@0: samer@0: samer@0: (define (xform . nodes) samer@0: (define tg (javax.media.j3d.TransformGroup.)) samer@0: (for-each (lambda (node) (.addChild tg node)) nodes) samer@0: tg) samer@0: samer@0: (define (branch . nodes) samer@0: (define bg (javax.media.j3d.BranchGroup.)) samer@0: (for-each (lambda (node) (.addChild bg node)) nodes) samer@0: bg) samer@0: samer@0: (define (root3d . nodes) samer@0: (define r (Root.)) samer@0: (for-each (lambda (node) (.addChild r node)) nodes) samer@0: r) samer@0: samer@0: (define shape javax.media.j3d.Shape3D.) samer@0: (define (appearance shape app) (.setAppearance shape app) shape) samer@0: samer@0: (define (manipulate tg) samer@0: (Util.mouseRotate tg) samer@0: ; (Util.mouseTranslate tg) samer@0: (Util.mouseZoom tg) samer@0: tg) samer@0: samer@0: (define (rotating period) (lambda (x) (Util.addRotator period x))) samer@0: samer@0: (put "lookfrom" "(10 20 64)") samer@0: samer@0: (define c3f javax.vecmath.Color3f.) samer@0: (define (white) (c3f 1f 1f 1f)) samer@0: (define (green) (c3f 0.1f 1f 0.2f)) samer@0: samer@0: samer@0: (define (view3d vec points container mk-view) samer@0: (node (.getNode vec) samer@0: (node "3d" samer@0: (define view (mk-view)) samer@0: (define VG (ViewGroup.)) samer@0: (define root samer@0: (root3d samer@0: (container (xform (manipulate (xform samer@0: (appearance (Axes.) (Util.color (green) (Util.alpha 0.5 (Util.wireframe)))) samer@0: (shape samer@0: (Points3DAlpha. points vec) samer@0: ;(Points4D. points vec) samer@0: (Util.alpha 0 (Util.points))) samer@0: )))) samer@0: VG samer@0: ) samer@0: ) samer@0: (.attachView VG view) samer@0: (addtask view) samer@0: (.compile root) samer@0: (.activate root) samer@0: ) samer@0: ) samer@0: ) samer@0: samer@0: ;;; immediate mode viewer: samer@0: ; get root samer@0: ; add viewer samer@0: ; get renderer samer@0: ; set geometry and appearance samer@0: samer@0: (define (view-patches x) samer@0: (define patches (Matrix. "PatchesMatrix" 512 6)) samer@0: (put "stereo" #f) samer@0: (put "linewidth" 1) samer@0: ;(addtask (.getTask (samer.j3d.J3DViewer. patches x))) samer@0: ;(model (PatchArrayAlpha. points vec) (flat (alpha 0.0 (patches)))) samer@0: ) samer@0: samer@0: ; Optional background colour samer@0: ; (Util.addBackground root samer@0: ; (javax.media.j3d.Background samer@0: ; (Color3f. 0.26f 0.23f 0.35f))); samer@0: samer@0: ;;; appearance bundles samer@0: '( samer@0: (define (pointy1) (alpha 0.8 (color '(0.8 0.6 1) (points)))) samer@0: (define (pointy3) (color '(0.8 0.6 1) (points))) samer@0: (define (wireframe1) (color '(0.6 0.4 0.5) (transparent 0.4 (wireframe)))) samer@0: (define (wireframe2) (color '(0.8 0.6 1) (transparent 0.7 (wireframe)))) samer@0: (define (wireframe3) samer@0: (define col (c3f 0.6 0.5 0.7)) samer@0: (Util.material col col 48 (wireframe))) samer@0: ) samer@0: samer@0: