Skip to main content

Java3D & FSEM

No replies
Eich
Offline
Joined: 2011-07-07
Points: 0

Greetings,

since yesterday I'm searching for a reason why Java3D won't cooperate with FSEM. I read various topics, tried various examples. But nothing did work. The closest I could get was this example I found somewhere in the depts of the web. Problem here is that the program only shows the rotating cube when I minimize the programm and when I maximize it again. But only for a short second that is. Also the cube would be visible for a short time before terminating the process. I wonder whats the problem? I have the latest Java3D 1.5.1. and the lastest JDK. OS is W7, GC is a Geforce 275 GTX. Just try it out and tell me if it's works for you. Or help me please if you know where the error lies! ^^

/*

* @(#)ExclusiveModeTest.java

*

* Copyright (c) 1996-2001 Sun Microsystems, Inc. All Rights Reserved.

*

* Redistribution and use in source and binary forms, with or without

* modification, are permitted provided that the following conditions

* are met:

*

* - Redistributions of source code must retain the above copyright

* notice, this list of conditions and the following disclaimer.

*

* - Redistribution in binary form must reproduce the above copyright

* notice, this list of conditions and the following disclaimer in

* the documentation and/or other materials provided with the

* distribution.

*

* Neither the name of Sun Microsystems, Inc. or the names of

* contributors may be used to endorse or promote products derived

* from this software without specific prior written permission.

*

* This software is provided "AS IS," without a warranty of any

* kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND

* WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,

* FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY

* EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES

* SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR

* DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN

* OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR

* FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR

* PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF

* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE,

* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

*

* You acknowledge that Software is not designed,licensed or intended

* for use in the design, construction, operation or maintenance of

* any nuclear facility.

*/

import java.awt.* ;

import java.awt.event.* ;

import java.util.Timer ;

import java.util.TimerTask ;

import javax.media.j3d.* ;

import javax.vecmath.* ;

import com.sun.j3d.utils.geometry.ColorCube ;

import com.sun.j3d.utils.universe.* ;

public class ExclusiveModeTest implements KeyListener {

static GraphicsDevice device ;

public static void main(String[] args) {

GraphicsEnvironment env ;

GraphicsConfiguration config ;

env = GraphicsEnvironment.getLocalGraphicsEnvironment() ;

device = env.getDefaultScreenDevice() ;

if (! device.isFullScreenSupported()) {

System.out.println("Full screen exclusive mode not supported.") ;

System.out.println("Device = " + device) ;

System.exit(0) ;

}

config = SimpleUniverse.getPreferredConfiguration() ;

Frame frame = new Frame(null, config) ;

frame.setUndecorated(true) ;

Panel panel = new Panel() ;

panel.setLayout(new BorderLayout()) ;

Canvas3D canvas3D = new Canvas3D(config) ;

panel.add("Center", canvas3D) ;

// If the call to setFullScreen() is placed here then the application

// doesn't display anything and has to be killed externally, even with

// the 1-minute timeout below.

//

// device.setFullScreenWindow(frame) ;

//

frame.add("Center", panel) ;

device.setFullScreenWindow(frame) ;

if (device.getFullScreenWindow() == null)

System.out.println("Did not get fullscreen exclusive mode.") ;

else

System.out.println("Got fullscreen exclusive mode.") ;

// Provide a way to kill the application.

canvas3D.addKeyListener(new ExclusiveModeTest()) ;

// Create a simple scene.

BranchGroup scene = createSceneGraph() ;

// Create a virtual universe.

SimpleUniverse u = new SimpleUniverse(canvas3D) ;

// This will move the ViewPlatform back a bit so the

// objects in the scene can be viewed.

u.getViewingPlatform().setNominalViewingTransform() ;

// Attach the scene to the universe.

u.addBranchGraph(scene) ;

// Kill the application after 1 minute.

Timer timer = new Timer() ;

timer.schedule(new TimerTask() {

public void run() {

System.out.println("killed by 1 minute timeout") ;

System.exit(0) ;

}

}, 60000) ;

}

static 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 ;

}

public void keyReleased(final KeyEvent e) {

System.out.println("got keyReleased") ;

device.setFullScreenWindow(null) ;

System.exit(0) ;

}

public void keyPressed(final KeyEvent e) {

System.out.println("got keyPressed") ;

device.setFullScreenWindow(null) ;

System.exit(0) ;

}

public void keyTyped(final KeyEvent e) {

System.out.println("got keyTyped") ;

device.setFullScreenWindow(null) ;

System.exit(0) ;

}