Topic: Real 3d for the web and no installer (Page 1 of 1) |
|
---|---|
Maniac (V) Inmate From: |
posted 09-13-2006 18:45
Read this 1000 times. |
Maniac (V) Inmate From: |
posted 09-13-2006 20:02
Hell, there are samples. I ended up copy/pasting theyre codebase, but in short, the only issue is that it requires accepting one certificate from sun once, the very first time. |
Paranoid (IV) Inmate From: Norway |
posted 09-13-2006 20:29
It looks shiny. |
Maniac (V) Inmate From: Sthlm, Sweden |
posted 09-13-2006 21:04
I downloaded it, but as the certificate warning says "library requests unlimited access to your computer and network" I bailed... |
Maniac (V) Inmate From: |
posted 09-13-2006 22:32
Makes sense. Theyre "fault", but it is for our security. Still, sun is really only giving a "warranty" of sorts by asking this. |
Maniac (V) Inmate From: |
posted 09-13-2006 23:15
appStub.java code: /* Applet code by Mauro Colella (c) 2006 ================ Feel free to use for personal needs. For commercial uses, include the source of this applet. ** Tips -- It is subject to security restructions when run from a browser -- works well when run from appletViewer -- Useful for inclusion in Java applications or webstarted applications -- JOGL friendly */ import java.awt.GraphicsDevice; import java.awt.*; import java.awt.image.*; import java.awt.event.*; import javax.media.opengl.*; import com.sun.opengl.util.*; public class appStub extends Object { GraphicsDevice context = null; private static Frame window = null; GraphicsConfiguration gc = null; //BufferedImage im = null; //WritableRaster raster = null; DisplayMode newDisplayMode = null, oldDisplayMode = null; // = // myDevice.getDisplayMode(); public appStub(){ super(); // TODO Auto-generated constructor stub } public static void main(String[] args) { appStub st = new appStub(); st.start(); } public void start() { context = GraphicsEnvironment.getLocalGraphicsEnvironment() .getDefaultScreenDevice(); //im = new BufferedImage(800,600,java.awt.color.ColorSpace.TYPE_RGB); //raster = im.getRaster(); gc = context.getDefaultConfiguration(); oldDisplayMode = context.getDisplayMode(); newDisplayMode = new DisplayMode(800,600,32,60); window = new Frame(gc); window.setName("Fullscreen applet"); window.setSize(800, 600); window.setUndecorated(true); window.setIgnoreRepaint(true); //window.setAlwaysOnTop(true); //strategy = window.getBufferStrategy(); //capabilities = strategy.getCapabilities(); try { context.setFullScreenWindow(window); if(context.isDisplayChangeSupported()){ context.setDisplayMode(newDisplayMode); } } catch(Exception e) { context.setFullScreenWindow(null); if(context.isDisplayChangeSupported()){ context.setDisplayMode(oldDisplayMode); } } //System.out.println(capabilities.isMultiBufferAvailable()); GLCanvas canvas = new GLCanvas(); GearsApp gears = new GearsApp(canvas); //runner.start(); window.add(canvas); gears.start(); window.setVisible(true); } }
code: //package ake; import java.awt.*; import java.awt.event.*; import javax.media.opengl.*; import com.sun.opengl.util.*; /** * Gears.java <BR> * author: Brian Paul (converted to Java by Ron Cemer and Sven Goethel) <P> * * This version is equal to Brian Paul's version 1.2 1999/10/21 */ public class GearsApp implements GLEventListener, KeyListener, MouseListener, MouseMotionListener { final Animator animator; public GearsApp(GLCanvas g) { g.addGLEventListener(this); animator = new Animator(g); /*frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { // Run this on another thread than the AWT event queue to // make sure the call to Animator.stop() completes before // exiting new Thread(new Runnable() { public void run() { animator.stop(); System.exit(0); } }).start(); } }); frame.setVisible(true);*/ } private float view_rotx = 20.0f, view_roty = 30.0f, view_rotz = 0.0f; private int gear1, gear2, gear3; private float angle = 0.0f; private int prevMouseX, prevMouseY; private boolean mouseRButtonDown = false; public void init(GLAutoDrawable drawable) { // Use debug pipeline // drawable.setGL(new DebugGL(drawable.getGL())); GL gl = drawable.getGL(); System.err.println("INIT GL IS: " + gl.getClass().getName()); gl.setSwapInterval(1); float pos[] = { 10.0f, 0.0f, 0.0f, 0.0f }; float red[] = { .8f, 0.0f, 0.0f, 1.0f }; float green[] = { 0.2f, 0.9f, 0.0f, 1.0f }; float blue[] = { 0.0f, 0.0f, .4f, 1.0f }; gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos, 0); gl.glEnable(GL.GL_CULL_FACE); gl.glEnable(GL.GL_LIGHTING); gl.glEnable(GL.GL_LIGHT0); gl.glEnable(GL.GL_DEPTH_TEST); /* make the gears */ gear1 = gl.glGenLists(1); gl.glNewList(gear1, GL.GL_COMPILE); gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, red, 0); gear(gl, 1.0f, 4.0f, 1.0f, 20, 0.7f); gl.glEndList(); gear2 = gl.glGenLists(1); gl.glNewList(gear2, GL.GL_COMPILE); gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, red, 0); gear(gl, 0.5f, 2.0f, 2.0f, 10, 0.7f); gl.glEndList(); gear3 = gl.glGenLists(1); gl.glNewList(gear3, GL.GL_COMPILE); gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, red, 0); gl.glMaterialfv(GL.GL_FRONT, GL.GL_SPECULAR, blue, 0); gear(gl, 1.3f, 2.0f, 0.5f, 10, 0.7f); gl.glEndList(); gl.glEnable(GL.GL_NORMALIZE); drawable.addMouseListener(this); drawable.addMouseMotionListener(this); drawable.addKeyListener(this); } public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { GL gl = drawable.getGL(); float h = (float)height / (float)width; gl.glMatrixMode(GL.GL_PROJECTION); System.err.println("GL_VENDOR: " + gl.glGetString(GL.GL_VENDOR)); System.err.println("GL_RENDERER: " + gl.glGetString(GL.GL_RENDERER)); System.err.println("GL_VERSION: " + gl.glGetString(GL.GL_VERSION)); gl.glLoadIdentity(); gl.glFrustum(-1.0f, 1.0f, -h, h, 5.0f, 60.0f); gl.glMatrixMode(GL.GL_MODELVIEW); gl.glLoadIdentity(); gl.glTranslatef(0.0f, 0.0f, -40.0f); } public void display(GLAutoDrawable drawable) { angle += 2.0f; GL gl = drawable.getGL(); if ((drawable instanceof GLJPanel) && !((GLJPanel) drawable).isOpaque() && ((GLJPanel) drawable).shouldPreserveColorBufferIfTranslucent()) { gl.glClear(GL.GL_DEPTH_BUFFER_BIT); } else { gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); } gl.glPushMatrix(); gl.glRotatef(view_rotx, 1.0f, 0.0f, 0.0f); gl.glRotatef(view_roty, 0.0f, 1.0f, 0.0f); gl.glRotatef(view_rotz, 0.0f, 0.0f, 1.0f); gl.glPushMatrix(); gl.glTranslatef(-3.0f, -2.0f, 0.0f); gl.glRotatef(angle, 0.0f, 0.0f, 1.0f); gl.glCallList(gear1); gl.glPopMatrix(); gl.glPushMatrix(); gl.glTranslatef(3.1f, -2.0f, 0.0f); gl.glRotatef(-2.0f * angle - 9.0f, 0.0f, 0.0f, 1.0f); gl.glCallList(gear2); gl.glPopMatrix(); gl.glPushMatrix(); gl.glTranslatef(-3.1f, 4.2f, 0.0f); gl.glRotatef(-2.0f * angle - 25.0f, 0.0f, 0.0f, 1.0f); gl.glCallList(gear3); gl.glPopMatrix(); gl.glPopMatrix(); } public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} public static void gear(GL gl, float inner_radius, float outer_radius, float width, int teeth, float tooth_depth) { int i; float r0, r1, r2; float angle, da; float u, v, len; r0 = inner_radius; r1 = outer_radius - tooth_depth / 2.0f; r2 = outer_radius + tooth_depth / 2.0f; da = 2.0f * (float) Math.PI / teeth / 4.0f; gl.glShadeModel(GL.GL_SMOOTH); gl.glNormal3f(0.0f, 0.0f, 1.0f); /* draw front face */ gl.glBegin(GL.GL_QUAD_STRIP); for (i = 0; i <= teeth; i++) { angle = i * 2.0f * (float) Math.PI / teeth; gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f); gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f); if(i < teeth) { gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f); gl.glVertex3f(r1 * (float)Math.cos(angle + 3.0f * da), r1 * (float)Math.sin(angle + 3.0f * da), width * 0.5f); } } gl.glEnd(); /* draw front sides of teeth */ gl.glBegin(GL.GL_QUADS); for (i = 0; i < teeth; i++) { angle = i * 2.0f * (float) Math.PI / teeth; gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f); gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), width * 0.5f); gl.glVertex3f(r2 * (float)Math.cos(angle + 2.0f * da), r2 * (float)Math.sin(angle + 2.0f * da), width * 0.5f); gl.glVertex3f(r1 * (float)Math.cos(angle + 3.0f * da), r1 * (float)Math.sin(angle + 3.0f * da), width * 0.5f); } gl.glEnd(); /* draw back face */ gl.glBegin(GL.GL_QUAD_STRIP); for (i = 0; i <= teeth; i++) { angle = i * 2.0f * (float) Math.PI / teeth; gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f); gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f); gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f); gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f); } gl.glEnd(); /* draw back sides of teeth */ gl.glBegin(GL.GL_QUADS); for (i = 0; i < teeth; i++) { angle = i * 2.0f * (float) Math.PI / teeth; gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f); gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), -width * 0.5f); gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), -width * 0.5f); gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f); } gl.glEnd(); /* draw outward faces of teeth */ gl.glBegin(GL.GL_QUAD_STRIP); for (i = 0; i < teeth; i++) { angle = i * 2.0f * (float) Math.PI / teeth; gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f); gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f); u = r2 * (float)Math.cos(angle + da) - r1 * (float)Math.cos(angle); v = r2 * (float)Math.sin(angle + da) - r1 * (float)Math.sin(angle); len = (float)Math.sqrt(u * u + v * v); u /= len; v /= len; gl.glNormal3f(v, -u, 0.0f); gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), width * 0.5f); gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), -width * 0.5f); gl.glNormal3f((float)Math.cos(angle), (float)Math.sin(angle), 0.0f); gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), width * 0.5f); gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), -width * 0.5f); u = r1 * (float)Math.cos(angle + 3 * da) - r2 * (float)Math.cos(angle + 2 * da); v = r1 * (float)Math.sin(angle + 3 * da) - r2 * (float)Math.sin(angle + 2 * da); gl.glNormal3f(v, -u, 0.0f); gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), width * 0.5f); gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f); gl.glNormal3f((float)Math.cos(angle), (float)Math.sin(angle), 0.0f); } gl.glVertex3f(r1 * (float)Math.cos(0), r1 * (float)Math.sin(0), width * 0.5f); gl.glVertex3f(r1 * (float)Math.cos(0), r1 * (float)Math.sin(0), -width * 0.5f); gl.glEnd(); gl.glShadeModel(GL.GL_SMOOTH); /* draw inside radius cylinder */ gl.glBegin(GL.GL_QUAD_STRIP); for (i = 0; i <= teeth; i++) { angle = i * 2.0f * (float) Math.PI / teeth; gl.glNormal3f(-(float)Math.cos(angle), -(float)Math.sin(angle), 0.0f); gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f); gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f); } gl.glEnd(); } // Methods required for the implementation of MouseListener public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) { prevMouseX = e.getX(); prevMouseY = e.getY(); if ((e.getModifiers() & e.BUTTON3_MASK) != 0) { mouseRButtonDown = true; } } public void mouseReleased(MouseEvent e) { if ((e.getModifiers() & e.BUTTON3_MASK) != 0) { mouseRButtonDown = false; } } public void mouseClicked(MouseEvent e) {} // Methods required for the implementation of MouseMotionListener public void mouseDragged(MouseEvent e) { int x = e.getX(); int y = e.getY(); Dimension size = e.getComponent().getSize(); float thetaY = 360.0f * ( (float)(x-prevMouseX)/(float)size.width); float thetaX = 360.0f * ( (float)(prevMouseY-y)/(float)size.height); prevMouseX = x; prevMouseY = y; view_rotx += thetaX; view_roty += thetaY; } public void mouseMoved(MouseEvent e) {} public void start(){ animator.start(); } public void keyPressed(KeyEvent e) { //runner.interrupt(); animator.stop(); //setVisible(false); System.exit(0); } public void keyTyped(KeyEvent e) { } public void keyReleased(KeyEvent e) { } }
code: <jnlp spec="1.0+" codebase="http://www.beyondwonderland.com/data/java/GLgears" > <information> <title>Pink fullscreen gears</title> <vendor>Rocco Sifredi, inc.</vendor> <description>huuuummmmmmmmmmmmmmmmmmmmmmm</description> <description kind="short"> m m m m m m</description> <offline-allowed/> </information> <resources> <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/> <j2se version="1.5+" href="http://java.sun.com/products/autodl/j2se"/> <j2se version="1.4.2+" href="http://java.sun.com/products/autodl/j2se"/> <extension name="jogl" href="http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jnlp" /> <jar href="gears.jar"/> </resources> <application-desc main-class="appStub"/> </jnlp>
|
Maniac (V) Mad Scientist From: :morF |
posted 09-29-2006 16:16
Except that your web server (or maybe my browser, who knows?) is set to not execute that in the applet space, but to download and run it using one of the JVM modules outside the browser. |
Maniac (V) Inmate From: |
posted 10-16-2006 18:26
For Java's sake. |
Maniac (V) Mad Scientist From: :morF |
posted 10-17-2006 02:32
*shrugs* I'm fully entitled to make mistakes, and to not be aware ofcertain things, Mauro. That doesn't make you entitled to speak to me like I'm a drooling moron about it. |
Maniac (V) Inmate From: |
posted 10-17-2006 22:03
Sorry if you, to me, are now part of the bunch who dared to bark at me for having showed them a crack in theyre wall. May be a misconception (your barking), still. |
Lunatic (VI) Inmate From: under the bed |
posted 10-17-2006 22:41
quote:
|
Maniac (V) Inmate From: |
posted 10-24-2006 18:16
Like suppositories? Up your ass? Good idea. I'd need you to assist though, so... |
Maniac (V) Mad Scientist with Finglongers From: Germany |
posted 10-24-2006 18:29
Great. My favourite comedian is back . |
Maniac (V) Inmate From: |
posted 10-24-2006 18:46
And I may even allow you to blow me if you weren't plagued by moronity - and contagious. |
Maniac (V) Mad Scientist with Finglongers From: Germany |
posted 10-24-2006 21:49
So like me you are becoming at last, young InI? |
Maniac (V) Inmate From: |
posted 10-25-2006 01:09
You're a pork, and have been a pork to ME in too many occurences, I've kept my quiet long enough |
Lunatic (VI) Inmate From: under the bed |
posted 10-25-2006 01:33
I'm quite serious, mauro. |
Maniac (V) Inmate From: |
posted 11-20-2006 03:01
Poor cattle farmer of my ass. I've been to Israel recently as I said, and to other similar countries. |
Paranoid (IV) Mad Scientist From: Inside THE BOX |
posted 11-20-2006 03:24 |
Lunatic (VI) Inmate From: under the bed |
posted 11-20-2006 04:50
Um. |
Paranoid (IV) Inmate From: Dublin, Ireland |
posted 11-20-2006 14:11
I think he's enjoying it. |
Maniac (V) Mad Scientist with Finglongers From: Germany |
posted 11-20-2006 16:40
I cohabitate with a cat that keeps peeing in the bathroom, same room her food is being served in. |
Maniac (V) Mad Librarian From: the space between us |
posted 11-20-2006 17:05
just listening to Tool - The Pot. this song fits somehow in here. quote:
|
Maniac (V) Inmate From: there...no..there..... |
posted 11-20-2006 17:17
quote:
|
Maniac (V) Inmate From: 2 steps away from a los angeles curb |
posted 11-20-2006 19:37
errr, I like the spinny 3d things? |
Maniac (V) Mad Scientist From: 100101010011 <-- right about here |
posted 11-20-2006 22:50
I've heard that you start with putting the kitty litter tray down |
Maniac (V) Inmate From: there...no..there..... |
posted 11-21-2006 00:55
bitdamaged, you have earned a new respect from me. |
Paranoid (IV) Inmate From: London |
posted 11-21-2006 17:08
Yeah but how do you teach it to flush? |
Paranoid (IV) Inmate From: Dublin, Ireland |
posted 11-22-2006 05:35
bitdamaged: Do you know if that technique actually works? I'd give a go training my cats if i thought it was likely that they'd actually take to it. Funny shit all the same. |
Maniac (V) Inmate From: The Land of one Headlight on. |
posted 11-22-2006 12:43
"Yeah but how do you teach it to flush?" |