From 7a8ff3f043c5140e0f40a4df72fc27085b8e8b71 Mon Sep 17 00:00:00 2001 From: phil Date: Fri, 4 Nov 2016 23:04:11 +1300 Subject: Added a lot more GL2ES2 examples And converted to struct based lights and material in shaders --- .../background/BackgroundGeometryGL2ES2.java | 263 +++++++++++++++++++++ 1 file changed, 263 insertions(+) create mode 100644 src/classes/org/jdesktop/j3d/examples/background/BackgroundGeometryGL2ES2.java (limited to 'src/classes/org/jdesktop/j3d/examples/background') diff --git a/src/classes/org/jdesktop/j3d/examples/background/BackgroundGeometryGL2ES2.java b/src/classes/org/jdesktop/j3d/examples/background/BackgroundGeometryGL2ES2.java new file mode 100644 index 0000000..709dd78 --- /dev/null +++ b/src/classes/org/jdesktop/j3d/examples/background/BackgroundGeometryGL2ES2.java @@ -0,0 +1,263 @@ +/* + * Copyright (c) 2016 JogAmp Community. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +package org.jdesktop.j3d.examples.background; + +import java.awt.GraphicsConfiguration; + +import org.jdesktop.j3d.examples.Resources; +import org.jdesktop.j3d.examples.gl2es2pipeline.SimpleShaderAppearance; +import org.jogamp.java3d.Appearance; +import org.jogamp.java3d.Background; +import org.jogamp.java3d.BoundingSphere; +import org.jogamp.java3d.BranchGroup; +import org.jogamp.java3d.Canvas3D; +import org.jogamp.java3d.DirectionalLight; +import org.jogamp.java3d.Material; +import org.jogamp.java3d.Transform3D; +import org.jogamp.java3d.TransformGroup; +import org.jogamp.java3d.utils.behaviors.mouse.MouseRotate; +import org.jogamp.java3d.utils.behaviors.mouse.MouseTranslate; +import org.jogamp.java3d.utils.behaviors.mouse.MouseZoom; +import org.jogamp.java3d.utils.geometry.Box; +import org.jogamp.java3d.utils.geometry.Sphere; +import org.jogamp.java3d.utils.image.TextureLoader; +import org.jogamp.java3d.utils.universe.SimpleUniverse; +import org.jogamp.vecmath.Color3f; +import org.jogamp.vecmath.Point3d; +import org.jogamp.vecmath.Vector3f; + +public class BackgroundGeometryGL2ES2 extends javax.swing.JFrame { + + private SimpleUniverse univ = null; + private BranchGroup scene = null; + private java.net.URL bgImage = null; + private BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0); + + 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); + + // 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. + TransformGroup objTrans = new TransformGroup(); + objScale.addChild(objTrans); + + Background bg = new Background(); + bg.setApplicationBounds(bounds); + BranchGroup backGeoBranch = new BranchGroup(); + Sphere sphereObj = new Sphere(1.0f, Sphere.GENERATE_NORMALS | + Sphere.GENERATE_NORMALS_INWARD | + Sphere.GENERATE_TEXTURE_COORDS | + Sphere.GENERATE_TEXTURE_COORDS_Y_UP, 45); + Appearance backgroundApp = new SimpleShaderAppearance(true, false);//sphereObj.getAppearance(); + sphereObj.setAppearance(backgroundApp); + backGeoBranch.addChild(sphereObj); + bg.setGeometry(backGeoBranch); + objTrans.addChild(bg); + + TextureLoader tex = new TextureLoader(bgImage, + new String("RGB"), + TextureLoader.BY_REFERENCE | TextureLoader.Y_UP, + this); + if (tex != null) + backgroundApp.setTexture(tex.getTexture()); + + Vector3f tranlation = new Vector3f(2.0f, 0.0f, 0.0f); + Transform3D modelTransform = new Transform3D(); + Transform3D tmpTransform = new Transform3D(); + double angleInc = Math.PI/8.0; + double angle = 0.0; + int numBoxes = 16; + + float scaleX[] = {0.1f, 0.2f, 0.2f, 0.3f, + 0.2f, 0.1f, 0.2f, 0.3f, + 0.1f, 0.3f, 0.2f, 0.3f, + 0.1f, 0.3f, 0.2f, 0.3f}; + + float scaleY[] = {0.3f, 0.4f, 0.3f, 0.4f, + 0.3f, 0.4f, 0.3f, 0.4f, + 0.3f, 0.3f, 0.3f, 0.3f, + 0.3f, 0.3f, 0.3f, 0.4f}; + + float scaleZ[] = {0.3f, 0.2f, 0.1f, 0.1f, + 0.3f, 0.2f, 0.1f, 0.3f, + 0.3f, 0.2f, 0.1f, 0.3f, + 0.3f, 0.2f, 0.1f, 0.2f}; + + Appearance a1 = new SimpleShaderAppearance(true, false); + + Color3f eColor = new Color3f(0.0f, 0.0f, 0.0f); + Color3f sColor = new Color3f(0.5f, 0.5f, 1.0f); + Color3f oColor = new Color3f(0.5f, 0.5f, 0.3f); + + Material m = new Material(oColor, eColor, oColor, sColor, 100.0f); + m.setLightingEnable(true); + a1.setMaterial(m); + + for (int i=0; i//GEN-BEGIN:initComponents + private void initComponents() { + drawingPanel = new javax.swing.JPanel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + setTitle("BackgroundGeometry"); + drawingPanel.setLayout(new java.awt.BorderLayout()); + + drawingPanel.setOpaque(false); + drawingPanel.setPreferredSize(new java.awt.Dimension(700, 700)); + getContentPane().add(drawingPanel, java.awt.BorderLayout.CENTER); + + pack(); + }// //GEN-END:initComponents + + /** + * @param args the command line arguments + */ + public static void main(String args[]) {System.setProperty("sun.awt.noerasebackground", "true"); + System.setProperty("j3d.rend", "jogl2es2");System.setProperty("j3d.displaylist", "false"); + java.awt.EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + new BackgroundGeometryGL2ES2().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JPanel drawingPanel; + // End of variables declaration//GEN-END:variables + +} -- cgit v1.2.3