annotate src/scheme/view3d.scm @ 8:5e3cbbf173aa tip

Reorganise some more
author samer
date Fri, 05 Apr 2019 22:41:58 +0100
parents bf79fb79ee13
children
rev   line source
samer@0 1 (import "samer.j3d.*")
samer@0 2 (import "samer.j3d.Util")
samer@0 3
samer@0 4
samer@0 5 (define (xform . nodes)
samer@0 6 (define tg (javax.media.j3d.TransformGroup.))
samer@0 7 (for-each (lambda (node) (.addChild tg node)) nodes)
samer@0 8 tg)
samer@0 9
samer@0 10 (define (branch . nodes)
samer@0 11 (define bg (javax.media.j3d.BranchGroup.))
samer@0 12 (for-each (lambda (node) (.addChild bg node)) nodes)
samer@0 13 bg)
samer@0 14
samer@0 15 (define (root3d . nodes)
samer@0 16 (define r (Root.))
samer@0 17 (for-each (lambda (node) (.addChild r node)) nodes)
samer@0 18 r)
samer@0 19
samer@0 20 (define shape javax.media.j3d.Shape3D.)
samer@0 21 (define (appearance shape app) (.setAppearance shape app) shape)
samer@0 22
samer@0 23 (define (manipulate tg)
samer@0 24 (Util.mouseRotate tg)
samer@0 25 ; (Util.mouseTranslate tg)
samer@0 26 (Util.mouseZoom tg)
samer@0 27 tg)
samer@0 28
samer@0 29 (define (rotating period) (lambda (x) (Util.addRotator period x)))
samer@0 30
samer@0 31 (put "lookfrom" "(10 20 64)")
samer@0 32
samer@0 33 (define c3f javax.vecmath.Color3f.)
samer@0 34 (define (white) (c3f 1f 1f 1f))
samer@0 35 (define (green) (c3f 0.1f 1f 0.2f))
samer@0 36
samer@0 37
samer@0 38 (define (view3d vec points container mk-view)
samer@0 39 (node (.getNode vec)
samer@0 40 (node "3d"
samer@0 41 (define view (mk-view))
samer@0 42 (define VG (ViewGroup.))
samer@0 43 (define root
samer@0 44 (root3d
samer@0 45 (container (xform (manipulate (xform
samer@0 46 (appearance (Axes.) (Util.color (green) (Util.alpha 0.5 (Util.wireframe))))
samer@0 47 (shape
samer@0 48 (Points3DAlpha. points vec)
samer@0 49 ;(Points4D. points vec)
samer@0 50 (Util.alpha 0 (Util.points)))
samer@0 51 ))))
samer@0 52 VG
samer@0 53 )
samer@0 54 )
samer@0 55 (.attachView VG view)
samer@0 56 (addtask view)
samer@0 57 (.compile root)
samer@0 58 (.activate root)
samer@0 59 )
samer@0 60 )
samer@0 61 )
samer@0 62
samer@0 63 ;;; immediate mode viewer:
samer@0 64 ; get root
samer@0 65 ; add viewer
samer@0 66 ; get renderer
samer@0 67 ; set geometry and appearance
samer@0 68
samer@0 69 (define (view-patches x)
samer@0 70 (define patches (Matrix. "PatchesMatrix" 512 6))
samer@0 71 (put "stereo" #f)
samer@0 72 (put "linewidth" 1)
samer@0 73 ;(addtask (.getTask (samer.j3d.J3DViewer. patches x)))
samer@0 74 ;(model (PatchArrayAlpha. points vec) (flat (alpha 0.0 (patches))))
samer@0 75 )
samer@0 76
samer@0 77 ; Optional background colour
samer@0 78 ; (Util.addBackground root
samer@0 79 ; (javax.media.j3d.Background
samer@0 80 ; (Color3f. 0.26f 0.23f 0.35f)));
samer@0 81
samer@0 82 ;;; appearance bundles
samer@0 83 '(
samer@0 84 (define (pointy1) (alpha 0.8 (color '(0.8 0.6 1) (points))))
samer@0 85 (define (pointy3) (color '(0.8 0.6 1) (points)))
samer@0 86 (define (wireframe1) (color '(0.6 0.4 0.5) (transparent 0.4 (wireframe))))
samer@0 87 (define (wireframe2) (color '(0.8 0.6 1) (transparent 0.7 (wireframe))))
samer@0 88 (define (wireframe3)
samer@0 89 (define col (c3f 0.6 0.5 0.7))
samer@0 90 (Util.material col col 48 (wireframe)))
samer@0 91 )
samer@0 92
samer@0 93