Hello World
[email protected] Thu, 22 Jul 2004 22:54:33 -0400
| Newsgroups | gmane.comp.graphics.fluidiom |
|---|---|
| Message-ID | <[email protected]> |
I am considering using Fluidiom in my research but there is quite a
bit of customization I need to make to the current code. I have been
trying to get a simple HelloWorld example to work where I create a
cube and set down a plane but the code seems to be fairly coupled. I
figured I would then play around this getting the intervals to flex.
I have the cube but I am unable to get the Floor to show up. Any ideas?
Two files are included:
MyFabricFactory.java & HellowWorld.java
MyFabicFactory just builds a fabric object consisting of 8 verticies
and 12 elastics.
Oh, one more thing, when I was running this, why did only two of the
verticies have "balls" for the joints?
//HelloWorld.java
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Set;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import nl.beautifulcode.fluidiom.fabric.Fabric;
import nl.beautifulcode.fluidiom.fabric.FabricShell;
import nl.beautifulcode.fluidiom.fabric.Interval;
import nl.beautifulcode.fluidiom.fabric.IntervalList;
import nl.beautifulcode.fluidiom.fabric.Joint;
import nl.beautifulcode.fluidiom.fabric.JointList;
import nl.beautifulcode.fluidiom.fabric.MuscleActivator;
import nl.beautifulcode.fluidiom.factory.TriangleFactory;
import nl.beautifulcode.fluidiom.gui.PhysicsPanel;
import nl.beautifulcode.fluidiom.gui.Util;
import nl.beautifulcode.fluidiom.gui.ViewPanel;
import nl.beautifulcode.fluidiom.jogl.JoglFabric;
import nl.beautifulcode.fluidiom.jogl.JoglFabricView;
public class HelloWorld {
private static JFrame fabricFrame;
private static JoglFabricView joglFabricView;
private static void createDemoFrame() {
Dimension screen = Toolkit.getDefaultToolkit
().getScreenSize();
joglFabricView = new JoglFabricView();
joglFabricView.getFabric().setViewMode
(JoglFabric.VIEW_MODE_ELLIPSOID_CYLINDER);
fabricFrame = new JFrame();
fabricFrame.getContentPane().add
(joglFabricView,BorderLayout.CENTER);
FabricShell.get().addFabricListener(joglFabricView);
fabricFrame.setSize(screen.width,screen.height);
fabricFrame.addWindowListener(new WindowKiller());
}
private static void show() {
new MuscleActivator(FabricShell.get());
fabricFrame.setVisible(true);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
joglFabricView.start();
}
});
}
private static class WindowKiller extends WindowAdapter {
public void windowClosing(WindowEvent e) {
joglFabricView.stop();
System.exit(0);
}
}
public static void main(String[] args) {
FabricShell fs = FabricShell.get();
Fabric fabric = MyFabricFactory.newInstance();
fs.setFabric(fabric);
createDemoFrame();
show();
}
}
//MyFabricFactory.java
import nl.beautifulcode.fluidiom.fabric.Fabric;
import nl.beautifulcode.fluidiom.fabric.FabricOccupant;
import nl.beautifulcode.fluidiom.fabric.Interval;
import nl.beautifulcode.fluidiom.fabric.IntervalList;
import nl.beautifulcode.fluidiom.fabric.Joint;
import nl.beautifulcode.fluidiom.fabric.JointList;
import nl.beautifulcode.fluidiom.fabric.Physics;
public class MyFabricFactory {
public static Fabric newInstance(){
Fabric fabric = new Fabric();
fabric.physics = new Physics();
fabric.physics.gravityOn = true;
fabric.jointList = new JointList();
fabric.intervalList = new IntervalList();
//four lower joints formig a square
Joint joint1 = createJoint(fabric,0,0,1);
fabric.jointList.add(joint1);
Joint joint2 = createJoint(fabric,0,1,1);
fabric.jointList.add(joint2);
Joint joint3 = createJoint(fabric,1,1,1);
fabric.jointList.add(joint3);
Joint joint4 = createJoint(fabric,1,0,1);
fabric.jointList.add(joint4);
//four upper joints completing the verticies ofthe cube
Joint joint5 = createJoint(fabric,0,0,2);
fabric.jointList.add(joint1);
Joint joint6 = createJoint(fabric,0,1,2);
fabric.jointList.add(joint2);
Joint joint7 = createJoint(fabric,1,1,2);
fabric.jointList.add(joint3);
Joint joint8 = createJoint(fabric,1,0,1);
fabric.jointList.add(joint4);
//bottom
Interval interval = createInterval(fabric, joint1,
joint2);
fabric.intervalList.add(interval);
interval = createInterval(fabric, joint2, joint3);
fabric.intervalList.add(interval);
interval = createInterval(fabric, joint3, joint4);
fabric.intervalList.add(interval);
interval = createInterval(fabric, joint1, joint4);
fabric.intervalList.add(interval);
// top
interval = createInterval(fabric, joint5, joint8);
fabric.intervalList.add(interval);
interval = createInterval(fabric, joint5, joint6);
fabric.intervalList.add(interval);
interval = createInterval(fabric, joint6, joint7);
fabric.intervalList.add(interval);
interval = createInterval(fabric, joint7, joint8);
fabric.intervalList.add(interval);
//sides
interval = createInterval(fabric, joint1, joint5);
fabric.intervalList.add(interval);
interval = createInterval(fabric, joint2, joint6);
fabric.intervalList.add(interval);
interval = createInterval(fabric, joint3, joint7);
fabric.intervalList.add(interval);
interval = createInterval(fabric, joint4, joint8);
fabric.intervalList.add(interval);
fabric.intervalList.add(createInterval
(fabric,fabric.jointList.content[0],fabric.jointList.content[1]));
fabric.run();
return fabric;
}
private static Joint createJoint(Fabric theFabric, float
theX, float theY, float theZ) {
Joint joint = new Joint();
joint.run();
theFabric.put(joint.id,joint);
joint.locus.set(theX,theY,theZ);
joint.put(Joint.OCCUPANT_KEY,null);
return(joint);
}
private static Interval createInterval(Fabric theFabric,
Joint theAlpha, Joint theOmega) {
Interval interval = new Interval(theAlpha,theOmega);
interval.run();
theFabric.put(interval.id,interval);
return(interval);
}
}
========================
Rob Leclerc
Yale University
email: [email protected]
email: [email protected]
webpage: www.cpsc.ucalgary.ca/~leclerc
========================
-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click