<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2F3D%2F3D_Locale</id>
		<title>Java/3D/3D Locale - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2F3D%2F3D_Locale"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/3D/3D_Locale&amp;action=history"/>
		<updated>2026-04-21T12:59:56Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/3D/3D_Locale&amp;diff=6471&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/3D/3D_Locale&amp;diff=6471&amp;oldid=prev"/>
				<updated>2010-06-01T06:15:02Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:15, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/3D/3D_Locale&amp;diff=6470&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/3D/3D_Locale&amp;diff=6470&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== A Universe with 3 Locales ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/**********************************************************&lt;br /&gt;
 Copyright (C) 2001   Daniel Selman&lt;br /&gt;
 First distributed with the book &amp;quot;Java 3D Programming&amp;quot;&lt;br /&gt;
 by Daniel Selman and published by Manning Publications.&lt;br /&gt;
 http://manning.ru/selman&lt;br /&gt;
 This program is free software; you can redistribute it and/or&lt;br /&gt;
 modify it under the terms of the GNU General Public License&lt;br /&gt;
 as published by the Free Software Foundation, version 2.&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 The license can be found on the WWW at:&lt;br /&gt;
 http://www.fsf.org/copyleft/gpl.html&lt;br /&gt;
 Or by writing to:&lt;br /&gt;
 Free Software Foundation, Inc.,&lt;br /&gt;
 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.&lt;br /&gt;
 Authors can be contacted at:&lt;br /&gt;
 Daniel Selman: daniel@selman.org&lt;br /&gt;
 If you make changes you think others would like, please &lt;br /&gt;
 contact one of the authors or someone at the &lt;br /&gt;
 www.j3d.org web site.&lt;br /&gt;
 **************************************************************/&lt;br /&gt;
import java.applet.Applet;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Button;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.GraphicsConfigTemplate;&lt;br /&gt;
import java.awt.GraphicsDevice;&lt;br /&gt;
import java.awt.GraphicsEnvironment;&lt;br /&gt;
import java.awt.Panel;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.image.BufferedImage;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.net.URL;&lt;br /&gt;
import javax.media.j3d.Alpha;&lt;br /&gt;
import javax.media.j3d.Appearance;&lt;br /&gt;
import javax.media.j3d.AudioDevice;&lt;br /&gt;
import javax.media.j3d.Background;&lt;br /&gt;
import javax.media.j3d.BoundingSphere;&lt;br /&gt;
import javax.media.j3d.Bounds;&lt;br /&gt;
import javax.media.j3d.BranchGroup;&lt;br /&gt;
import javax.media.j3d.Canvas3D;&lt;br /&gt;
import javax.media.j3d.ColoringAttributes;&lt;br /&gt;
import javax.media.j3d.GraphicsConfigTemplate3D;&lt;br /&gt;
import javax.media.j3d.Group;&lt;br /&gt;
import javax.media.j3d.HiResCoord;&lt;br /&gt;
import javax.media.j3d.ImageComponent;&lt;br /&gt;
import javax.media.j3d.ImageComponent2D;&lt;br /&gt;
import javax.media.j3d.Locale;&lt;br /&gt;
import javax.media.j3d.PhysicalBody;&lt;br /&gt;
import javax.media.j3d.PhysicalEnvironment;&lt;br /&gt;
import javax.media.j3d.RotationInterpolator;&lt;br /&gt;
import javax.media.j3d.Shape3D;&lt;br /&gt;
import javax.media.j3d.Transform3D;&lt;br /&gt;
import javax.media.j3d.TransformGroup;&lt;br /&gt;
import javax.media.j3d.View;&lt;br /&gt;
import javax.media.j3d.ViewPlatform;&lt;br /&gt;
import javax.media.j3d.VirtualUniverse;&lt;br /&gt;
import javax.vecmath.Color3f;&lt;br /&gt;
import javax.vecmath.Point3d;&lt;br /&gt;
import javax.vecmath.Point3f;&lt;br /&gt;
import javax.vecmath.Vector3d;&lt;br /&gt;
import com.sun.j3d.audioengines.javasound.JavaSoundMixer;&lt;br /&gt;
import com.sun.j3d.utils.applet.MainFrame;&lt;br /&gt;
import com.sun.j3d.utils.geometry.ColorCube;&lt;br /&gt;
import com.sun.j3d.utils.geometry.Sphere;&lt;br /&gt;
import com.sun.j3d.utils.image.TextureLoader;&lt;br /&gt;
/**&lt;br /&gt;
 * This application creates a Universe with 3 Locales. The first Locale contains&lt;br /&gt;
 * the Sun and some planets. The second Locale contains the planet Earth. The&lt;br /&gt;
 * third Locale is situated on the surface of the earth and contains a &amp;quot;house&amp;quot;&lt;br /&gt;
 */&lt;br /&gt;
public class HiResCoordTest extends Java3dApplet implements ActionListener {&lt;br /&gt;
  private static int m_kWidth = 320;&lt;br /&gt;
  private static int m_kHeight = 350;&lt;br /&gt;
  private final long m_TranslateSunZ = (long) 8.0e+11;&lt;br /&gt;
  private final long m_TranslateEarthZ = (long) 4.0e+7;&lt;br /&gt;
  private final long m_TranslateHouseZ = (long) 4.0e+2;&lt;br /&gt;
  private long m_TranslateZ = m_TranslateSunZ;&lt;br /&gt;
  // all units are in metres&lt;br /&gt;
  private final long m_EarthOrbit = (long) 150.0e+9;&lt;br /&gt;
  private final long m_EarthRadius = (long) 6.378e+6;&lt;br /&gt;
  private final long m_MarsOrbit = (long) 228.6e+9;&lt;br /&gt;
  private final long m_MarsRadius = (long) 3.373e+6;&lt;br /&gt;
  private final long m_MercuryOrbit = (long) 58.2e+9;&lt;br /&gt;
  private final long m_MercuryRadius = (long) 2.436e+6;&lt;br /&gt;
  private final long m_SunRadius = (long) 7.0e+8;&lt;br /&gt;
  private ViewPlatform[] m_ViewPlatformArray = new ViewPlatform[3];&lt;br /&gt;
  private View m_View = null;&lt;br /&gt;
  public HiResCoordTest() {&lt;br /&gt;
    initJava3d();&lt;br /&gt;
  }&lt;br /&gt;
  public void actionPerformed(ActionEvent event) {&lt;br /&gt;
    if (event.getActionCommand() == &amp;quot;Sun&amp;quot;) {&lt;br /&gt;
      m_TranslateZ = m_TranslateSunZ;&lt;br /&gt;
      m_View.attachViewPlatform(m_ViewPlatformArray[0]);&lt;br /&gt;
    } else if (event.getActionCommand() == &amp;quot;Earth&amp;quot;&lt;br /&gt;
        &amp;amp;&amp;amp; m_ViewPlatformArray[1] != null) {&lt;br /&gt;
      m_TranslateZ = m_TranslateEarthZ;&lt;br /&gt;
      m_View.attachViewPlatform(m_ViewPlatformArray[1]);&lt;br /&gt;
    } else if (event.getActionCommand() == &amp;quot;House&amp;quot;&lt;br /&gt;
        &amp;amp;&amp;amp; m_ViewPlatformArray[1] != null) {&lt;br /&gt;
      m_TranslateZ = m_TranslateHouseZ;&lt;br /&gt;
      m_View.attachViewPlatform(m_ViewPlatformArray[2]);&lt;br /&gt;
    }&lt;br /&gt;
    m_View.setBackClipDistance(getBackClipDistance());&lt;br /&gt;
    m_View.setFrontClipDistance(getFrontClipDistance());&lt;br /&gt;
  }&lt;br /&gt;
  protected void addCanvas3D(Canvas3D c3d) {&lt;br /&gt;
    setLayout(new BorderLayout());&lt;br /&gt;
    Panel controlPanel = new Panel();&lt;br /&gt;
    controlPanel.add(c3d);&lt;br /&gt;
    Button button = null;&lt;br /&gt;
    button = new Button(&amp;quot;Sun&amp;quot;);&lt;br /&gt;
    button.addActionListener(this);&lt;br /&gt;
    controlPanel.add(button);&lt;br /&gt;
    button = new Button(&amp;quot;Earth&amp;quot;);&lt;br /&gt;
    button.addActionListener(this);&lt;br /&gt;
    controlPanel.add(button);&lt;br /&gt;
    button = new Button(&amp;quot;House&amp;quot;);&lt;br /&gt;
    button.addActionListener(this);&lt;br /&gt;
    controlPanel.add(button);&lt;br /&gt;
    add(controlPanel, BorderLayout.SOUTH);&lt;br /&gt;
    add(c3d, BorderLayout.CENTER);&lt;br /&gt;
    doLayout();&lt;br /&gt;
  }&lt;br /&gt;
  // this is the locale for the Sun&lt;br /&gt;
  protected Locale createLocale(VirtualUniverse u) {&lt;br /&gt;
    int[] xPos = { 0, 0, 0, 0, 0, 0, 0, 0 };&lt;br /&gt;
    int[] yPos = { 0, 0, 0, 0, 0, 0, 0, 0 };&lt;br /&gt;
    int[] zPos = { 0, 0, 0, 0, 0, 0, 0, 0 };&lt;br /&gt;
    HiResCoord hiResCoord = new HiResCoord(xPos, yPos, zPos);&lt;br /&gt;
    return new Locale(u, hiResCoord);&lt;br /&gt;
  }&lt;br /&gt;
  // this is the locale for the earth&lt;br /&gt;
  protected Locale createLocaleEarth(VirtualUniverse u) {&lt;br /&gt;
    int[] xPos = { 0, 0, 0, 0, 0, 0, 0, 0 };&lt;br /&gt;
    int[] yPos = { 0, 0, 0, 0, 0, 0, 0, 0 };&lt;br /&gt;
    int[] zPos = { 0, 0, 0, 1, 0, 0, 0, 0 };&lt;br /&gt;
    HiResCoord hiResCoord = new HiResCoord(xPos, yPos, zPos);&lt;br /&gt;
    return new Locale(u, hiResCoord);&lt;br /&gt;
  }&lt;br /&gt;
  // this is the locale for the house on earth&lt;br /&gt;
  protected Locale createLocaleHouse(VirtualUniverse u) {&lt;br /&gt;
    int[] xPos = { 0, 0, 0, 0, 0, 0, 0, 0 };&lt;br /&gt;
    int[] yPos = { 0, 0, 0, 0, 100, 0, 0, 0 };&lt;br /&gt;
    int[] zPos = { 0, 0, 0, 1, 100, 0, 0, 0 };&lt;br /&gt;
    HiResCoord hiResCoord = new HiResCoord(xPos, yPos, zPos);&lt;br /&gt;
    return new Locale(u, hiResCoord);&lt;br /&gt;
  }&lt;br /&gt;
  public void initJava3d() {&lt;br /&gt;
    super.initJava3d();&lt;br /&gt;
    // create a second locale for the earth and attach it to the universe&lt;br /&gt;
    Locale locale = createLocaleEarth(m_Universe);&lt;br /&gt;
    BranchGroup sceneBranchGroup = createSceneBranchGroupEarth();&lt;br /&gt;
    sceneBranchGroup.addChild(createBackground());&lt;br /&gt;
    m_ViewPlatformArray[1] = createViewPlatform();&lt;br /&gt;
    BranchGroup viewBranchGroup = createViewBranchGroup(&lt;br /&gt;
        getViewTransformGroupArray(1), m_ViewPlatformArray[1]);&lt;br /&gt;
//    getJ3dTree().recursiveApplyCapability(sceneBranchGroup);&lt;br /&gt;
  //  getJ3dTree().recursiveApplyCapability(viewBranchGroup);&lt;br /&gt;
    locale.addBranchGraph(sceneBranchGroup);&lt;br /&gt;
    addViewBranchGroup(locale, viewBranchGroup);&lt;br /&gt;
    // create a third locale for the house on earth and attach it to the&lt;br /&gt;
    // universe&lt;br /&gt;
    locale = createLocaleHouse(m_Universe);&lt;br /&gt;
    sceneBranchGroup = createSceneBranchGroupHouse();&lt;br /&gt;
    sceneBranchGroup.addChild(createBackground());&lt;br /&gt;
    m_ViewPlatformArray[2] = createViewPlatform();&lt;br /&gt;
    viewBranchGroup = createViewBranchGroup(getViewTransformGroupArray(2),&lt;br /&gt;
        m_ViewPlatformArray[2]);&lt;br /&gt;
//    getJ3dTree().recursiveApplyCapability(sceneBranchGroup);&lt;br /&gt;
  //  getJ3dTree().recursiveApplyCapability(viewBranchGroup);&lt;br /&gt;
    locale.addBranchGraph(sceneBranchGroup);&lt;br /&gt;
    addViewBranchGroup(locale, viewBranchGroup);&lt;br /&gt;
    onDoneInit();&lt;br /&gt;
  }&lt;br /&gt;
  protected ViewPlatform createViewPlatform() {&lt;br /&gt;
    ViewPlatform vp = super.createViewPlatform();&lt;br /&gt;
    // save the viewplatform for the Sun&amp;quot;s locale&lt;br /&gt;
    if (m_ViewPlatformArray[0] == null)&lt;br /&gt;
      m_ViewPlatformArray[0] = vp;&lt;br /&gt;
    return vp;&lt;br /&gt;
  }&lt;br /&gt;
  protected View createView(ViewPlatform vp) {&lt;br /&gt;
    // save the view&lt;br /&gt;
    m_View = super.createView(vp);&lt;br /&gt;
    return m_View;&lt;br /&gt;
  }&lt;br /&gt;
  public TransformGroup[] getViewTransformGroupArray() {&lt;br /&gt;
    TransformGroup[] tgArray = new TransformGroup[1];&lt;br /&gt;
    tgArray[0] = new TransformGroup();&lt;br /&gt;
    Vector3d vTrans = new Vector3d(0.0, 0.0, -m_TranslateSunZ);&lt;br /&gt;
    // move the camera BACK so we can view the scene&lt;br /&gt;
    // note that the coordinate directions are&lt;br /&gt;
    // reversed as we are moving the view&lt;br /&gt;
    Transform3D t3d = new Transform3D();&lt;br /&gt;
    t3d.setTranslation(vTrans);&lt;br /&gt;
    t3d.invert();&lt;br /&gt;
    tgArray[0].setTransform(t3d);&lt;br /&gt;
    return tgArray;&lt;br /&gt;
  }&lt;br /&gt;
  public TransformGroup[] getViewTransformGroupArray(int nIndex) {&lt;br /&gt;
    TransformGroup[] tgArray = new TransformGroup[1];&lt;br /&gt;
    tgArray[0] = new TransformGroup();&lt;br /&gt;
    Vector3d vTrans = null;&lt;br /&gt;
    if (nIndex == 1)&lt;br /&gt;
      vTrans = new Vector3d(0.0, 0.0, -m_TranslateEarthZ);&lt;br /&gt;
    else&lt;br /&gt;
      vTrans = new Vector3d(0.0, 0.0, -m_TranslateHouseZ);&lt;br /&gt;
    // move the camera BACK so we can view the scene&lt;br /&gt;
    // note that the coordinate directions are&lt;br /&gt;
    // reversed as we are moving the view&lt;br /&gt;
    Transform3D t3d = new Transform3D();&lt;br /&gt;
    t3d.setTranslation(vTrans);&lt;br /&gt;
    t3d.invert();&lt;br /&gt;
    tgArray[0].setTransform(t3d);&lt;br /&gt;
    return tgArray;&lt;br /&gt;
  }&lt;br /&gt;
  protected double getBackClipDistance() {&lt;br /&gt;
    return 1.1 * m_TranslateZ;&lt;br /&gt;
  }&lt;br /&gt;
  protected double getFrontClipDistance() {&lt;br /&gt;
    return 0.1 * m_TranslateZ;&lt;br /&gt;
  }&lt;br /&gt;
  private Shape3D createLabel(String szText, float x, float y, float z) {&lt;br /&gt;
    BufferedImage bufferedImage = new BufferedImage(50, 20,&lt;br /&gt;
        BufferedImage.TYPE_INT_RGB);&lt;br /&gt;
    Graphics g = bufferedImage.getGraphics();&lt;br /&gt;
    g.setColor(Color.white);&lt;br /&gt;
    g.drawString(szText, 10, 10);&lt;br /&gt;
    ImageComponent2D imageComponent2D = new ImageComponent2D(&lt;br /&gt;
        ImageComponent2D.FORMAT_RGB, bufferedImage);&lt;br /&gt;
    imageComponent2D.setCapability(ImageComponent.ALLOW_IMAGE_READ);&lt;br /&gt;
    imageComponent2D.setCapability(ImageComponent.ALLOW_SIZE_READ);&lt;br /&gt;
    // create the Raster for the image&lt;br /&gt;
    javax.media.j3d.Raster renderRaster = new javax.media.j3d.Raster(&lt;br /&gt;
        new Point3f(x, y, z), javax.media.j3d.Raster.RASTER_COLOR, 0,&lt;br /&gt;
        0, bufferedImage.getWidth(), bufferedImage.getHeight(),&lt;br /&gt;
        imageComponent2D, null);&lt;br /&gt;
    return new Shape3D(renderRaster);&lt;br /&gt;
  }&lt;br /&gt;
  // creates the Sun&lt;br /&gt;
  protected BranchGroup createSceneBranchGroup() {&lt;br /&gt;
    BranchGroup objRoot = super.createSceneBranchGroup();&lt;br /&gt;
    Transform3D t3dTilt = new Transform3D();&lt;br /&gt;
    t3dTilt.rotX(0.3);&lt;br /&gt;
    TransformGroup objTrans = new TransformGroup(t3dTilt);&lt;br /&gt;
    objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);&lt;br /&gt;
    TransformGroup objTransPlanets = new TransformGroup();&lt;br /&gt;
    objTransPlanets.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);&lt;br /&gt;
    Transform3D yAxis = new Transform3D();&lt;br /&gt;
    Alpha rotationAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE, 0, 0,&lt;br /&gt;
        4000, 0, 0, 0, 0, 0);&lt;br /&gt;
    RotationInterpolator rotator = new RotationInterpolator(rotationAlpha,&lt;br /&gt;
        objTransPlanets, yAxis, 0.0f, (float) Math.PI * 2.0f);&lt;br /&gt;
    BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0),&lt;br /&gt;
        m_TranslateSunZ);&lt;br /&gt;
    rotator.setSchedulingBounds(bounds);&lt;br /&gt;
    objTransPlanets.addChild(rotator);&lt;br /&gt;
    // create the sun&lt;br /&gt;
    TransformGroup sunTg = createSun();&lt;br /&gt;
    // create Earth&lt;br /&gt;
    Transform3D t3dEarth = new Transform3D();&lt;br /&gt;
    t3dEarth.setScale(m_EarthRadius);&lt;br /&gt;
    t3dEarth.setTranslation(new Vector3d(m_EarthOrbit, 0, 0));&lt;br /&gt;
    objTransPlanets.addChild(createPlanet(&amp;quot;Earth&amp;quot;, new Color3f(0, 0.1f,&lt;br /&gt;
        1.0f), t3dEarth, null));&lt;br /&gt;
    // create Mars&lt;br /&gt;
    Transform3D t3dMars = new Transform3D();&lt;br /&gt;
    t3dMars.setTranslation(new Vector3d(Math.sin(Math.PI * 1.5)&lt;br /&gt;
        * m_MarsOrbit, 0, Math.cos(Math.PI * 0.5) * m_MarsOrbit));&lt;br /&gt;
    t3dMars.setScale(m_MarsRadius);&lt;br /&gt;
    objTransPlanets.addChild(createPlanet(&amp;quot;Mars&amp;quot;, new Color3f(1, 0, 0),&lt;br /&gt;
        t3dMars, null));&lt;br /&gt;
    // create Mercury&lt;br /&gt;
    Transform3D t3dMercury = new Transform3D();&lt;br /&gt;
    t3dMercury.setTranslation(new Vector3d(Math.sin(Math.PI)&lt;br /&gt;
        * m_MercuryOrbit, 0, Math.cos(Math.PI) * m_MercuryOrbit));&lt;br /&gt;
    t3dMercury.setScale(m_MercuryRadius);&lt;br /&gt;
    objTransPlanets.addChild(createPlanet(&amp;quot;Mercury&amp;quot;, new Color3f(0.5f,&lt;br /&gt;
        0.5f, 0.5f), t3dMercury, null));&lt;br /&gt;
    sunTg.addChild(objTransPlanets);&lt;br /&gt;
    objTrans.addChild(sunTg);&lt;br /&gt;
    objRoot.addChild(objTrans);&lt;br /&gt;
    return objRoot;&lt;br /&gt;
  }&lt;br /&gt;
  private TransformGroup createSun() {&lt;br /&gt;
    TransformGroup objTrans = new TransformGroup();&lt;br /&gt;
    Appearance app = new Appearance();&lt;br /&gt;
    ColoringAttributes ca = new ColoringAttributes();&lt;br /&gt;
    ca.setColor(new Color3f(1, 1, 0));&lt;br /&gt;
    app.setColoringAttributes(ca);&lt;br /&gt;
    objTrans.addChild(createLabel(&amp;quot;Sun&amp;quot;, m_SunRadius * 1.1f,&lt;br /&gt;
        m_SunRadius * 1.1f, 0));&lt;br /&gt;
    objTrans.addChild(new Sphere(m_SunRadius, app));&lt;br /&gt;
    return objTrans;&lt;br /&gt;
  }&lt;br /&gt;
  private TransformGroup createPlanet(String szName, Color3f color,&lt;br /&gt;
      Transform3D t3d, String szTexture) {&lt;br /&gt;
    TransformGroup objTrans = new TransformGroup(t3d);&lt;br /&gt;
    Appearance app = new Appearance();&lt;br /&gt;
    if (szTexture != null) {&lt;br /&gt;
      TextureLoader tex = new TextureLoader(szTexture, this);&lt;br /&gt;
      app.setTexture(tex.getTexture());&lt;br /&gt;
    } else {&lt;br /&gt;
      ColoringAttributes ca = new ColoringAttributes();&lt;br /&gt;
      ca.setColor(color);&lt;br /&gt;
      app.setColoringAttributes(ca);&lt;br /&gt;
    }&lt;br /&gt;
    objTrans.addChild(createLabel(szName, 1.2f, 1.2f, 0));&lt;br /&gt;
    objTrans.addChild(new Sphere(1.0f, Sphere.GENERATE_NORMALS&lt;br /&gt;
        | Sphere.GENERATE_TEXTURE_COORDS, app));&lt;br /&gt;
    return objTrans;&lt;br /&gt;
  }&lt;br /&gt;
  // creates the Earth&lt;br /&gt;
  protected BranchGroup createSceneBranchGroupEarth() {&lt;br /&gt;
    BranchGroup objRoot = super.createSceneBranchGroup();&lt;br /&gt;
    TransformGroup objTrans = new TransformGroup();&lt;br /&gt;
    objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);&lt;br /&gt;
    Transform3D yAxis = new Transform3D();&lt;br /&gt;
    yAxis.rotZ(0.2);&lt;br /&gt;
    Alpha rotationAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE, 0, 0,&lt;br /&gt;
        4000, 0, 0, 0, 0, 0);&lt;br /&gt;
    RotationInterpolator rotator = new RotationInterpolator(rotationAlpha,&lt;br /&gt;
        objTrans, yAxis, 0.0f, (float) Math.PI * 2.0f);&lt;br /&gt;
    BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0),&lt;br /&gt;
        m_TranslateSunZ);&lt;br /&gt;
    rotator.setSchedulingBounds(bounds);&lt;br /&gt;
    objTrans.addChild(rotator);&lt;br /&gt;
    Transform3D t3d = new Transform3D();&lt;br /&gt;
    t3d.setScale(m_EarthRadius);&lt;br /&gt;
    objTrans.addChild(createPlanet(&amp;quot;Earth&amp;quot;, new Color3f(0, 0.1f, 1), t3d,&lt;br /&gt;
        &amp;quot;earth.jpg&amp;quot;));&lt;br /&gt;
    objRoot.addChild(objTrans);&lt;br /&gt;
    return objRoot;&lt;br /&gt;
  }&lt;br /&gt;
  // creates the House&lt;br /&gt;
  protected BranchGroup createSceneBranchGroupHouse() {&lt;br /&gt;
    BranchGroup objRoot = super.createSceneBranchGroup();&lt;br /&gt;
    Transform3D t3dTilt = new Transform3D();&lt;br /&gt;
    t3dTilt.rotX(0.3);&lt;br /&gt;
    TransformGroup subTg = new TransformGroup(t3dTilt);&lt;br /&gt;
    subTg.addChild(new ColorCube(50.0));&lt;br /&gt;
    subTg.addChild(createLabel(&amp;quot;House&amp;quot;, 60, 60, 0));&lt;br /&gt;
    objRoot.addChild(subTg);&lt;br /&gt;
    return objRoot;&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    HiResCoordTest hiResCoordTest = new HiResCoordTest();&lt;br /&gt;
    hiResCoordTest.saveCommandLineArguments(args);&lt;br /&gt;
    new MainFrame(hiResCoordTest, m_kWidth, m_kHeight);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
 * Copyright (C) 2001 Daniel Selman&lt;br /&gt;
 * &lt;br /&gt;
 * First distributed with the book &amp;quot;Java 3D Programming&amp;quot; by Daniel Selman and&lt;br /&gt;
 * published by Manning Publications. http://manning.ru/selman&lt;br /&gt;
 * &lt;br /&gt;
 * This program is free software; you can redistribute it and/or modify it under&lt;br /&gt;
 * the terms of the GNU General Public License as published by the Free Software&lt;br /&gt;
 * Foundation, version 2.&lt;br /&gt;
 * &lt;br /&gt;
 * This program is distributed in the hope that it will be useful, but WITHOUT&lt;br /&gt;
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS&lt;br /&gt;
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more&lt;br /&gt;
 * details.&lt;br /&gt;
 * &lt;br /&gt;
 * The license can be found on the WWW at: http://www.fsf.org/copyleft/gpl.html&lt;br /&gt;
 * &lt;br /&gt;
 * Or by writing to: Free Software Foundation, Inc., 59 Temple Place - Suite&lt;br /&gt;
 * 330, Boston, MA 02111-1307, USA.&lt;br /&gt;
 * &lt;br /&gt;
 * Authors can be contacted at: Daniel Selman: daniel@selman.org&lt;br /&gt;
 * &lt;br /&gt;
 * If you make changes you think others would like, please contact one of the&lt;br /&gt;
 * authors or someone at the www.j3d.org web site.&lt;br /&gt;
 ******************************************************************************/&lt;br /&gt;
//*****************************************************************************&lt;br /&gt;
/**&lt;br /&gt;
 * Java3dApplet&lt;br /&gt;
 * &lt;br /&gt;
 * Base class for defining a Java 3D applet. Contains some useful methods for&lt;br /&gt;
 * defining views and scenegraphs etc.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Daniel Selman&lt;br /&gt;
 * @version 1.0&lt;br /&gt;
 */&lt;br /&gt;
//*****************************************************************************&lt;br /&gt;
abstract class Java3dApplet extends Applet {&lt;br /&gt;
  public static int m_kWidth = 300;&lt;br /&gt;
  public static int m_kHeight = 300;&lt;br /&gt;
  protected String[] m_szCommandLineArray = null;&lt;br /&gt;
  protected VirtualUniverse m_Universe = null;&lt;br /&gt;
  protected BranchGroup m_SceneBranchGroup = null;&lt;br /&gt;
  protected Bounds m_ApplicationBounds = null;&lt;br /&gt;
  //  protected com.tornadolabs.j3dtree.Java3dTree m_Java3dTree = null;&lt;br /&gt;
  public Java3dApplet() {&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isApplet() {&lt;br /&gt;
    try {&lt;br /&gt;
      System.getProperty(&amp;quot;user.dir&amp;quot;);&lt;br /&gt;
      System.out.println(&amp;quot;Running as Application.&amp;quot;);&lt;br /&gt;
      return false;&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(&amp;quot;Running as Applet.&amp;quot;);&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  public URL getWorkingDirectory() throws java.net.MalformedURLException {&lt;br /&gt;
    URL url = null;&lt;br /&gt;
    try {&lt;br /&gt;
      File file = new File(System.getProperty(&amp;quot;user.dir&amp;quot;));&lt;br /&gt;
      System.out.println(&amp;quot;Running as Application:&amp;quot;);&lt;br /&gt;
      System.out.println(&amp;quot;   &amp;quot; + file.toURL());&lt;br /&gt;
      return file.toURL();&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(&amp;quot;Running as Applet:&amp;quot;);&lt;br /&gt;
    System.out.println(&amp;quot;   &amp;quot; + getCodeBase());&lt;br /&gt;
    return getCodeBase();&lt;br /&gt;
  }&lt;br /&gt;
  public VirtualUniverse getVirtualUniverse() {&lt;br /&gt;
    return m_Universe;&lt;br /&gt;
  }&lt;br /&gt;
  //public com.tornadolabs.j3dtree.Java3dTree getJ3dTree() {&lt;br /&gt;
  //return m_Java3dTree;&lt;br /&gt;
  //  }&lt;br /&gt;
  public Locale getFirstLocale() {&lt;br /&gt;
    java.util.Enumeration e = m_Universe.getAllLocales();&lt;br /&gt;
    if (e.hasMoreElements() != false)&lt;br /&gt;
      return (Locale) e.nextElement();&lt;br /&gt;
    return null;&lt;br /&gt;
  }&lt;br /&gt;
  protected Bounds getApplicationBounds() {&lt;br /&gt;
    if (m_ApplicationBounds == null)&lt;br /&gt;
      m_ApplicationBounds = createApplicationBounds();&lt;br /&gt;
    return m_ApplicationBounds;&lt;br /&gt;
  }&lt;br /&gt;
  protected Bounds createApplicationBounds() {&lt;br /&gt;
    m_ApplicationBounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0),&lt;br /&gt;
        100.0);&lt;br /&gt;
    return m_ApplicationBounds;&lt;br /&gt;
  }&lt;br /&gt;
  protected Background createBackground() {&lt;br /&gt;
    Background back = new Background(new Color3f(0.9f, 0.9f, 0.9f));&lt;br /&gt;
    back.setApplicationBounds(createApplicationBounds());&lt;br /&gt;
    return back;&lt;br /&gt;
  }&lt;br /&gt;
  public void initJava3d() {&lt;br /&gt;
    //  m_Java3dTree = new com.tornadolabs.j3dtree.Java3dTree();&lt;br /&gt;
    m_Universe = createVirtualUniverse();&lt;br /&gt;
    Locale locale = createLocale(m_Universe);&lt;br /&gt;
    BranchGroup sceneBranchGroup = createSceneBranchGroup();&lt;br /&gt;
    ViewPlatform vp = createViewPlatform();&lt;br /&gt;
    BranchGroup viewBranchGroup = createViewBranchGroup(&lt;br /&gt;
        getViewTransformGroupArray(), vp);&lt;br /&gt;
    createView(vp);&lt;br /&gt;
    Background background = createBackground();&lt;br /&gt;
    if (background != null)&lt;br /&gt;
      sceneBranchGroup.addChild(background);&lt;br /&gt;
    //    m_Java3dTree.recursiveApplyCapability(sceneBranchGroup);&lt;br /&gt;
    //  m_Java3dTree.recursiveApplyCapability(viewBranchGroup);&lt;br /&gt;
    locale.addBranchGraph(sceneBranchGroup);&lt;br /&gt;
    addViewBranchGroup(locale, viewBranchGroup);&lt;br /&gt;
    onDoneInit();&lt;br /&gt;
  }&lt;br /&gt;
  protected void onDoneInit() {&lt;br /&gt;
    //  m_Java3dTree.updateNodes(m_Universe);&lt;br /&gt;
  }&lt;br /&gt;
  protected double getScale() {&lt;br /&gt;
    return 1.0;&lt;br /&gt;
  }&lt;br /&gt;
  public TransformGroup[] getViewTransformGroupArray() {&lt;br /&gt;
    TransformGroup[] tgArray = new TransformGroup[1];&lt;br /&gt;
    tgArray[0] = new TransformGroup();&lt;br /&gt;
    // move the camera BACK a little...&lt;br /&gt;
    // note that we have to invert the matrix as&lt;br /&gt;
    // we are moving the viewer&lt;br /&gt;
    Transform3D t3d = new Transform3D();&lt;br /&gt;
    t3d.setScale(getScale());&lt;br /&gt;
    t3d.setTranslation(new Vector3d(0.0, 0.0, -20.0));&lt;br /&gt;
    t3d.invert();&lt;br /&gt;
    tgArray[0].setTransform(t3d);&lt;br /&gt;
    return tgArray;&lt;br /&gt;
  }&lt;br /&gt;
  protected void addViewBranchGroup(Locale locale, BranchGroup bg) {&lt;br /&gt;
    locale.addBranchGraph(bg);&lt;br /&gt;
  }&lt;br /&gt;
  protected Locale createLocale(VirtualUniverse u) {&lt;br /&gt;
    return new Locale(u);&lt;br /&gt;
  }&lt;br /&gt;
  protected BranchGroup createSceneBranchGroup() {&lt;br /&gt;
    m_SceneBranchGroup = new BranchGroup();&lt;br /&gt;
    return m_SceneBranchGroup;&lt;br /&gt;
  }&lt;br /&gt;
  protected View createView(ViewPlatform vp) {&lt;br /&gt;
    View view = new View();&lt;br /&gt;
    PhysicalBody pb = createPhysicalBody();&lt;br /&gt;
    PhysicalEnvironment pe = createPhysicalEnvironment();&lt;br /&gt;
    AudioDevice audioDevice = createAudioDevice(pe);&lt;br /&gt;
    if (audioDevice != null) {&lt;br /&gt;
      pe.setAudioDevice(audioDevice);&lt;br /&gt;
      audioDevice.initialize();&lt;br /&gt;
    }&lt;br /&gt;
    view.setPhysicalEnvironment(pe);&lt;br /&gt;
    view.setPhysicalBody(pb);&lt;br /&gt;
    if (vp != null)&lt;br /&gt;
      view.attachViewPlatform(vp);&lt;br /&gt;
    view.setBackClipDistance(getBackClipDistance());&lt;br /&gt;
    view.setFrontClipDistance(getFrontClipDistance());&lt;br /&gt;
    Canvas3D c3d = createCanvas3D();&lt;br /&gt;
    view.addCanvas3D(c3d);&lt;br /&gt;
    addCanvas3D(c3d);&lt;br /&gt;
    return view;&lt;br /&gt;
  }&lt;br /&gt;
  protected PhysicalBody createPhysicalBody() {&lt;br /&gt;
    return new PhysicalBody();&lt;br /&gt;
  }&lt;br /&gt;
  protected AudioDevice createAudioDevice(PhysicalEnvironment pe) {&lt;br /&gt;
    JavaSoundMixer javaSoundMixer = new JavaSoundMixer(pe);&lt;br /&gt;
    if (javaSoundMixer == null)&lt;br /&gt;
      System.out.println(&amp;quot;create of audiodevice failed&amp;quot;);&lt;br /&gt;
    return javaSoundMixer;&lt;br /&gt;
  }&lt;br /&gt;
  protected PhysicalEnvironment createPhysicalEnvironment() {&lt;br /&gt;
    return new PhysicalEnvironment();&lt;br /&gt;
  }&lt;br /&gt;
  protected float getViewPlatformActivationRadius() {&lt;br /&gt;
    return 100;&lt;br /&gt;
  }&lt;br /&gt;
  protected ViewPlatform createViewPlatform() {&lt;br /&gt;
    ViewPlatform vp = new ViewPlatform();&lt;br /&gt;
    vp.setViewAttachPolicy(View.RELATIVE_TO_FIELD_OF_VIEW);&lt;br /&gt;
    vp.setActivationRadius(getViewPlatformActivationRadius());&lt;br /&gt;
    return vp;&lt;br /&gt;
  }&lt;br /&gt;
  protected Canvas3D createCanvas3D() {&lt;br /&gt;
    GraphicsConfigTemplate3D gc3D = new GraphicsConfigTemplate3D();&lt;br /&gt;
    gc3D.setSceneAntialiasing(GraphicsConfigTemplate.PREFERRED);&lt;br /&gt;
    GraphicsDevice gd[] = GraphicsEnvironment.getLocalGraphicsEnvironment()&lt;br /&gt;
        .getScreenDevices();&lt;br /&gt;
    Canvas3D c3d = new Canvas3D(gd[0].getBestConfiguration(gc3D));&lt;br /&gt;
    c3d.setSize(getCanvas3dWidth(c3d), getCanvas3dHeight(c3d));&lt;br /&gt;
    return c3d;&lt;br /&gt;
  }&lt;br /&gt;
  protected int getCanvas3dWidth(Canvas3D c3d) {&lt;br /&gt;
    return m_kWidth;&lt;br /&gt;
  }&lt;br /&gt;
  protected int getCanvas3dHeight(Canvas3D c3d) {&lt;br /&gt;
    return m_kHeight;&lt;br /&gt;
  }&lt;br /&gt;
  protected double getBackClipDistance() {&lt;br /&gt;
    return 100.0;&lt;br /&gt;
  }&lt;br /&gt;
  protected double getFrontClipDistance() {&lt;br /&gt;
    return 1.0;&lt;br /&gt;
  }&lt;br /&gt;
  protected BranchGroup createViewBranchGroup(TransformGroup[] tgArray,&lt;br /&gt;
      ViewPlatform vp) {&lt;br /&gt;
    BranchGroup vpBranchGroup = new BranchGroup();&lt;br /&gt;
    if (tgArray != null &amp;amp;&amp;amp; tgArray.length &amp;gt; 0) {&lt;br /&gt;
      Group parentGroup = vpBranchGroup;&lt;br /&gt;
      TransformGroup curTg = null;&lt;br /&gt;
      for (int n = 0; n &amp;lt; tgArray.length; n++) {&lt;br /&gt;
        curTg = tgArray[n];&lt;br /&gt;
        parentGroup.addChild(curTg);&lt;br /&gt;
        parentGroup = curTg;&lt;br /&gt;
      }&lt;br /&gt;
      tgArray[tgArray.length - 1].addChild(vp);&lt;br /&gt;
    } else&lt;br /&gt;
      vpBranchGroup.addChild(vp);&lt;br /&gt;
    return vpBranchGroup;&lt;br /&gt;
  }&lt;br /&gt;
  protected void addCanvas3D(Canvas3D c3d) {&lt;br /&gt;
    setLayout(new BorderLayout());&lt;br /&gt;
    add(c3d, BorderLayout.CENTER);&lt;br /&gt;
    doLayout();&lt;br /&gt;
  }&lt;br /&gt;
  protected VirtualUniverse createVirtualUniverse() {&lt;br /&gt;
    return new VirtualUniverse();&lt;br /&gt;
  }&lt;br /&gt;
  protected void saveCommandLineArguments(String[] szArgs) {&lt;br /&gt;
    m_szCommandLineArray = szArgs;&lt;br /&gt;
  }&lt;br /&gt;
  protected String[] getCommandLineArguments() {&lt;br /&gt;
    return m_szCommandLineArray;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Locale demo ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// From: http://www.micg.et.fh-stralsund.de/Java3D/java3D.htm#Bild1&lt;br /&gt;
&lt;br /&gt;
import java.applet.Applet;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Frame;&lt;br /&gt;
import java.awt.GraphicsConfiguration;&lt;br /&gt;
import javax.media.j3d.Appearance;&lt;br /&gt;
import javax.media.j3d.BranchGroup;&lt;br /&gt;
import javax.media.j3d.Canvas3D;&lt;br /&gt;
import javax.media.j3d.ColoringAttributes;&lt;br /&gt;
import javax.media.j3d.Transform3D;&lt;br /&gt;
import javax.media.j3d.TransformGroup;&lt;br /&gt;
import javax.vecmath.Color3f;&lt;br /&gt;
import com.sun.j3d.utils.applet.MainFrame;&lt;br /&gt;
import com.sun.j3d.utils.geometry.Box;&lt;br /&gt;
import com.sun.j3d.utils.universe.SimpleUniverse;&lt;br /&gt;
public class Erscheinungsbild extends Applet {&lt;br /&gt;
  /**&lt;br /&gt;
   * init Methoden fur die Darstellung als Applet&lt;br /&gt;
   */&lt;br /&gt;
  public void init() {&lt;br /&gt;
    setLayout(new BorderLayout());&lt;br /&gt;
    GraphicsConfiguration config = SimpleUniverse&lt;br /&gt;
        .getPreferredConfiguration();&lt;br /&gt;
    canvas3D = new Canvas3D(config);&lt;br /&gt;
    add(&amp;quot;Center&amp;quot;, canvas3D);&lt;br /&gt;
    BranchGroup szene = macheSzene();&lt;br /&gt;
    szene.rupile();&lt;br /&gt;
    universe = new SimpleUniverse(canvas3D);&lt;br /&gt;
    universe.getViewingPlatform().setNominalViewingTransform();&lt;br /&gt;
    universe.addBranchGraph(szene);&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Erstellt den Szenegraphen&lt;br /&gt;
   * &lt;br /&gt;
   * @return BranchGroup&lt;br /&gt;
   */&lt;br /&gt;
  public BranchGroup macheSzene() {&lt;br /&gt;
    BranchGroup objWurzel = new BranchGroup();&lt;br /&gt;
    // Transformation, 2 Rotationen:&lt;br /&gt;
    Transform3D drehung = new Transform3D();&lt;br /&gt;
    Transform3D drehung2 = new Transform3D();&lt;br /&gt;
    drehung.rotX(Math.PI / 4.0d);&lt;br /&gt;
    drehung2.rotY(Math.PI / 5.0d);&lt;br /&gt;
    drehung.mul(drehung2);&lt;br /&gt;
    TransformGroup objDreh = new TransformGroup(drehung);&lt;br /&gt;
    objDreh.addChild(new Box(0.5f, 0.5f, 0.5f, makeAppearance()));&lt;br /&gt;
    objWurzel.addChild(objDreh);&lt;br /&gt;
    return objWurzel;&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Wurfeldarstellung&lt;br /&gt;
   * &lt;br /&gt;
   * @return Appearance&lt;br /&gt;
   */&lt;br /&gt;
  private Appearance makeAppearance() {&lt;br /&gt;
    Appearance a = new Appearance();&lt;br /&gt;
    ColoringAttributes c = new ColoringAttributes();&lt;br /&gt;
    c.setColor(new Color3f(0.0f, 1.0f, 0.0f));&lt;br /&gt;
    a.setColoringAttributes(c);&lt;br /&gt;
    return a;&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * gibt speicher frei&lt;br /&gt;
   */&lt;br /&gt;
  public void destroy() {&lt;br /&gt;
    universe.removeAllLocales();&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    frame = new MainFrame(new Erscheinungsbild(), 500, 500);&lt;br /&gt;
    frame.setTitle(&amp;quot;Appearance&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  //---- Attribute -----------------------&lt;br /&gt;
  private SimpleUniverse universe;&lt;br /&gt;
  private Canvas3D canvas3D;&lt;br /&gt;
  private static Frame frame;&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>