<?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_Point</id>
		<title>Java/3D/3D Point - История изменений</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_Point"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/3D/3D_Point&amp;action=history"/>
		<updated>2026-04-21T17:34:01Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/3D/3D_Point&amp;diff=6485&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_Point&amp;diff=6485&amp;oldid=prev"/>
				<updated>2010-06-01T06:15:20Z</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_Point&amp;diff=6484&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_Point&amp;diff=6484&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;== Illustrates rendering Java 3D points in a variety of styles ==&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;
 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.Font;&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.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.Font3D;&lt;br /&gt;
import javax.media.j3d.FontExtrusion;&lt;br /&gt;
import javax.media.j3d.GeometryArray;&lt;br /&gt;
import javax.media.j3d.GraphicsConfigTemplate3D;&lt;br /&gt;
import javax.media.j3d.Group;&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.PointArray;&lt;br /&gt;
import javax.media.j3d.PointAttributes;&lt;br /&gt;
import javax.media.j3d.RotationInterpolator;&lt;br /&gt;
import javax.media.j3d.Shape3D;&lt;br /&gt;
import javax.media.j3d.Switch;&lt;br /&gt;
import javax.media.j3d.SwitchValueInterpolator;&lt;br /&gt;
import javax.media.j3d.Text3D;&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;
/**&lt;br /&gt;
 * Illustrates rendering Java 3D points in a variety of styles.&lt;br /&gt;
 */&lt;br /&gt;
public class PointTest extends Java3dApplet {&lt;br /&gt;
  private static int m_kWidth = 400;&lt;br /&gt;
  private static int m_kHeight = 400;&lt;br /&gt;
  public PointTest() {&lt;br /&gt;
    initJava3d();&lt;br /&gt;
  }&lt;br /&gt;
  protected double getScale() {&lt;br /&gt;
    return 1.0;&lt;br /&gt;
  }&lt;br /&gt;
  // overridden to use a black background&lt;br /&gt;
  // so we can see the points better&lt;br /&gt;
  protected Background createBackground() {&lt;br /&gt;
    return null;&lt;br /&gt;
  }&lt;br /&gt;
  protected BranchGroup createSceneBranchGroup() {&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;
    objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);&lt;br /&gt;
    Transform3D yAxis = new Transform3D();&lt;br /&gt;
    Alpha rotationAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE, 0, 0,&lt;br /&gt;
        14000, 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;
    rotator.setSchedulingBounds(getApplicationBounds());&lt;br /&gt;
    objTrans.addChild(rotator);&lt;br /&gt;
    Switch switchGroup = new Switch();&lt;br /&gt;
    switchGroup.setCapability(Switch.ALLOW_SWITCH_WRITE);&lt;br /&gt;
    switchGroup.addChild(createPoints(1, 5, false));&lt;br /&gt;
    switchGroup.addChild(createPoints(1, 5, true));&lt;br /&gt;
    switchGroup.addChild(createPoints(8, 10, false));&lt;br /&gt;
    switchGroup.addChild(createPoints(8, 10, true));&lt;br /&gt;
    switchGroup.addChild(createPoints(2, 5, false));&lt;br /&gt;
    switchGroup.addChild(createPoints(2, 5, true));&lt;br /&gt;
    switchGroup.addChild(createPoints(2, 20, false));&lt;br /&gt;
    switchGroup.addChild(createPoints(2, 20, true));&lt;br /&gt;
    // create a SwitchValueInterpolator to&lt;br /&gt;
    // cycle through the child nodes in the Switch Node&lt;br /&gt;
    Alpha switchAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE, 0, 0, 15000,&lt;br /&gt;
        0, 0, 0, 0, 0);&lt;br /&gt;
    SwitchValueInterpolator switchInterpolator = new SwitchValueInterpolator(&lt;br /&gt;
        switchAlpha, switchGroup);&lt;br /&gt;
    switchInterpolator.setSchedulingBounds(getApplicationBounds());&lt;br /&gt;
    switchInterpolator.setEnable(true);&lt;br /&gt;
    // WARNING: do not add the SwitchValueInterpolator to the Switch Node!&lt;br /&gt;
    objRoot.addChild(switchInterpolator);&lt;br /&gt;
    objTrans.addChild(switchGroup);&lt;br /&gt;
    objRoot.addChild(objTrans);&lt;br /&gt;
    return objRoot;&lt;br /&gt;
  }&lt;br /&gt;
  private BranchGroup createPoints(final int nPointSize,&lt;br /&gt;
      final int nNumPoints, boolean bAliased) {&lt;br /&gt;
    BranchGroup bg = new BranchGroup();&lt;br /&gt;
    String szText = new String();&lt;br /&gt;
    szText += (nNumPoints + &amp;quot;X, Size:&amp;quot; + nPointSize + &amp;quot;, aliased: &amp;quot; + bAliased);&lt;br /&gt;
    Font3D f3d = new Font3D(new Font(&amp;quot;SansSerif&amp;quot;, Font.PLAIN, 1),&lt;br /&gt;
        new FontExtrusion());&lt;br /&gt;
    Text3D label3D = new Text3D(f3d, szText, new Point3f(-5, 0, 0));&lt;br /&gt;
    Shape3D sh = new Shape3D(label3D);&lt;br /&gt;
    bg.addChild(sh);&lt;br /&gt;
    PointArray pointArray = new PointArray(nNumPoints * nNumPoints,&lt;br /&gt;
        GeometryArray.COORDINATES | GeometryArray.COLOR_3);&lt;br /&gt;
    // create the PointArray that we will be rendering&lt;br /&gt;
    int nPoint = 0;&lt;br /&gt;
    final double factor = 1.0 / nNumPoints;&lt;br /&gt;
    for (int n = 0; n &amp;lt; nNumPoints; n++) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; nNumPoints; i++) {&lt;br /&gt;
        Point3f point = new Point3f(n - nNumPoints / 2, i - nNumPoints&lt;br /&gt;
            / 2, 0.0f);&lt;br /&gt;
        pointArray.setCoordinate(nPoint, point);&lt;br /&gt;
        pointArray.setColor(nPoint++, new Color3f(0.5f,&lt;br /&gt;
            (float) (n * factor), (float) (i * factor)));&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    // create the material for the points&lt;br /&gt;
    Appearance pointApp = new Appearance();&lt;br /&gt;
    // enlarge the points&lt;br /&gt;
    pointApp.setPointAttributes(new PointAttributes(nPointSize, bAliased));&lt;br /&gt;
    Shape3D pointShape = new Shape3D(pointArray, pointApp);&lt;br /&gt;
    bg.addChild(pointShape);&lt;br /&gt;
    return bg;&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    PointTest pointTest = new PointTest();&lt;br /&gt;
    pointTest.saveCommandLineArguments(args);&lt;br /&gt;
    new MainFrame(pointTest, 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;/div&gt;</summary>
			</entry>

	</feed>