----------------------------------------------------------------------- -- An example of Actor Prolog program. -- -- (c) 2012 IRE RAS Alexei A. Morozov -- -- -- -- This program draws an object and creates a clip plane to see -- -- the interior of the object. It also has a behavior to move -- -- the clip plane. -- ----------------------------------------------------------------------- import .. from "morozov/Java3D"; class 'Main' (specialized 'Canvas3D'): [ goal:-!, Bounds== 'BoundingSphere'({ center: p(0.0,0.0,0.0), radius: 100.0 }), Appearance== 'Appearance'({ material: 'Material'({ lightingEnable: 'yes' }), polygonAttributes: 'PolygonAttributes'({ cullFace: 'CULL_NONE' }) }), show([ 'TransformGroup'({ transform3D: 'Transform3D'({ scale: 0.4 }), branches: [ 'AmbientLight'({ lightOn: 'yes', color: color3(1.0,1.0,1.0), influencingBounds: Bounds }), 'DirectionalLight'({ color: color3(0.5,0.0,0.5), direction: [-1.0,-1.0,1.0], influencingBounds: Bounds }), 'DirectionalLight'({ color: color3(0.7,0.7,0.0), direction: [0.0,0.0,-1.0], influencingBounds: Bounds }), 'TransformGroup'({ transform3D: 'Transform3D'({ rotation: [0.0,1.0,0.0,45.0] }), branches: [ 'Cylinder'({ radius: 0.5, height: 2.2, generateNormals: 'yes', xdivisions: 100, ydivisions: 1, appearance: Appearance }), 'Cylinder'({ radius: 0.3, height: 2.5, generateNormals: 'yes', xdivisions: 100, ydivisions: 1, appearance: Appearance }), 'Box'({ xdim: 0.8, ydim: 0.8, zdim: 0.8, generateNormals: 'yes', appearance: Appearance }), 'TransformGroup'({ allowTransformWrite: 'yes', allowTransformRead: 'yes', branches: [ 'MouseRotate'({ schedulingBounds: Bounds }), 'MouseZoom'({ schedulingBounds: Bounds }), 'MouseWheelZoom'({ schedulingBounds: Bounds }), 'ModelClip'({ 1: [0.0,1.0,1.0,0.0], influencingBounds: Bounds }) ] }) ] }) ] }) ]). ] |