During the period of learning computer graphics, the school chose the relatively unpopular Java3D, and there are few installation tutorials on the Internet. The installation tutorials are for reference only.
1. JDK installation
JDK click to download
You can download the stable version 1.8 or 11. Remember to configure the environment on my computer here. Because there are many tutorials, I will not repeat them here.
2. Java 3D 1.5.1
Click to download Java3d
Select according to your own system, for example, if I use windows, select java3d-1-5-1-windows-i586.exe (representing 32 bits)
Note here that the number of bits of JDK and Java3D needs to be the same , for example, JDK uses 32 bits, and the Java3D library also needs 32 bits.
3. Installation of idea
Idea click to download
to download the community version, if there is an activation code or other ways to download the ultimate version
After the above three installations are installed, you can open the idea for configuration
-
ddl file configuration
Copy the ddl file in the Java3D bin directory file to the JDK bin directory, otherwise an exception UnsatisfiedLinkError will be reported
-
Open the idea, select the environment, create a project,
right-click the environment under External Libraries, and open the library settings
-
Add jar package
-
Find the installation location of java3d, the default is to import the jar package in the following path
\Java3D\1.5.1\lib\ext (64 version of Java installation path may not be (x86))
-
Finally test the results with the code
package com.codeslogan.Test;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.ColorCube;
import javax.media.j3d.*;
import javax.vecmath.*;
import java.awt.GraphicsConfiguration;
/**
* Simple Java 3D example program to display a spinning cube.
*/
public class HelloUniverse extends javax.swing.JFrame {
private SimpleUniverse univ = null;
private BranchGroup scene = null;
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 a simple Shape3D node; add it to the scene graph.
objTrans.addChild(new ColorCube(0.4));
// 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);
RotationInterpolator rotator =
new RotationInterpolator(rotationAlpha, objTrans, yAxis,
0.0f, (float) Math.PI*2.0f);
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();
return objRoot;
}
private Canvas3D createUniverse() {
// Get the preferred graphics configuration for the default screen
GraphicsConfiguration config =
SimpleUniverse.getPreferredConfiguration();
// Create a Canvas3D using the preferred configuration
Canvas3D c = new Canvas3D(config);
// Create simple universe with view branch
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;
}
/**
* Creates new form HelloUniverse
*/
public HelloUniverse() {
// Initialize the GUI components
initComponents();
// Create Canvas3D and SimpleUniverse; add canvas to drawing panel
Canvas3D c = createUniverse();
drawingPanel.add(c, java.awt.BorderLayout.CENTER);
// Create the content branch and add it to the universe
scene = createSceneGraph();
univ.addBranchGraph(scene);
}
// ----------------------------------------------------------------
/** 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() {
drawingPanel = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("HelloUniverse");
drawingPanel.setLayout(new java.awt.BorderLayout());
drawingPanel.setPreferredSize(new java.awt.Dimension(250, 250));
getContentPane().add(drawingPanel, java.awt.BorderLayout.CENTER);
pack();
}// </editor-fold>//GEN-END:initComponents
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new HelloUniverse().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel drawingPanel;
// End of variables declaration//GEN-END:variables
}
- Successful installation! !