⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sceneeditorapplication.java

📁 基于java的3d开发库。对坐java3d的朋友有很大的帮助。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//===========================================================================//= This is the main class for a simple 3D editor application, and serves   =//= as the main testbed integration for functionalities in the VSDK toolkit =//=-------------------------------------------------------------------------=//= Module history:                                                         =//= - Since august 2005 - Oscar Chavarro                                    =//===========================================================================// Java basic classesimport java.io.File;import java.io.FileReader;import java.io.BufferedReader;import java.util.StringTokenizer;import java.util.ArrayList;// Java GUI classesimport java.awt.BorderLayout;import java.awt.Component;import java.awt.Color;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.FlowLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.border.Border;import javax.swing.BorderFactory; import javax.swing.BoxLayout;import javax.swing.JFrame;import javax.swing.JFileChooser;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JMenuBar;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTabbedPane;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import javax.swing.SwingUtilities;import javax.swing.SingleSelectionModel;import javax.swing.UIManager;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;// JOGL Classesimport javax.media.opengl.GLCanvas;// VSDK Classesimport vsdk.toolkit.common.ColorRgb;import vsdk.toolkit.common.Matrix4x4;import vsdk.toolkit.common.Ray;import vsdk.toolkit.common.Vector3D;import vsdk.toolkit.common.VSDK;import vsdk.toolkit.gui.ProgressMonitorConsole;import vsdk.toolkit.media.Image;import vsdk.toolkit.media.IndexedColorImage;import vsdk.toolkit.media.RGBImage;import vsdk.toolkit.media.RGBAImage;import vsdk.toolkit.media.RGBColorPalette;import vsdk.toolkit.environment.Camera;import vsdk.toolkit.environment.Material;import vsdk.toolkit.environment.Light;import vsdk.toolkit.environment.geometry.Arrow;import vsdk.toolkit.environment.geometry.VoxelVolume;import vsdk.toolkit.environment.geometry.Box;import vsdk.toolkit.environment.geometry.Cone;import vsdk.toolkit.environment.geometry.Geometry;import vsdk.toolkit.environment.geometry.ParametricCurve;import vsdk.toolkit.environment.geometry.ParametricBiCubicPatch;import vsdk.toolkit.environment.geometry.PolyhedralBoundedSolid;import vsdk.toolkit.environment.geometry.Sphere;import vsdk.toolkit.environment.geometry.TriangleMesh;import vsdk.toolkit.environment.geometry.TriangleMeshGroup;import vsdk.toolkit.environment.scene.SimpleBody;import vsdk.toolkit.environment.scene.SimpleBodyGroup;import vsdk.toolkit.io.XmlException;import vsdk.toolkit.io.geometry.EnvironmentPersistence;import vsdk.toolkit.io.image.RGBColorPalettePersistence;import vsdk.toolkit.io.image.ImagePersistence;import vsdk.toolkit.processing.ImageProcessing;// Internal classesimport vsdk.transition.gui.GuiCache;import vsdk.transition.io.presentation.GuiCachePersistence;import vsdk.transition.render.swing.SwingGuiCacheRenderer;abstract class SuffixAwareFilter    extends javax.swing.filechooser.FileFilter {  public String getSuffix(File f) {    String s = f.getPath(), suffix = null;    int i = s.lastIndexOf('.');    if (i > 0 && i < s.length() - 1) {      suffix = s.substring(i + 1).toLowerCase();    }    return suffix;  }  public boolean accept(File f) {    return f.isDirectory();  }}class MainThread implements Runnable{    private String args[];    public MainThread(String args[])    {        this.args = args;    }    public void run()    {        SceneEditorApplication app;        app = new SceneEditorApplication(args);    }}class MyFilter    extends SuffixAwareFilter {  private String suffix;  private String description;  public MyFilter(String suffix, String description) {    this.suffix = suffix;    this.description = description;  }  public boolean accept(File f) {    boolean accept = super.accept(f);    if (!accept) {      String _suffix = getSuffix(f);      if (suffix != null) {        accept = suffix.equals(_suffix);      }    }    return accept;  }  public String getDescription() {    return description + " (*." + suffix + ")";  }}class MyChangeListener implements ChangeListener{    public SceneEditorApplication parent;    public MyChangeListener(SceneEditorApplication parent)    {        this.parent = parent;    }    public void stateChanged(ChangeEvent e)    {        SingleSelectionModel sm = (SingleSelectionModel)e.getSource();        if ( sm.getSelectedIndex() == 1 ) {            parent.modifyPanelSelected = true;            parent.drawingArea.reportTargetToModifyPanel();        }        else {            parent.modifyPanelSelected = false;        }    }}public class SceneEditorApplication {    // Application model    public Scene theScene;    public RGBImage raytracedImage;    public RGBImage zbufferImage;    public int raytracedImageWidth;    public int raytracedImageHeight;    public RGBColorPalette palette;    public boolean withVisualDebugRay;    public Ray visualDebugRay;    public int visualDebugRayLevels;    // Application GUI    public GuiCache gui;    public JoglDrawingArea drawingArea;    public JLabel statusMessage;    public JPanel statusBarPanel;    public SwingImageControlWindow imageControlWindow;    public SwingSelectorDialog selectorDialog;    public ButtonsPanel executorPanel;    private JFrame mainWindowWidget;    private String lookAndFeel;    public String languageGuiFile;    public ModifyPanel modifyPanel;    public boolean modifyPanelSelected;    // Networking    private VitralEditorServer networkServer;    private VitralCommandClient networkCommandClient;    private String currentNetworkCommandClientIp;    private String currentNetworkCommandClientPort;    public void setLookAndFeel(String lookAndFeel)    {        this.lookAndFeel = lookAndFeel;        // Method 1        destroyGUI();        createGUI();        // Method 2: It doesn't work well when the window decoration style        // has to change in the main JFrame        /*        try {            UIManager.setLookAndFeel(lookAndFeel);          }          catch (Exception e) {            System.err.println("Warning: Can not set " +              lookAndFeel + "look and feel");        }        SwingUtilities.updateComponentTreeUI(mainWindowWidget);        mainWindowWidget.pack();        */    }    /**    Could be better: if the Swing GUI is not destroyed, but all labels are    renamed... but ... what if language files are not exactly equal?    */    public void setGuiLanguage(String lang)    {        this.languageGuiFile = lang;        destroyGUI();        createGUI();    }    private void createModel()    {        //-----------------------------------------------------------------        theScene = new Scene();        raytracedImage = new RGBImage();        raytracedImageWidth = 320;        raytracedImageHeight = 240;        palette = null;        try {            palette = RGBColorPalettePersistence.importGimpPalette(new java.io.FileReader("../../../etc/palettes/Cranes.gpl"));        }        catch (Exception e) {            System.err.println(e);            System.exit(0);        }        visualDebugRay = new Ray(new Vector3D(0, -3, 0), new Vector3D(0, 1, 0));        visualDebugRayLevels = 2;        withVisualDebugRay = false;        networkServer = null;        networkCommandClient = null;        currentNetworkCommandClientIp = "127.0.0.1";        currentNetworkCommandClientPort = "1235";    }    private JPanel createStatusBar()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -