aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/classes/org/jdesktop/j3d/examples/applet3d/Applet3D.form69
-rw-r--r--src/classes/org/jdesktop/j3d/examples/applet3d/Applet3D.html39
-rw-r--r--src/classes/org/jdesktop/j3d/examples/applet3d/Applet3D.java239
3 files changed, 280 insertions, 67 deletions
diff --git a/src/classes/org/jdesktop/j3d/examples/applet3d/Applet3D.form b/src/classes/org/jdesktop/j3d/examples/applet3d/Applet3D.form
new file mode 100644
index 0000000..a70fb22
--- /dev/null
+++ b/src/classes/org/jdesktop/j3d/examples/applet3d/Applet3D.form
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.0" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+ <AuxValues>
+ <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+ <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+ <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
+ </AuxValues>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+ <SubComponents>
+ <Container class="javax.swing.JPanel" name="guiPanel">
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="North"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
+ <SubComponents>
+ <Component class="javax.swing.JButton" name="pauseButton">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Pause"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="pauseButtonActionPerformed"/>
+ </Events>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="4" insetsLeft="4" insetsBottom="4" insetsRight="4" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JButton" name="resumeButton">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Resume"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="resumeButtonActionPerformed"/>
+ </Events>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="4" insetsLeft="4" insetsBottom="4" insetsRight="4" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ </SubComponents>
+ </Container>
+ <Container class="javax.swing.JPanel" name="drawingPanel">
+ <Properties>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[500, 500]"/>
+ </Property>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+ <BorderConstraints direction="Center"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+ </Container>
+ </SubComponents>
+</Form>
diff --git a/src/classes/org/jdesktop/j3d/examples/applet3d/Applet3D.html b/src/classes/org/jdesktop/j3d/examples/applet3d/Applet3D.html
index 9cb15a4..037c7c1 100644
--- a/src/classes/org/jdesktop/j3d/examples/applet3d/Applet3D.html
+++ b/src/classes/org/jdesktop/j3d/examples/applet3d/Applet3D.html
@@ -1,15 +1,26 @@
-<HTML>
-<HEAD>
-<TITLE>Hello, Universe</TITLE>
-</HEAD>
-<BODY BGCOLOR="#000000">
-<applet align=middle codebase="../../../../.." code="org.jdesktop.j3d.examples.applet3d.Applet3D" width=256 height=256>
-<blockquote>
-<hr>
-If you were using a Java-capable browser,
-you would see Applet3D instead of this paragraph.
-<hr>
-</blockquote>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<title>Simple 3D Applet</title>
+</head>
+<body>
+<applet code="org.jdesktop.applet.util.JNLPAppletLauncher"
+ width=500 height=400
+ archive="../../../../../../../dist/j3d-examples.jar,
+ http://download.java.net/media/applet-launcher/applet-launcher.jar,
+ http://download.java.net/media/java3d/webstart/release/j3d/latest/j3dcore.jar,
+ http://download.java.net/media/java3d/webstart/release/j3d/latest/j3dutils.jar,
+ http://download.java.net/media/java3d/webstart/release/vecmath/latest/vecmath.jar,
+ http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jar,
+ http://download.java.net/media/gluegen/webstart/gluegen-rt.jar">
+ <param name="codebase_lookup" value="false">
+ <param name="subapplet.classname" value="org.jdesktop.j3d.examples.applet3d.Applet3D$MyApplet">
+ <param name="subapplet.displayname" value="Java 3D Simple Applet">
+ <param name="jnlpNumExtensions" value="1">
+ <param name="jnlpExtension1" value="http://download.java.net/media/java3d/webstart/release/java3d-latest.jnlp">
+ <param name="progressbar" value="true">
+ <param name="noddraw.check" value="true">
</applet>
-</BODY>
-</HTML>
+<p>Simple Java 3D Applet</p>
+</body>
+</html>
diff --git a/src/classes/org/jdesktop/j3d/examples/applet3d/Applet3D.java b/src/classes/org/jdesktop/j3d/examples/applet3d/Applet3D.java
index 565800a..55e7cdc 100644
--- a/src/classes/org/jdesktop/j3d/examples/applet3d/Applet3D.java
+++ b/src/classes/org/jdesktop/j3d/examples/applet3d/Applet3D.java
@@ -44,86 +44,219 @@
package org.jdesktop.j3d.examples.applet3d;
-import java.applet.Applet;
+import com.sun.j3d.utils.geometry.ColorCube;
+import com.sun.j3d.utils.universe.SimpleUniverse;
import java.awt.BorderLayout;
-import java.awt.event.*;
import java.awt.GraphicsConfiguration;
-import com.sun.j3d.utils.applet.MainFrame;
-import com.sun.j3d.utils.geometry.ColorCube;
-import com.sun.j3d.utils.universe.*;
-import javax.media.j3d.*;
-import javax.vecmath.*;
-
-public class Applet3D extends Applet {
+import javax.media.j3d.Alpha;
+import javax.media.j3d.BoundingSphere;
+import javax.media.j3d.BranchGroup;
+import javax.media.j3d.Canvas3D;
+import javax.media.j3d.RotationInterpolator;
+import javax.media.j3d.Transform3D;
+import javax.media.j3d.TransformGroup;
+import javax.swing.JApplet;
+import javax.swing.JFrame;
+import javax.swing.JPopupMenu;
+import javax.swing.WindowConstants;
+import javax.vecmath.Point3d;
- private SimpleUniverse u = null;
+/**
+ * Simple Java 3D program that can be run as an application or as an applet.
+ */
+public class Applet3D extends javax.swing.JPanel {
+ private SimpleUniverse univ = null;
+ private BranchGroup scene = null;
+
+ private Alpha rotationAlpha1;
+ private Alpha rotationAlpha2;
+
public BranchGroup createSceneGraph() {
// Create the root of the branch graph
BranchGroup objRoot = new BranchGroup();
- // Create the TransformGroup node and initialize it to the
- // identity. Enable the TRANSFORM_WRITE capability so that
- // our behavior code can modify it at run time. Add it to
- // the root of the subgraph.
- TransformGroup objTrans = new TransformGroup();
- objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
- objRoot.addChild(objTrans);
+ // Create two TransformGroup nodes in series
+ TransformGroup objTrans1 = new TransformGroup();
+ objTrans1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
+ objRoot.addChild(objTrans1);
- // Create a simple Shape3D node; add it to the scene graph.
- objTrans.addChild(new ColorCube(0.4));
+ // Create two TransformGroup nodes in series
+ TransformGroup objTrans2 = new TransformGroup();
+ objTrans2.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
+ objTrans1.addChild(objTrans2);
- // Create a new Behavior object that will perform the
- // desired operation on the specified transform and add
- // it into the scene graph.
- Transform3D yAxis = new Transform3D();
- Alpha rotationAlpha = new Alpha(-1, 4000);
+ // Create a simple Shape3D node; add it to the scene graph.
+ objTrans2.addChild(new ColorCube(0.4));
- RotationInterpolator rotator =
- new RotationInterpolator(rotationAlpha, objTrans, yAxis,
- 0.0f, (float) Math.PI*2.0f);
+ // Create 2 new Behavior objects that will perform the
+ // desired operations on the specified transforms and add
+ // them into the scene graph.
BoundingSphere bounds =
new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
- rotator.setSchedulingBounds(bounds);
- objRoot.addChild(rotator);
- // Have Java 3D perform optimizations on this scene graph.
- objRoot.compile();
+ Transform3D yAxis1 = new Transform3D();
+ rotationAlpha1 = new Alpha(-1, 4000);
+
+ RotationInterpolator rotator1 =
+ new RotationInterpolator(rotationAlpha1, objTrans1, yAxis1,
+ 0.0f, (float) Math.PI*2.0f);
+ rotator1.setSchedulingBounds(bounds);
+ objRoot.addChild(rotator1);
+
+ Transform3D yAxis2 = new Transform3D();
+ yAxis2.rotX(Math.PI/4.0);
+ rotationAlpha2 = new Alpha(-1, 10000);
+
+ RotationInterpolator rotator2 =
+ new RotationInterpolator(rotationAlpha2, objTrans2, yAxis2,
+ 0.0f, (float) Math.PI*2.0f);
+ rotator2.setSchedulingBounds(bounds);
+ objRoot.addChild(rotator2);
return objRoot;
}
- public Applet3D() {
+ private Canvas3D createUniverse() {
+ GraphicsConfiguration config =
+ SimpleUniverse.getPreferredConfiguration();
+
+ Canvas3D c = new Canvas3D(config);
+
+ univ = new SimpleUniverse(c);
+
+ // This will move the ViewPlatform back a bit so the
+ // objects in the scene can be viewed.
+ univ.getViewingPlatform().setNominalViewingTransform();
+
+ // Ensure at least 5 msec per frame (i.e., < 200Hz)
+ univ.getViewer().getView().setMinimumFrameCycleTime(5);
+
+ return c;
+ }
+
+ private void destroy() {
+ univ.cleanup();
}
- public void init() {
- setLayout(new BorderLayout());
- GraphicsConfiguration config =
- SimpleUniverse.getPreferredConfiguration();
+ /**
+ * Creates new form Applet3D
+ */
+ public Applet3D() {
+ // Initialize the GUI components
+ JPopupMenu.setDefaultLightWeightPopupEnabled(false);
+ initComponents();
- Canvas3D c = new Canvas3D(config);
- add("Center", c);
+ // Create Canvas3D and SimpleUniverse; add canvas to drawing panel
+ Canvas3D c = createUniverse();
+ drawingPanel.add(c, BorderLayout.CENTER);
+
+ // Create the content branch and add it to the universe
+ scene = createSceneGraph();
+ univ.addBranchGraph(scene);
+ }
+
+ // ----------------------------------------------------------------
+
+ // Applet framework
- // Create a simple scene and attach it to the virtual universe
- BranchGroup scene = createSceneGraph();
- u = new SimpleUniverse(c);
+ public static class MyApplet extends JApplet {
+ Applet3D mainPanel;
- // This will move the ViewPlatform back a bit so the
- // objects in the scene can be viewed.
- u.getViewingPlatform().setNominalViewingTransform();
+ public void init() {
+ setLayout(new BorderLayout());
+ mainPanel = new Applet3D();
+ add(mainPanel, BorderLayout.CENTER);
+ }
- u.addBranchGraph(scene);
+ public void destroy() {
+ mainPanel.destroy();
+ }
}
- public void destroy() {
- u.cleanup();
+ // Application framework
+
+ private static class MyFrame extends JFrame {
+ MyFrame() {
+ setLayout(new BorderLayout());
+ setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
+ setTitle("Simple 3D Applet");
+ getContentPane().add(new Applet3D(), BorderLayout.CENTER);
+ pack();
+ }
}
- //
- // The following allows Applet3D to be run as an application
- // as well as an applet
- //
- public static void main(String[] args) {
- new MainFrame(new Applet3D(), 256, 256);
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String args[]) {
+ java.awt.EventQueue.invokeLater(new Runnable() {
+ public void run() {
+ new MyFrame().setVisible(true);
+ }
+ });
}
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
+ private void initComponents() {
+ java.awt.GridBagConstraints gridBagConstraints;
+
+ guiPanel = new javax.swing.JPanel();
+ pauseButton = new javax.swing.JButton();
+ resumeButton = new javax.swing.JButton();
+ drawingPanel = new javax.swing.JPanel();
+
+ setLayout(new java.awt.BorderLayout());
+
+ guiPanel.setLayout(new java.awt.GridBagLayout());
+
+ pauseButton.setText("Pause");
+ pauseButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ pauseButtonActionPerformed(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
+ guiPanel.add(pauseButton, gridBagConstraints);
+
+ resumeButton.setText("Resume");
+ resumeButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ resumeButtonActionPerformed(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
+ guiPanel.add(resumeButton, gridBagConstraints);
+
+ add(guiPanel, java.awt.BorderLayout.NORTH);
+
+ drawingPanel.setPreferredSize(new java.awt.Dimension(500, 500));
+ drawingPanel.setLayout(new java.awt.BorderLayout());
+ add(drawingPanel, java.awt.BorderLayout.CENTER);
+ }// </editor-fold>//GEN-END:initComponents
+
+ private void resumeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resumeButtonActionPerformed
+ rotationAlpha1.resume();
+ rotationAlpha2.resume();
+ }//GEN-LAST:event_resumeButtonActionPerformed
+
+ private void pauseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pauseButtonActionPerformed
+ rotationAlpha1.pause();
+ rotationAlpha2.pause();
+ }//GEN-LAST:event_pauseButtonActionPerformed
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JPanel drawingPanel;
+ private javax.swing.JPanel guiPanel;
+ private javax.swing.JButton pauseButton;
+ private javax.swing.JButton resumeButton;
+ // End of variables declaration//GEN-END:variables
+
}