List of usage examples for javax.media.j3d Transform3D setRotation
public final void setRotation(AxisAngle4f a1)
From source file:ModelClipTest2.java
public BranchGroup createSceneGraph() { // Create the root of the branch graph BranchGroup objRoot = new BranchGroup(); // Create a Transformgroup to scale all objects so they // appear in the scene. TransformGroup objScale = new TransformGroup(); Transform3D t3d = new Transform3D(); t3d.setScale(0.4);/* w w w.ja v a2 s . c o m*/ objScale.setTransform(t3d); objRoot.addChild(objScale); // Create lights BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0); //Shine it with two colored lights. Color3f lColor0 = new Color3f(1.0f, 1.0f, 1.0f); Color3f lColor1 = new Color3f(0.5f, 0.0f, 0.5f); Color3f lColor2 = new Color3f(0.7f, 0.7f, 0.0f); Vector3f lDir1 = new Vector3f(-1.0f, -1.0f, 1.0f); Vector3f lDir2 = new Vector3f(0.0f, 0.0f, -1.0f); AmbientLight lgt0 = new AmbientLight(true, lColor2); DirectionalLight lgt1 = new DirectionalLight(lColor1, lDir1); DirectionalLight lgt2 = new DirectionalLight(lColor2, lDir2); lgt0.setInfluencingBounds(bounds); lgt1.setInfluencingBounds(bounds); lgt2.setInfluencingBounds(bounds); objScale.addChild(lgt0); objScale.addChild(lgt1); objScale.addChild(lgt2); // Create a Transformgroup for the geometry TransformGroup objRot = new TransformGroup(); Transform3D t3d1 = new Transform3D(); AxisAngle4f rot1 = new AxisAngle4f(0.0f, 1.0f, 0.0f, 45.0f); t3d1.setRotation(rot1); objRot.setTransform(t3d1); objScale.addChild(objRot); //Create a cylinder PolygonAttributes attr = new PolygonAttributes(); attr.setCullFace(PolygonAttributes.CULL_NONE); Appearance ap = new Appearance(); Material mat = new Material(); mat.setLightingEnable(true); ap.setMaterial(mat); ap.setPolygonAttributes(attr); Cylinder CylinderObj = new Cylinder(0.5f, 2.2f, ap); objRot.addChild(CylinderObj); //Create a box Box BoxObj = new Box(0.8f, 0.8f, 0.8f, ap); objRot.addChild(BoxObj); // This Transformgroup is used by the mouse manipulators to // move the model clip planes. TransformGroup objTrans = new TransformGroup(); objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); objRot.addChild(objTrans); // Create the rotate behavior node MouseRotate behavior = new MouseRotate(objTrans); objTrans.addChild(behavior); behavior.setSchedulingBounds(bounds); // Create the zoom behavior node MouseZoom behavior2 = new MouseZoom(objTrans); objTrans.addChild(behavior2); behavior2.setSchedulingBounds(bounds); //Create Model Clip ModelClip mc = new ModelClip(); boolean enables[] = { false, false, false, false, false, false }; Vector4d eqn = new Vector4d(0.0, 1.0, 1.0, 0.0); mc.setEnables(enables); mc.setPlane(1, eqn); mc.setEnable(1, true); mc.setInfluencingBounds(bounds); objTrans.addChild(mc); // Let Java 3D perform optimizations on this scene graph. objRoot.compile(); return objRoot; }
From source file:LightTest.java
public void synchLightToUi() { super.synchLightToUi(); // set some defaults if things go wrong... double x = 0; double y = 0; double z = 0; try {/*w w w . j a v a 2 s.c om*/ x = Double.valueOf(m_XDirectionTextField.getText()).doubleValue(); y = Double.valueOf(m_YDirectionTextField.getText()).doubleValue(); z = Double.valueOf(m_ZDirectionTextField.getText()).doubleValue(); } catch (java.lang.NumberFormatException e) { // invalid numeric input - just ignore. } ((DirectionalLight) m_Light).setDirection((float) x, (float) y, (float) z); if (m_TransformGroup != null) { Vector3d coneVector = new Vector3d(0, 1, 0); Vector3d lightVector = new Vector3d(x, y, z); coneVector.normalize(); lightVector.normalize(); Vector3d axisVector = new Vector3d(); axisVector.cross(coneVector, lightVector); double angle = java.lang.Math.acos(coneVector.dot(lightVector)); AxisAngle4d rotAxis = new AxisAngle4d(axisVector.x, axisVector.y, axisVector.z, angle); Transform3D t3d = new Transform3D(); t3d.setRotation(rotAxis); m_TransformGroup.setTransform(t3d); } if (m_Cone != null) { Appearance app = new Appearance(); Color3f objColor = new Color3f(); m_Light.getColor(objColor); Color3f black = new Color3f(0.0f, 0.0f, 0.0f); app.setMaterial(new Material(objColor, black, objColor, black, 80.0f)); m_Cone.setAppearance(app); } }
From source file:LightTest.java
public void synchLightToUi() { super.synchLightToUi(); // set some defaults if things go wrong... double x = 0; double y = 0; double z = 0; double conc = 1; double spread = 2; try {//w w w . j a va 2s .c o m x = Double.valueOf(m_XDirectionTextField.getText()).doubleValue(); y = Double.valueOf(m_YDirectionTextField.getText()).doubleValue(); z = Double.valueOf(m_ZDirectionTextField.getText()).doubleValue(); conc = Double.valueOf(m_ConcentrationTextField.getText()).doubleValue(); spread = Double.valueOf(m_SpreadAngleTextField.getText()).doubleValue(); } catch (java.lang.NumberFormatException e) { // invalid numeric input - just ignore. } ((SpotLight) m_Light).setDirection((float) x, (float) y, (float) z); ((SpotLight) m_Light).setConcentration((float) conc); ((SpotLight) m_Light).setSpreadAngle((float) spread); if (m_DirectionTransformGroup != null) { Vector3d coneVector = new Vector3d(0, -1, 0); Vector3d lightVector = new Vector3d(x, y, z); coneVector.normalize(); lightVector.normalize(); Vector3d axisVector = new Vector3d(); axisVector.cross(coneVector, lightVector); double angle = java.lang.Math.acos(coneVector.dot(lightVector)); AxisAngle4d rotAxis = new AxisAngle4d(axisVector.x, axisVector.y, axisVector.z, angle); Transform3D t3d = new Transform3D(); t3d.setRotation(rotAxis); m_DirectionTransformGroup.setTransform(t3d); } if (m_Cone != null) { Appearance app = new Appearance(); Color3f objColor = new Color3f(); m_Light.getColor(objColor); Color3f black = new Color3f(0.0f, 0.0f, 0.0f); app.setMaterial(new Material(objColor, black, objColor, black, 80.0f)); m_Cone.getShape(Cone.CAP).setAppearance(app); } }
From source file:ffx.potential.bonded.RestraintBond.java
/** * <p>//from w ww . jav a 2 s . c o m * setBondTransform3d</p> * * @param t3d a {@link javax.media.j3d.Transform3D} object. * @param pos an array of double. * @param orient an array of double. * @param len a double. * @param newRot a boolean. */ public void setBondTransform3d(Transform3D t3d, double[] pos, double[] orient, double len, boolean newRot) { // Bond Orientation if (newRot) { angle = angle(orient, y); cross(y, orient, bcross); bcross[3] = angle - Math.PI; axisAngle.set(bcross); } // Scale the orientation vector to be a fourth the bond length // and add it to the position vector of the of the first atom scalar(orient, len / 4.0d, cstart); sum(cstart, pos, cstart); pos3d.set(cstart); t3d.setTranslation(pos3d); t3d.setRotation(axisAngle); t3d.setScale(scale); }