aboutsummaryrefslogtreecommitdiffstats
path: root/src/classes/org/jdesktop/j3d/examples/texture
diff options
context:
space:
mode:
authorphil <[email protected]>2016-11-06 17:03:11 +1300
committerphil <[email protected]>2016-11-06 17:03:11 +1300
commitb519162cc27f380d36c5d2f779189628a42b3800 (patch)
tree05da9b1cb5045da85665cee0b0484257552dbe73 /src/classes/org/jdesktop/j3d/examples/texture
parent7d153738e397b6f9e7b51ea2d127fc55cdff6032 (diff)
move java into maven standard src/main/java and resources into
src/main/resources
Diffstat (limited to 'src/classes/org/jdesktop/j3d/examples/texture')
-rw-r--r--src/classes/org/jdesktop/j3d/examples/texture/MultiTextureTest.java344
-rw-r--r--src/classes/org/jdesktop/j3d/examples/texture/TextureImage.java196
-rw-r--r--src/classes/org/jdesktop/j3d/examples/texture/TextureImageNPOT.java249
3 files changed, 0 insertions, 789 deletions
diff --git a/src/classes/org/jdesktop/j3d/examples/texture/MultiTextureTest.java b/src/classes/org/jdesktop/j3d/examples/texture/MultiTextureTest.java
deleted file mode 100644
index 49f9406..0000000
--- a/src/classes/org/jdesktop/j3d/examples/texture/MultiTextureTest.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * $RCSfile$
- *
- * Copyright (c) 2007 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:
- *
- * - Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL
- * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
- * USING, MODIFYING OR DISTRIBUTING THIS 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 THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed, licensed or
- * intended for use in the design, construction, operation or
- * maintenance of any nuclear facility.
- *
- * $Revision$
- * $Date$
- * $State$
- */
-
-package org.jdesktop.j3d.examples.texture;
-
-import java.applet.Applet;
-import java.awt.BorderLayout;
-import java.awt.Choice;
-import java.awt.GraphicsConfiguration;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.awt.image.BufferedImage;
-
-import org.jdesktop.j3d.examples.Resources;
-import org.jogamp.java3d.Appearance;
-import org.jogamp.java3d.BoundingSphere;
-import org.jogamp.java3d.BranchGroup;
-import org.jogamp.java3d.Canvas3D;
-import org.jogamp.java3d.DirectionalLight;
-import org.jogamp.java3d.ImageComponent;
-import org.jogamp.java3d.ImageComponent2D;
-import org.jogamp.java3d.Texture;
-import org.jogamp.java3d.Texture2D;
-import org.jogamp.java3d.TextureAttributes;
-import org.jogamp.java3d.TextureUnitState;
-import org.jogamp.java3d.Transform3D;
-import org.jogamp.java3d.TransformGroup;
-import org.jogamp.java3d.utils.applet.MainFrame;
-import org.jogamp.java3d.utils.behaviors.vp.OrbitBehavior;
-import org.jogamp.java3d.utils.geometry.Box;
-import org.jogamp.java3d.utils.image.TextureLoader;
-import org.jogamp.java3d.utils.universe.SimpleUniverse;
-import org.jogamp.java3d.utils.universe.ViewingPlatform;
-import org.jogamp.vecmath.Color3f;
-import org.jogamp.vecmath.Point3d;
-import org.jogamp.vecmath.Vector3f;
-
-public class MultiTextureTest extends Applet implements ItemListener{
-
- Choice choice;
- TextureUnitState textureUnitState[] = new TextureUnitState[2];
- Texture stoneTex;
- Texture skyTex;
- Texture lightTex;
-
- private java.net.URL stoneImage = null;
- private java.net.URL skyImage = null;
-
- private SimpleUniverse u = null;
-
- public Texture createLightMap(){
-
- int width = 128;
- int height = 128;
- BufferedImage bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
- int [] rgbArray = new int[width * height];
- int index, index2;
- int rgbInc = 256 / (width / 2 - 20);
- int rgbValue = 0;
- int k = width/2 - 5;
- int i, j, rgb;
-
- rgb = 0xff;
- rgbValue = rgb | (rgb << 8) | (rgb << 16) | (rgb << 24);
- for ( i = width / 2 - 1, j = 0; j < 10; j++, i--) {
- rgbArray[i] = rgbValue;
- }
-
- for (; i > 8; i--, rgb -= rgbInc) {
- rgbValue = rgb | (rgb << 8) | (rgb << 16) | (rgb << 24);
- rgbArray[i] = rgbValue;
- }
-
- for (; i >= 0; i--) {
- rgbArray[i] = rgbValue;
- }
-
- for (i = 0; i < width/2; i++) {
- rgbValue = rgbArray[i];
- index = i;
- index2 = (width - i - 1);
- for (j = 0; j < height; j++) {
- rgbArray[index] = rgbArray[index2] = rgbValue;
- index += width;
- index2 += width;
- }
- }
-
- bimage.setRGB(0, 0, width, height, rgbArray, 0, width);
-
-
- ImageComponent2D grayImage = new ImageComponent2D(ImageComponent.FORMAT_RGB, bimage, true, true);
-
- lightTex = new Texture2D(Texture.BASE_LEVEL, Texture.RGB, width, height);
- lightTex.setImage(0, grayImage);
-
- return lightTex;
- }
-
-
- public BranchGroup createSceneGraph() {
- // Create the root of the branch graph
- BranchGroup objRoot = new BranchGroup();
-
- // Create a Transformgroup to scale all objects so they
- // appear in the scene.
- TransformGroup objScale = new TransformGroup();
- Transform3D t3d = new Transform3D();
- t3d.setScale(0.4);
- objScale.setTransform(t3d);
- objRoot.addChild(objScale);
-
- TransformGroup objTrans = new TransformGroup();
- //write-enable for behaviors
- objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
- objTrans.setCapability( TransformGroup.ALLOW_TRANSFORM_READ );
- objTrans.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
- objScale.addChild(objTrans);
-
- Appearance ap = new Appearance();
-
- // load textures
- TextureAttributes texAttr1 = new TextureAttributes();
- texAttr1.setTextureMode(TextureAttributes.DECAL);
- TextureAttributes texAttr2 = new TextureAttributes();
- texAttr2.setTextureMode(TextureAttributes.MODULATE);
-
- TextureLoader tex = new TextureLoader(stoneImage, new String("RGB"),
- TextureLoader.BY_REFERENCE | TextureLoader.Y_UP,
- this);
- if (tex == null)
- return null;
- stoneTex = tex.getTexture();
-
- tex = new TextureLoader(skyImage, new String("RGB"),
- TextureLoader.BY_REFERENCE | TextureLoader.Y_UP,
- this);
- if (tex == null)
- return null;
- skyTex = tex.getTexture();
-
- lightTex = createLightMap();
-
-
- textureUnitState[0] = new TextureUnitState(stoneTex, texAttr1, null);
- textureUnitState[0].setCapability(TextureUnitState.ALLOW_STATE_WRITE);
-
- textureUnitState[1] = new TextureUnitState(lightTex, texAttr2, null);
- textureUnitState[1].setCapability(TextureUnitState.ALLOW_STATE_WRITE);
-
- ap.setTextureUnitState(textureUnitState);
-
- //Create a Box
- Box BoxObj = new Box(1.5f, 1.5f, 0.8f, Box.GENERATE_NORMALS |
- Box.GENERATE_TEXTURE_COORDS |
- Box.GENERATE_TEXTURE_COORDS_Y_UP, ap, 2);
- // add it to the scene graph.
- objTrans.addChild(BoxObj);
-
- BoundingSphere bounds =
- new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
-
- //Shine it with two lights.
- Color3f lColor1 = new Color3f(0.7f, 0.7f, 0.7f);
- Color3f lColor2 = new Color3f(0.2f, 0.2f, 0.1f);
- Vector3f lDir1 = new Vector3f(-1.0f, -1.0f, -1.0f);
- Vector3f lDir2 = new Vector3f(0.0f, 0.0f, -1.0f);
- DirectionalLight lgt1 = new DirectionalLight(lColor1, lDir1);
- DirectionalLight lgt2 = new DirectionalLight(lColor2, lDir2);
- lgt1.setInfluencingBounds(bounds);
- lgt2.setInfluencingBounds(bounds);
- objScale.addChild(lgt1);
- objScale.addChild(lgt2);
-
- // Let Java 3D perform optimizations on this scene graph.
- objRoot.compile();
-
- return objRoot;
- }
-
- public MultiTextureTest (){
- }
-
- public MultiTextureTest(java.net.URL stoneURL, java.net.URL skyURL) {
- stoneImage = stoneURL;
- skyImage = skyURL;
- }
-
- public void init() {System.setProperty("sun.awt.noerasebackground", "true");
- if (stoneImage == null) {
- // the path to the image for an applet
- stoneImage = Resources.getResource("resources/images/stone.jpg");
- if (stoneImage == null) {
- System.err.println("resources/images/stone.jpg not found");
- System.exit(1);
- }
-
- if (skyImage == null) {
- // the path to the image for an applet
- skyImage = Resources.getResource("resources/images/bg.jpg");
- if (skyImage == null) {
- System.err.println("resources/images/bg.jpg not found");
- System.exit(1);
- }
- }
- }
-
- setLayout(new BorderLayout());
- GraphicsConfiguration config =
- SimpleUniverse.getPreferredConfiguration();
-
- Canvas3D c = new Canvas3D(config);
- add("Center", c);
-
- BranchGroup scene = createSceneGraph();
- u = new SimpleUniverse(c);
-
- ViewingPlatform viewingPlatform = u.getViewingPlatform();
- // This will move the ViewPlatform back a bit so the
- // objects in the scene can be viewed.
- viewingPlatform.setNominalViewingTransform();
-
- // add orbit behavior but disable translate
- OrbitBehavior orbit =
- new OrbitBehavior(c, OrbitBehavior.REVERSE_ALL |
- OrbitBehavior.DISABLE_TRANSLATE);
- BoundingSphere bounds =
- new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
- orbit.setSchedulingBounds(bounds);
- viewingPlatform.setViewPlatformBehavior(orbit);
-
- u.addBranchGraph(scene);
-
- // create the gui
- choice = new Choice();
- choice.addItem("stone + light");
- choice.addItem("stone");
- choice.addItem("lightMap");
- choice.addItem("sky");
- choice.addItem("stone + sky");
- choice.addItemListener(this);
- add("North", choice);
-
- }
-
- public void destroy() {
- // Cleanup reference to Java3D
- textureUnitState = new TextureUnitState[2];
- u.cleanup();
- }
-
- public void itemStateChanged(ItemEvent e)
- {
- int index = choice.getSelectedIndex();
-
- switch (index) {
- case 0 : /* stone + light */
- textureUnitState[0].setTexture(stoneTex);
- textureUnitState[1].setTexture(lightTex);
- break;
- case 1 : /* stone */
- textureUnitState[0].setTexture(stoneTex);
- textureUnitState[1].setTexture(null);
- break;
- case 2 : /* light */
- textureUnitState[0].setTexture(null);
- textureUnitState[1].setTexture(lightTex);
- break;
- case 3 : /* sky */
- textureUnitState[0].setTexture(null);
- textureUnitState[1].setTexture(skyTex);
- break;
- case 4 : /* stone + sky */
- textureUnitState[0].setTexture(stoneTex);
- textureUnitState[1].setTexture(skyTex);
- break;
- default: /* both */
- break;
- }
- }
-
- public static void main(String argv[])
-{
- java.net.URL stoneURL = null;
- java.net.URL skyURL = null;
- // the path to the image for an application
-
- stoneURL = Resources.getResource("resources/images/stone.jpg");
- if (stoneURL == null) {
- System.err.println("resources/images/stone.jpg not found");
- System.exit(1);
- }
-
- skyURL = Resources.getResource("resources/images/bg.jpg");
- if (skyURL == null) {
- System.err.println("resources/images/bg.jpg not found");
- System.exit(1);
- }
-
- new MainFrame(new MultiTextureTest(stoneURL, skyURL), 750, 750);
- }
-}
-
diff --git a/src/classes/org/jdesktop/j3d/examples/texture/TextureImage.java b/src/classes/org/jdesktop/j3d/examples/texture/TextureImage.java
deleted file mode 100644
index 59f8aa5..0000000
--- a/src/classes/org/jdesktop/j3d/examples/texture/TextureImage.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * $RCSfile$
- *
- * Copyright (c) 2007 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:
- *
- * - Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL
- * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
- * USING, MODIFYING OR DISTRIBUTING THIS 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 THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed, licensed or
- * intended for use in the design, construction, operation or
- * maintenance of any nuclear facility.
- *
- * $Revision$
- * $Date$
- * $State$
- */
-
-package org.jdesktop.j3d.examples.texture;
-
-import java.applet.Applet;
-import java.awt.BorderLayout;
-import java.awt.GraphicsConfiguration;
-
-import org.jdesktop.j3d.examples.Resources;
-import org.jogamp.java3d.Alpha;
-import org.jogamp.java3d.Appearance;
-import org.jogamp.java3d.BoundingSphere;
-import org.jogamp.java3d.BranchGroup;
-import org.jogamp.java3d.Canvas3D;
-import org.jogamp.java3d.RotationInterpolator;
-import org.jogamp.java3d.Texture;
-import org.jogamp.java3d.TextureAttributes;
-import org.jogamp.java3d.Transform3D;
-import org.jogamp.java3d.TransformGroup;
-import org.jogamp.java3d.utils.applet.MainFrame;
-import org.jogamp.java3d.utils.geometry.Box;
-import org.jogamp.java3d.utils.image.TextureLoader;
-import org.jogamp.java3d.utils.universe.SimpleUniverse;
-import org.jogamp.vecmath.Point3d;
-
-public class TextureImage extends Applet {
-
- private static final String defaultFileName = "resources/images/stone.jpg";
- private java.net.URL texImage = null;
-
- private SimpleUniverse u = null;
-
- public BranchGroup createSceneGraph() {
- // Create the root of the branch graph
- BranchGroup objRoot = new BranchGroup();
-
- // Create the transform group node and initialize it to the
- // identity. Enable the TRANSFORM_WRITE capability so that
- // our behavior code can modify it at runtime. Add it to the
- // root of the subgraph.
- TransformGroup objTrans = new TransformGroup();
- objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
- objRoot.addChild(objTrans);
-
- // Create appearance object for textured cube
- Appearance app = new Appearance();
- Texture tex = new TextureLoader(texImage,
- TextureLoader.BY_REFERENCE | TextureLoader.Y_UP,
- this).getTexture();
- app.setTexture(tex);
- TextureAttributes texAttr = new TextureAttributes();
- texAttr.setTextureMode(TextureAttributes.MODULATE);
- app.setTextureAttributes(texAttr);
-
- // Create textured cube and add it to the scene graph.
- Box textureCube = new Box(0.4f, 0.4f, 0.4f,
- Box.GENERATE_TEXTURE_COORDS |
- Box.GENERATE_TEXTURE_COORDS_Y_UP, app);
- objTrans.addChild(textureCube);
-
- // Create a new Behavior object that will perform the desired
- // operation on the specified transform object and add it into
- // the scene graph.
- Transform3D yAxis = new Transform3D();
- Alpha rotationAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE,
- 0, 0,
- 4000, 0, 0,
- 0, 0, 0);
-
- 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);
- objTrans.addChild(rotator);
-
- // Have Java 3D perform optimizations on this scene graph.
- objRoot.compile();
-
- return objRoot;
- }
-
- public TextureImage() {
- }
-
- public TextureImage(java.net.URL url) {
- texImage = url;
- }
-
- public void init() {System.setProperty("sun.awt.noerasebackground", "true");
- if (texImage == null) {
- // the path to the image for an applet
- texImage = Resources.getResource(defaultFileName);
- if (texImage == null) {
- System.err.println(defaultFileName + " not found");
- System.exit(1);
- }
- }
- setLayout(new BorderLayout());
- GraphicsConfiguration config =
- SimpleUniverse.getPreferredConfiguration();
-
- Canvas3D c = new Canvas3D(config);
- add("Center", c);
-
- // Create a simple scene and attach it to the virtual universe
- BranchGroup scene = createSceneGraph();
- u = new SimpleUniverse(c);
-
- // This will move the ViewPlatform back a bit so the
- // objects in the scene can be viewed.
- u.getViewingPlatform().setNominalViewingTransform();
-
- u.addBranchGraph(scene);
- }
-
- public void destroy() {
- u.cleanup();
- }
-
- //
- // The following allows TextureImage to be run as an application
- // as well as an applet
- //
- public static void main(String[] args) {System.setProperty("sun.awt.noerasebackground", "true");
- java.net.URL url = null;
- if (args.length > 0) {
- try {
- final String name = args[0];
- if (name.startsWith("http:") ||
- name.startsWith("https:") ||
- name.startsWith("ftp:") ||
- name.startsWith("file:")) {
- url = new java.net.URL(name);
- } else {
- url = new java.net.URL("file:" + name);
- }
- } catch (java.net.MalformedURLException ex) {
- System.out.println(ex.getMessage());
- System.exit(1);
- }
- } else {
- // the path to the image for an application
- url = Resources.getResource(defaultFileName);
- if (url == null) {
- System.err.println(defaultFileName + " not found");
- System.exit(1);
- }
- }
- new MainFrame(new TextureImage(url), 256, 256);
- }
-
-}
diff --git a/src/classes/org/jdesktop/j3d/examples/texture/TextureImageNPOT.java b/src/classes/org/jdesktop/j3d/examples/texture/TextureImageNPOT.java
deleted file mode 100644
index f55493c..0000000
--- a/src/classes/org/jdesktop/j3d/examples/texture/TextureImageNPOT.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * $RCSfile$
- *
- * Copyright (c) 2007 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:
- *
- * - Redistribution 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 MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL
- * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
- * USING, MODIFYING OR DISTRIBUTING THIS 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 THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed, licensed or
- * intended for use in the design, construction, operation or
- * maintenance of any nuclear facility.
- *
- * $Revision$
- * $Date$
- * $State$
- */
-
-package org.jdesktop.j3d.examples.texture;
-
-import java.applet.Applet;
-import java.awt.BorderLayout;
-import java.awt.GraphicsConfiguration;
-import java.util.Map;
-
-import javax.swing.JOptionPane;
-
-import org.jdesktop.j3d.examples.Resources;
-import org.jogamp.java3d.Alpha;
-import org.jogamp.java3d.Appearance;
-import org.jogamp.java3d.BoundingSphere;
-import org.jogamp.java3d.BranchGroup;
-import org.jogamp.java3d.Canvas3D;
-import org.jogamp.java3d.RotationInterpolator;
-import org.jogamp.java3d.ScaleInterpolator;
-import org.jogamp.java3d.Texture;
-import org.jogamp.java3d.TextureAttributes;
-import org.jogamp.java3d.Transform3D;
-import org.jogamp.java3d.TransformGroup;
-import org.jogamp.java3d.utils.applet.MainFrame;
-import org.jogamp.java3d.utils.geometry.Box;
-import org.jogamp.java3d.utils.image.TextureLoader;
-import org.jogamp.java3d.utils.universe.SimpleUniverse;
-import org.jogamp.vecmath.Point3d;
-
-public class TextureImageNPOT extends Applet {
-
- private static final String defaultFileName = "resources/images/Java3d.jpg";
- private java.net.URL texImage = null;
-
- private SimpleUniverse u = null;
- private boolean allowNonPowerOfTwo = true;
- private boolean mipmap = true;
-
- public BranchGroup createSceneGraph() {
- // Create the root of the branch graph
- BranchGroup objRoot = new BranchGroup();
-
- // Create the transform group node and initialize it to the
- // identity. Enable the TRANSFORM_WRITE capability so that
- // our behavior code can modify it at runtime. Add it to the
- // root of the subgraph.
- TransformGroup objTrans = new TransformGroup();
- objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
- objRoot.addChild(objTrans);
-
- // Create the scaling transform group node and initialize it to the
- // identity. Enable the TRANSFORM_WRITE capability so that
- // our behavior code can modify it at runtime. Add it to the
- // objTrans group
- TransformGroup objScale = new TransformGroup();
- objScale.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
- objTrans.addChild(objScale);
-
- // Create appearance object for textured cube
- Appearance app = new Appearance();
- int flags = TextureLoader.BY_REFERENCE | TextureLoader.Y_UP;
-
- if (allowNonPowerOfTwo) {
- flags |= TextureLoader.ALLOW_NON_POWER_OF_TWO;
- }
- if (mipmap) {
- flags |= TextureLoader.GENERATE_MIPMAP;
- }
- Texture tex = new TextureLoader(texImage, flags, this).getTexture();
- tex.setMagFilter(Texture.BASE_LEVEL_LINEAR);
- if (mipmap) {
- tex.setMinFilter(Texture.MULTI_LEVEL_LINEAR);
- } else {
- tex.setMinFilter(Texture.BASE_LEVEL_LINEAR);
- }
- app.setTexture(tex);
- TextureAttributes texAttr = new TextureAttributes();
- texAttr.setTextureMode(TextureAttributes.MODULATE);
- app.setTextureAttributes(texAttr);
-
- // Create textured cube and add it to the scene graph.
- Box textureCube = new Box(0.4f, 0.4f, 0.4f,
- Box.GENERATE_TEXTURE_COORDS |
- Box.GENERATE_TEXTURE_COORDS_Y_UP, app);
- objScale.addChild(textureCube);
-
- // Create a new Behavior object that will perform the desired
- // operation on the specified transform object and add it into
- // the scene graph.
- Transform3D yAxis = new Transform3D();
- Alpha rotationAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE,
- 0, 0,
- 50000, 0, 0,
- 0, 0, 0);
-
- 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);
- objTrans.addChild(rotator);
-
- // Create a new Behavior object that will perform the desired
- // operation on the specified transform object and add it into
- // the scene graph.
- Alpha scaleAlpha = new Alpha(-1,
- Alpha.INCREASING_ENABLE | Alpha.DECREASING_ENABLE,
- 0, 0,
- 8000, 0, 0,
- 8000, 0, 0);
-
- ScaleInterpolator scaler =
- new ScaleInterpolator(scaleAlpha, objScale, yAxis,
- 0.01f, 1.5f);
- scaler.setSchedulingBounds(bounds);
- objScale.addChild(scaler);
-
- // Have Java 3D perform optimizations on this scene graph.
- objRoot.compile();
-
- return objRoot;
- }
-
- public TextureImageNPOT() {
- }
-
- public TextureImageNPOT(java.net.URL url) {
- texImage = url;
- }
-
- public void init() {System.setProperty("sun.awt.noerasebackground", "true");
- if (texImage == null) {
- // the path to the image for an applet
- texImage = Resources.getResource(defaultFileName);
- if (texImage == null) {
- System.err.println(defaultFileName + " not found");
- System.exit(1);
- }
- }
- setLayout(new BorderLayout());
- GraphicsConfiguration config =
- SimpleUniverse.getPreferredConfiguration();
-
- Canvas3D c = new Canvas3D(config);
-
- Map map = c.queryProperties();
- Boolean value = (Boolean) map.get("textureNonPowerOfTwoAvailable");
- String errorStr = null;
- if (value == null) {
- errorStr = "Canvas3D: textureNonPowerOfTwoAvailable property not found";
- } else if (!value) {
- errorStr = "Non-power-of-two textures are not available";
- }
-
- if (errorStr != null) {
- String errorMessage = errorStr + "\n" +
- "You should expect to see a white cube as a result";
-// System.err.println(errorMessage);
- JOptionPane.showMessageDialog(this,
- errorMessage,
- "Insufficient Capabilities",
- JOptionPane.ERROR_MESSAGE);
- }
-
- add("Center", c);
-
- // Create a simple scene and attach it to the virtual universe
- BranchGroup scene = createSceneGraph();
- u = new SimpleUniverse(c);
-
- // This will move the ViewPlatform back a bit so the
- // objects in the scene can be viewed.
- u.getViewingPlatform().setNominalViewingTransform();
-
- u.addBranchGraph(scene);
- }
-
- public void destroy() {
- u.cleanup();
- }
-
- //
- // The following allows TextureImageNPOT to be run as an application
- // as well as an applet
- //
- public static void main(String[] args) {System.setProperty("sun.awt.noerasebackground", "true");
- java.net.URL url = null;
- if (args.length > 0) {
- try {
- url = new java.net.URL("file:" + args[0]);
- } catch (java.net.MalformedURLException ex) {
- System.out.println(ex.getMessage());
- System.exit(1);
- }
- } else {
- // the path to the image for an application
- url = Resources.getResource(defaultFileName);
- if (url == null) {
- System.err.println(defaultFileName + " not found");
- System.exit(1);
- }
- }
- new MainFrame(new TextureImageNPOT(url), 512, 512);
- }
-
-}