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
|