List of usage examples for javax.media.j3d Switch CHILD_NONE
int CHILD_NONE
To view the source code for javax.media.j3d Switch CHILD_NONE.
Click Source Link
From source file:SoundBug.java
void setupSounds() { soundSwitch = new Switch(Switch.CHILD_NONE); soundSwitch.setWhichChild(Switch.CHILD_NONE); soundSwitch.setCapability(Switch.ALLOW_SWITCH_WRITE); // set up the BoundingSphere for all the sounds BoundingSphere bounds = new BoundingSphere(new Point3d(), 100.0); // Set up the sound media container java.net.URL soundURL = null; String soundFile = "techno_machine.au"; try {//from w w w . j ava2 s . c o m java.net.URL codeBase = null; try { codeBase = getCodeBase(); } catch (Exception ex) { // got an exception, probably running as an application, // keep code base null... } if (codeBase != null) { soundURL = new java.net.URL(codeBase.toString() + soundFile); } } catch (java.net.MalformedURLException ex) { System.out.println(ex.getMessage()); System.exit(1); } if (soundURL == null) { // application, try file URL try { soundURL = new java.net.URL("file:./" + soundFile); } catch (java.net.MalformedURLException ex) { System.out.println(ex.getMessage()); System.exit(1); } } System.out.println("soundURL = " + soundURL); MediaContainer soundMC = new MediaContainer(soundURL); // set up the Background Sound soundBackground = new BackgroundSound(); soundBackground.setCapability(Sound.ALLOW_ENABLE_WRITE); soundBackground.setSoundData(soundMC); soundBackground.setSchedulingBounds(bounds); soundBackground.setEnable(true); soundBackground.setLoop(Sound.INFINITE_LOOPS); soundSwitch.addChild(soundBackground); // set up the point sound soundPoint = new PointSound(); soundPoint.setCapability(Sound.ALLOW_ENABLE_WRITE); soundPoint.setSoundData(soundMC); soundPoint.setSchedulingBounds(bounds); soundPoint.setEnable(true); soundPoint.setLoop(Sound.INFINITE_LOOPS); soundPoint.setPosition(-5.0f, -5.0f, 0.0f); Point2f[] distGain = new Point2f[2]; // set the attenuation to linearly decrease volume from max at // source to 0 at a distance of 5m distGain[0] = new Point2f(0.0f, 1.0f); distGain[1] = new Point2f(5.0f, 0.0f); soundPoint.setDistanceGain(distGain); soundSwitch.addChild(soundPoint); }
From source file:ExDepthCue.java
public Group buildScene() { // Get the current color Color3f color = (Color3f) colors[currentColor].value; // Turn off the example headlight setHeadlightEnable(false);//from ww w.jav a 2 s . c o m // Create the scene group Group scene = new Group(); // Create a switch group to hold the fog node. This enables // us to turn the fog node on and off via the GUI. fogSwitch = new Switch(); fogSwitch.setCapability(Switch.ALLOW_SWITCH_WRITE); // Create influencing bounds Bounds worldBounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), // Center 1000.0); // Extent // Set the fog color, density, and its influencing bounds fog = new LinearFog(); fog.setColor(color); // front and back distances set below fog.setCapability(Fog.ALLOW_COLOR_WRITE); fog.setCapability(Fog.ALLOW_INFLUENCING_BOUNDS_WRITE); fog.setInfluencingBounds(worldBounds); fogSwitch.addChild(fog); scene.addChild(fogSwitch); if (depthCueOnOff) fogSwitch.setWhichChild(0); // on else fogSwitch.setWhichChild(Switch.CHILD_NONE); // off // Set the background color and its application bounds // Usually, the background color should match the fog color // or the results look odd. background = new Background(); background.setColor(color); background.setApplicationBounds(worldBounds); background.setCapability(Background.ALLOW_COLOR_WRITE); scene.addChild(background); // Build foreground geometry Group content = buildIsoline(); scene.addChild(content); // Automatically compute good front and back distances for // fog to get good depth-cueing. To do this, first get the // dimensions of the bounds around the content. Then, // set the front distance to be at the center of the content // (or closer by a tad) and the back distance at the front // distance PLUS half the depth of the content's bounding box BoundingSphere sampleSphere = new BoundingSphere(); BoundingBox sampleBox = new BoundingBox(); Bounds bounds = content.getBounds(); double deltaDistance = 0.0; double centerZ = 0.0; if (bounds == null) { // No bounds available. Estimate the values knowing // that the above content is what it is. centerZ = 0.5; // 0.5 closer than true center deltaDistance = 2.0; } else if (bounds.getClass() == sampleSphere.getClass()) { BoundingSphere sphereBounds = (BoundingSphere) bounds; deltaDistance = Math.abs(sphereBounds.getRadius()); Point3d center = new Point3d(); sphereBounds.getCenter(center); centerZ = center.z + 0.5; // 0.5 closer than true center } else if (bounds.getClass() == sampleBox.getClass()) { BoundingBox boxBounds = (BoundingBox) bounds; Point3d p1 = new Point3d(); Point3d p2 = new Point3d(); boxBounds.getLower(p1); boxBounds.getUpper(p2); deltaDistance = p2.z - p1.z; if (deltaDistance < 0.0) deltaDistance *= -1.0; if (p1.z > p2.z) centerZ = p1.z - deltaDistance / 2.0; else centerZ = p2.z - deltaDistance / 2.0; centerZ += 0.5; // 0.5 closer than true center } else { System.err.println("Unknown bounds type"); } // Set front distance to the distance from the default // viewing position (0,0,10) to the center of the bounds. fog.setFrontDistance(10.0f - (float) centerZ); // Set back distance to the distance from the default // viewing position (0,0,10) to the back of the bounds. fog.setBackDistance(10.0f - (float) centerZ + (float) deltaDistance); return scene; }
From source file:EnvironmentExplorer.java
void setupFogs() { fogSwitch = new Switch(Switch.CHILD_NONE); fogSwitch.setCapability(Switch.ALLOW_SWITCH_WRITE); // set up the linear fog LinearFog fogLinear = new LinearFog(skyBlue, 6.0f, 12.0f); fogLinear.setInfluencingBounds(infiniteBounds); fogSwitch.addChild(fogLinear);/*from w w w.jav a2 s. co m*/ // set up the exponential fog ExponentialFog fogExp = new ExponentialFog(skyBlue, 0.3f); fogExp.setInfluencingBounds(infiniteBounds); fogSwitch.addChild(fogExp); // Create the chooser GUI String[] fogNames = { "None", "Linear", "Exponential", }; int[] fogValues = { Switch.CHILD_NONE, 0, 1 }; fogChooser = new IntChooser("Fog:", fogNames, fogValues, 0); fogChooser.addIntListener(new IntListener() { public void intChanged(IntEvent event) { int value = event.getValue(); fogSwitch.setWhichChild(value); } }); fogChooser.setValue(Switch.CHILD_NONE); }
From source file:EnvironmentExplorer.java
void setupSounds() { soundSwitch = new Switch(Switch.CHILD_NONE); soundSwitch.setCapability(Switch.ALLOW_SWITCH_WRITE); // Set up the sound media container java.net.URL soundURL = null; String soundFile = "techno_machine.au"; try {//from www . j a v a 2s.c o m soundURL = new java.net.URL(codeBaseString + soundFile); } catch (java.net.MalformedURLException ex) { System.out.println(ex.getMessage()); System.exit(1); } if (soundURL == null) { // application, try file URL try { soundURL = new java.net.URL("file:./" + soundFile); } catch (java.net.MalformedURLException ex) { System.out.println(ex.getMessage()); System.exit(1); } } //System.out.println("soundURL = " + soundURL); MediaContainer soundMC = new MediaContainer(soundURL); // set up the Background Sound soundBackground = new BackgroundSound(); soundBackground.setCapability(Sound.ALLOW_ENABLE_WRITE); soundBackground.setSoundData(soundMC); soundBackground.setSchedulingBounds(infiniteBounds); soundBackground.setEnable(false); soundBackground.setLoop(Sound.INFINITE_LOOPS); soundSwitch.addChild(soundBackground); // set up the point sound soundPoint = new PointSound(); soundPoint.setCapability(Sound.ALLOW_ENABLE_WRITE); soundPoint.setSoundData(soundMC); soundPoint.setSchedulingBounds(infiniteBounds); soundPoint.setEnable(false); soundPoint.setLoop(Sound.INFINITE_LOOPS); soundPoint.setPosition(-5.0f, 5.0f, 0.0f); Point2f[] distGain = new Point2f[2]; // set the attenuation to linearly decrease volume from max at // source to 0 at a distance of 15m distGain[0] = new Point2f(0.0f, 1.0f); distGain[1] = new Point2f(15.0f, 0.0f); soundPoint.setDistanceGain(distGain); soundSwitch.addChild(soundPoint); // Create the chooser GUI String[] soundNames = { "None", "Background", "Point", }; soundChooser = new IntChooser("Sound:", soundNames); soundChooser.addIntListener(new IntListener() { public void intChanged(IntEvent event) { int value = event.getValue(); // Should just be able to use setWhichChild on // soundSwitch, have to explictly enable/disable due to // bug. switch (value) { case 0: soundSwitch.setWhichChild(Switch.CHILD_NONE); soundBackground.setEnable(false); soundPoint.setEnable(false); break; case 1: soundSwitch.setWhichChild(0); soundBackground.setEnable(true); soundPoint.setEnable(false); break; case 2: soundSwitch.setWhichChild(1); soundBackground.setEnable(false); soundPoint.setEnable(true); break; } } }); soundChooser.setValue(Switch.CHILD_NONE); }
From source file:BehaviorTest.java
public void addBehaviorToParentGroup(Group nodeParentGroup) { nodeParentGroup.addChild(this); m_TransformGroup = new TransformGroup(); m_TransformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); m_BoundsSwitch = new Switch(); m_BoundsSwitch.setCapability(Switch.ALLOW_SWITCH_WRITE); Appearance app = new Appearance(); PolygonAttributes polyAttrbutes = new PolygonAttributes(); polyAttrbutes.setPolygonMode(PolygonAttributes.POLYGON_LINE); polyAttrbutes.setCullFace(PolygonAttributes.CULL_NONE); app.setPolygonAttributes(polyAttrbutes); m_BoundsSwitch.addChild(new Sphere(1, app)); ColorCube cube = new ColorCube(); cube.setAppearance(app);/*w w w .j av a 2s . c o m*/ Group g = new Group(); g.addChild(cube); m_BoundsSwitch.addChild(g); m_BoundsSwitch.setWhichChild(Switch.CHILD_NONE); m_TransformGroup.addChild(m_BoundsSwitch); nodeParentGroup.addChild(m_TransformGroup); }
From source file:BehaviorTest.java
public void setEnable(boolean bEnable) { super.setEnable(bEnable); if (m_BoundsSwitch != null) { if (bEnable == false) m_BoundsSwitch.setWhichChild(Switch.CHILD_NONE); }// ww w.ja va2 s. c o m }
From source file:ExDepthCue.java
public void itemStateChanged(ItemEvent event) { Object src = event.getSource(); // Check if depth-cueing is enabled if (src == depthCueOnOffMenu) { depthCueOnOff = depthCueOnOffMenu.getState(); if (depthCueOnOff) { // If on, enable color menu and fog colorMenu.setEnabled(true);//from www. j a v a 2 s . com fogSwitch.setWhichChild(0); // on } else { // If off, disable color menu and fog colorMenu.setEnabled(false); fogSwitch.setWhichChild(Switch.CHILD_NONE); // off } } // Handle all other checkboxes super.itemStateChanged(event); }
From source file:EnvironmentExplorer.java
void setupGrid() { // create a Switch for the spheres, allow switch changes gridSwitch = new Switch(Switch.CHILD_NONE); gridSwitch.setCapability(Switch.ALLOW_SWITCH_WRITE); // Set up an appearance to make the square3s with red ambient, // black emmissive, red diffuse and black specular coloring Material material = new Material(red, black, red, black, 64); Appearance appearance = new Appearance(); appearance.setMaterial(material);/*from w ww .j a v a2 s .c om*/ // create a grid of quads int gridSize = 20; // grid is gridSize quads along each side int numQuads = gridSize * gridSize; int numVerts = numQuads * 4; // 4 verts per quad // there will be 3 floats per coord and 4 coords per quad float[] coords = new float[3 * numVerts]; // All the quads will use the same normal at each vertex, so // allocate an array to hold references to the same normal Vector3f[] normals = new Vector3f[numVerts]; Vector3f vertNormal = new Vector3f(0.0f, 0.0f, 1.0f); float edgeLength = 5.0f; // length of each edge of the grid float gridGap = 0.03f; // the gap between each quad // length of each quad is (total length - sum of the gaps) / gridSize float quadLength = (edgeLength - gridGap * (gridSize - 1)) / gridSize; // create a grid of quads in the z=0 plane // each has a TransformGroup to position the sphere which contains // a link to the shared group for the sphere float curX, curY; for (int y = 0; y < gridSize; y++) { curY = y * (quadLength + gridGap); // offset to lower left corner curY -= edgeLength / 2; // center on 0,0 for (int x = 0; x < gridSize; x++) { // this is the offset into the vertex array for the first // vertex of the quad int vertexOffset = (y * gridSize + x) * 4; // this is the offset into the coord array for the first // vertex of the quad, where there are 3 floats per vertex int coordOffset = vertexOffset * 3; curX = x * (quadLength + gridGap); // offset to ll corner curX -= edgeLength / 2; // center on 0,0 // lower left corner coords[coordOffset + 0] = curX; coords[coordOffset + 1] = curY; coords[coordOffset + 2] = 0.0f; // z // lower right corner coords[coordOffset + 3] = curX + quadLength; coords[coordOffset + 4] = curY; coords[coordOffset + 5] = 0.0f; // z // upper right corner coords[coordOffset + 6] = curX + quadLength; coords[coordOffset + 7] = curY + quadLength; coords[coordOffset + 8] = 0.0f; // z // upper left corner coords[coordOffset + 9] = curX; coords[coordOffset + 10] = curY + quadLength; coords[coordOffset + 11] = 0.0f; // z for (int i = 0; i < 4; i++) { normals[vertexOffset + i] = vertNormal; } } } // now that we have the data, create the QuadArray QuadArray quads = new QuadArray(numVerts, QuadArray.COORDINATES | QuadArray.NORMALS); quads.setCoordinates(0, coords); quads.setNormals(0, normals); // create the shape Shape3D shape = new Shape3D(quads, appearance); // add it to the switch gridSwitch.addChild(shape); }
From source file:ffx.potential.MolecularAssembly.java
/** * The MolecularAssembly BranchGroup has two TransformGroups between it and * the "base" node where geometry is attached. If the point between the two * transformations is where user rotation occurs. For example, if rotating * about the center of mass of the system, the RotToCOM transformation will * be an identity transformation (ie. none). If rotation is about some atom * or group of atoms within the system, then the RotToCOM transformation * will be a translation from that point to the COM. * * @param zero boolean// w w w .ja v a2 s . c o m * @return BranchGroup */ public BranchGroup createScene(boolean zero) { originToRotT3D = new Transform3D(); originToRotV3D = new Vector3d(); originToRot = new TransformGroup(originToRotT3D); branchGroup = new BranchGroup(); rotToCOM = new TransformGroup(); rotToCOMT3D = new Transform3D(); rotToCOMV3D = new Vector3d(); // Set capabilities needed for picking and moving the MolecularAssembly branchGroup.setCapability(BranchGroup.ALLOW_DETACH); originToRot.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); originToRot.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); originToRot.setCapability(TransformGroup.ENABLE_PICK_REPORTING); rotToCOM.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); rotToCOM.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); // Put the MolecularAssembly in the middle of the scene if (zero) { originToRotV3D.set(0.0, 0.0, 0.0); originToRotT3D.set(originToRotV3D); originToRot.setTransform(originToRotT3D); } wire = renderWire(); switchGroup = new Switch(Switch.CHILD_NONE); switchGroup.setCapability(Switch.ALLOW_SWITCH_WRITE); base = new BranchGroup(); base.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND); base.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE); childNodes = new BranchGroup(); childNodes.setCapability(BranchGroup.ALLOW_DETACH); childNodes.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND); childNodes.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE); switchGroup.addChild(base); if (wire != null) { base.addChild(wire); } vrml = loadVRML(); if (vrml != null) { vrmlTG = new TransformGroup(); vrmlTd = new Transform3D(); vrmlTG.setTransform(vrmlTd); vrmlTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); vrmlTG.addChild(vrml); switchGroup.addChild(vrmlTG); setView(RendererCache.ViewModel.INVISIBLE, null); } switchGroup.setWhichChild(Switch.CHILD_ALL); rotToCOM.addChild(switchGroup); originToRot.addChild(rotToCOM); branchGroup.addChild(originToRot); branchGroup.compile(); return branchGroup; }
From source file:TransformExplorer.java
JPanel configPanel() { JPanel panel = new JPanel(); panel.setLayout(new GridLayout(0, 1)); panel.add(new JLabel("Display annotation:")); // create the check boxes rotAxisCheckBox = new JCheckBox(rotAxisString); rotAxisCheckBox.setSelected(showRotAxis); rotAxisCheckBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Object source = e.getSource(); showRotAxis = ((JCheckBox) source).isSelected(); if (showRotAxis) { rotAxis.setWhichChild(Switch.CHILD_ALL); } else { rotAxis.setWhichChild(Switch.CHILD_NONE); }/*from w ww .j ava2s . c om*/ } }); panel.add(rotAxisCheckBox); coordSysCheckBox = new JCheckBox(coordSysString); coordSysCheckBox.setSelected(showCoordSys); coordSysCheckBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Object source = e.getSource(); showCoordSys = ((JCheckBox) source).isSelected(); if (showCoordSys) { coordSys.setWhichChild(Switch.CHILD_ALL); } else { coordSys.setWhichChild(Switch.CHILD_NONE); } } }); panel.add(coordSysCheckBox); if (isApplication) { JButton snapButton = new JButton(snapImageString); snapButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Point loc = canvas.getLocationOnScreen(); offScreenCanvas.setOffScreenLocation(loc); Dimension dim = canvas.getSize(); dim.width *= offScreenScale; dim.height *= offScreenScale; nf.setMinimumIntegerDigits(3); nf.setMaximumFractionDigits(0); offScreenCanvas.snapImageFile(outFileBase + nf.format(outFileSeq++), dim.width, dim.height); nf.setMinimumIntegerDigits(0); } }); panel.add(snapButton); } return panel; }