📄 3dflyover.txt
字号:
/**
* Override Behavior's stimulus method to handle the event.
*/
public void processStimulus(Enumeration criteria) {
WakeupCriterion genericEvt;
while (criteria.hasMoreElements()) {
genericEvt = (WakeupCriterion) criteria.nextElement();
if (genericEvt instanceof WakeupOnCollisionEntry) {
m_Owner.onCollide(true);
} else if (genericEvt instanceof WakeupOnCollisionExit) {
m_Owner.onCollide(false);
}
}
// Set wakeup criteria for next time
wakeupOn(wakeupCondition);
}
}
//creates a 2x2x2 cuboid with its base at y=0
class Cuboid extends ComplexObject {
public Cuboid(Component comp, Group g, int nFlags) {
super(comp, g, nFlags);
}
protected Group createGeometryGroup(Appearance app, Vector3d position,
Vector3d scale, String szTextureFile, String szSoundFile) {
int nFlags = GeometryArray.COORDINATES | GeometryArray.NORMALS;
if ((m_nFlags & TEXTURE) == TEXTURE)
nFlags |= GeometryArray.TEXTURE_COORDINATE_2;
QuadArray quadArray = new QuadArray(24, nFlags);
quadArray.setCoordinates(0, verts, 0, 24);
for (int n = 0; n < 24; n++)
quadArray.setNormal(n, normals[n / 4]);
if ((m_nFlags & TEXTURE) == TEXTURE) {
quadArray.setTextureCoordinates(0, 0, tcoords, 0, 24);
setTexture(app, szTextureFile);
}
Shape3D shape = new Shape3D(quadArray, app);
BranchGroup bg = new BranchGroup();
bg.addChild(shape);
return bg;
}
private static final float[] verts = {
// front face
1.0f, 0.0f, 1.0f, 1.0f, 2.0f, 1.0f, -1.0f, 2.0f, 1.0f, -1.0f, 0.0f,
1.0f,
// back face
-1.0f, 0.0f, -1.0f, -1.0f, 2.0f, -1.0f, 1.0f, 2.0f, -1.0f, 1.0f,
0.0f, -1.0f,
// right face
1.0f, 0.0f, -1.0f, 1.0f, 2.0f, -1.0f, 1.0f, 2.0f, 1.0f, 1.0f, 0.0f,
1.0f,
// left face
-1.0f, 0.0f, 1.0f, -1.0f, 2.0f, 1.0f, -1.0f, 2.0f, -1.0f, -1.0f,
0.0f, -1.0f,
// top face
1.0f, 2.0f, 1.0f, 1.0f, 2.0f, -1.0f, -1.0f, 2.0f, -1.0f, -1.0f,
2.0f, 1.0f,
// bottom face
-1.0f, 0.0f, 1.0f, -1.0f, 0.0f, -1.0f, 1.0f, 0.0f, -1.0f, 1.0f,
0.0f, 1.0f, };
private static final float[] tcoords = {
// front
1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f,
// back
1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f,
//right
1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f,
// left
1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f,
// top
1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f,
// bottom
0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f };
private static final Vector3f[] normals = { new Vector3f(0.0f, 0.0f, 1.0f), // front
// face
new Vector3f(0.0f, 0.0f, -1.0f), // back face
new Vector3f(1.0f, 0.0f, 0.0f), // right face
new Vector3f(-1.0f, 0.0f, 0.0f), // left face
new Vector3f(0.0f, 1.0f, 0.0f), // top face
new Vector3f(0.0f, -1.0f, 0.0f), // bottom face
};
}
class Helicopter extends ComplexObject
{
public static final float WIDTH = 2.0f;
public static final float HEIGHT = 2.0f;
public static final float LENGTH = 2.0f;
public Helicopter( Component comp, Group g, int nFlags )
{
super( comp, g, nFlags );
}
protected Group createGeometryGroup( Appearance app, Vector3d position, Vector3d scale, String szTextureFile, String szSoundFile )
{
TransformGroup tg = new TransformGroup( );
// we need to flip the helicopter model
// 90 degrees about the X axis
Transform3D t3d = new Transform3D( );
t3d.rotX( Math.toRadians( -90 ) );
tg.setTransform( t3d );
try
{
tg.addChild( loadGeometryGroup( "heli.obj", app ) );
// create an Alpha object for the Interpolator
Alpha alpha = new Alpha( -1,
Alpha.INCREASING_ENABLE | Alpha.DECREASING_ENABLE,
(long) Utils.getRandomNumber( 0, 500 ),
(long)Utils.getRandomNumber( 0, 500 ),
(long)Utils.getRandomNumber( 20000, 5000 ),
4000,
100,
(long) Utils.getRandomNumber( 20000, 5000 ),
5000,
50 );
attachSplinePathInterpolator( alpha,
new Transform3D( ),
new URL( ((Java3dApplet) m_Component).getWorkingDirectory( ), "heli_spline.xls" ) );
}
catch( Exception e )
{
System.err.println( e.toString( ) );
}
return tg;
}
protected int getSoundLoop( boolean bCollide )
{
return -1;
}
protected float getSoundPriority( boolean bCollide )
{
return 1.0f;
}
protected float getSoundInitialGain( boolean bCollide )
{
return 3.0f;
}
protected Point2f[] getSoundDistanceGain( boolean bCollide )
{
Point2f[] gainArray = new Point2f[2];
gainArray[0] = new Point2f( 2, 0.2f );
gainArray[1] = new Point2f( 20, 0.05f );
return gainArray;
}
protected boolean getSoundInitialEnable( boolean bCollide )
{
return true;
}
protected boolean getSoundContinuousEnable( boolean bCollide )
{
return false;
}
protected Bounds getSoundSchedulingBounds( boolean bCollide )
{
return new BoundingSphere( new Point3d( 0,0,0 ), 20 );
}
protected boolean getSoundReleaseEnable( boolean bCollide )
{
return true;
}
}
//heli.obj
/*
# Mon Jun 21 15:53:56 1993
#
#
g
v -0.010000 13.150000 3.670000
v -0.620000 3.690000 3.670000
v -0.620000 -3.740000 3.670000
v 0.580000 -3.740000 3.670000
v 0.580000 3.690000 3.670000
v -0.010000 13.150000 0.000000
v -0.620000 3.690000 0.000000
v -0.620000 -3.740000 0.000000
v 0.580000 -3.740000 0.000000
v 0.580000 3.690000 0.000000
v 0.000000 -3.320000 6.130000
v 1.220000 -2.890000 6.130000
v 1.840000 -2.020000 6.130000
v 2.450000 -0.720000 6.130000
v 0.610000 10.060000 6.130000
v -0.590000 10.060000 6.130000
v -2.430000 -0.720000 6.130000
v -1.820000 -2.020000 6.130000
v -1.200000 -2.890000 6.130000
v 0.000000 -3.320000 3.820000
v 1.220000 -2.890000 3.820000
v 1.840000 -2.020000 3.820000
v 2.450000 -0.720000 3.820000
v 0.610000 10.060000 3.820000
v -0.590000 10.060000 3.820000
v -2.430000 -0.720000 3.820000
v -1.820000 -2.020000 3.820000
v -1.200000 -2.890000 3.820000
v 1.110000 0.000000 8.100000
v 1.890000 0.010000 7.730000
v 2.660000 0.020000 7.160000
v 1.040000 0.350000 8.100000
v 1.790000 0.600000 7.730000
v 2.530000 0.840000 7.160000
v 0.890000 0.660000 8.100000
v 1.520000 1.130000 7.730000
v 2.150000 1.580000 7.160000
v 0.640000 0.900000 8.100000
v 1.090000 1.540000 7.730000
v 1.540000 2.170000 7.160000
v 0.330000 1.070000 8.100000
v 0.570000 1.800000 7.730000
v 0.800000 2.540000 7.160000
v 0.000000 1.110000 8.100000
v -0.010000 1.890000 7.730000
v -0.010000 2.660000 7.160000
v -0.350000 1.040000 8.100000
v -0.580000 1.790000 7.730000
v -0.840000 2.530000 7.160000
v -0.660000 0.890000 8.100000
v -1.120000 1.520000 7.730000
v -1.580000 2.150000 7.160000
v -0.900000 0.640000 8.100000
v -1.540000 1.090000 7.730000
v -2.170000 1.550000 7.160000
v -1.040000 0.330000 8.100000
v -1.800000 0.570000 7.730000
v -2.540000 0.800000 7.160000
v -1.110000 0.000000 8.100000
v -1.890000 0.000000 7.730000
v -2.660000 -0.010000 7.160000
v -1.040000 -0.350000 8.100000
v -1.790000 -0.580000 7.730000
v -2.540000 -0.840000 7.160000
v -0.890000 -0.660000 8.100000
v -1.520000 -1.120000 7.730000
v -2.150000 -1.580000 7.160000
v -0.640000 -0.900000 8.100000
v -1.090000 -1.530000 7.730000
v -1.550000 -2.170000 7.160000
v -0.330000 -1.040000 8.100000
v -0.570000 -1.800000 7.730000
v -0.800000 -2.540000 7.160000
v 0.000000 -1.110000 8.100000
v 0.000000 -1.890000 7.730000
v 0.010000 -2.660000 7.160000
v 0.350000 -1.040000 8.100000
v 0.580000 -1.790000 7.730000
v 0.830000 -2.540000 7.160000
v 0.660000 -0.890000 8.100000
v 1.120000 -1.520000 7.730000
v 1.580000 -2.150000 7.160000
v 0.900000 -0.640000 8.100000
v 1.530000 -1.100000 7.730000
v 2.170000 -1.550000 7.160000
v 0.000000 0.000000 8.300000
v 1.040000 -0.330000 8.100000
v 1.800000 -0.570000 7.730000
v 2.540000 -0.800000 7.160000
v 0.000000 0.000000 7.160000
v -0.150000 -0.840000 6.860000
v 0.160000 -1.370000 6.860000
v 0.160000 -2.420000 6.860000
v 0.520000 -2.420000 6.860000
v 0.520000 -2.960000 6.860000
v 0.160000 -2.960000 6.860000
v 0.880000 -5.090000 6.860000
v 0.880000 -30.559999 6.860000
v 0.520000 -31.090000 6.860000
v -0.510000 -31.090000 6.860000
v -0.870000 -30.559999 6.860000
v -0.870000 -5.090000 6.860000
v -0.150000 -2.960000 6.860000
v -0.510000 -2.960000 6.860000
v -0.510000 -2.420000 6.860000
v -0.150000 -2.420000 6.860000
v -0.150000 -0.840000 6.890000
v 0.160000 -1.370000 6.890000
v 0.160000 -2.420000 6.890000
v 0.520000 -2.420000 6.890000
v 0.520000 -2.960000 6.890000
v 0.160000 -2.960000 6.890000
v 0.880000 -5.090000 6.890000
v 0.880000 -30.559999 6.890000
v 0.520000 -31.090000 6.890000
v -0.510000 -31.090000 6.890000
v -0.870000 -30.559999 6.890000
v -0.870000 -5.090000 6.890000
v -0.150000 -2.960000 6.890000
v -0.510000 -2.960000 6.890000
v -0.510000 -2.420000 6.890000
v -0.150000 -2.420000 6.890000
v 0.750000 -0.410000 6.860000
v 1.360000 -0.230000 6.860000
v 2.360000 -0.550000 6.860000
v 2.480000 -0.210000 6.860000
v 2.980000 -0.380000 6.860000
v 2.880000 -0.720000 6.860000
v 5.120000 -0.690000 6.860000
v 29.350000 -8.570000 6.860000
v 29.740000 -9.070000 6.860000
v 29.410000 -10.090000 6.860000
v 28.799999 -10.270000 6.860000
v 4.570000 -2.400000 6.860000
v 2.770000 -1.040000 6.860000
v 2.660000 -1.400000 6.860000
v 2.160000 -1.220000 6.860000
v 2.260000 -0.900000 6.860000
v 0.750000 -0.410000 6.900000
v 1.360000 -0.230000 6.900000
v 2.360000 -0.550000 6.900000
v 2.480000 -0.210000 6.900000
v 2.980000 -0.380000 6.900000
v 2.880000 -0.720000 6.900000
v 5.120000 -0.690000 6.900000
v 29.350000 -8.570000 6.900000
v 29.740000 -9.070000 6.900000
v 29.410000 -10.090000 6.900000
v 28.799999 -10.270000 6.900000
v 4.570000 -2.400000 6.900000
v 2.770000 -1.040000 6.900000
v 2.660000 -1.400000 6.900000
v 2.160000 -1.220000 6.900000
v 2.260000 -0.900000 6.900000
v 0.630000 0.580000 6.860000
v 0.670000 1.210000 6.860000
v 1.280000 2.060000 6.860000
v 0.990000 2.280000 6.860000
v 1.320000 2.710000 6.860000
v 1.600000 2.490000 6.860000
v 2.260000 4.640000 6.860000
v 17.240000 25.240000 6.860000
v 17.840000 25.459999 6.860000
v 18.700001 24.850000 6.860000
v 18.680000 24.200001 6.860000
v 3.700000 3.600000 6.860000
v 1.880000 2.300000 6.860000
v 2.170000 2.080000 6.860000
v 1.840000 1.650000 6.860000
v 1.560000 1.870000 6.860000
v 0.630000 0.580000 6.890000
v 0.670000 1.210000 6.890000
v 1.280000 2.060000 6.890000
v 0.990000 2.280000 6.890000
v 1.320000 2.710000 6.890000
v 1.600000 2.490000 6.890000
v 2.260000 4.640000 6.890000
v 17.240000 25.240000 6.890000
v 17.840000 25.459999 6.890000
v 18.700001 24.850000 6.890000
v 18.680000 24.200001 6.890000
v 3.700000 3.600000 6.890000
v 1.880000 2.300000 6.890000
v 2.170000 2.080000 6.890000
v 1.840000 1.650000 6.890000
v 1.560000 1.870000 6.890000
v -0.340000 0.780000 6.860000
v -0.920000 1.010000 6.860000
v -1.540000 1.870000 6.860000
v -1.830000 1.660000 6.860000
v -2.150000 2.080000 6.860000
v -1.860000 2.310000 6.860000
v -3.690000 3.600000 6.860000
v -18.660000 24.209999 6.860000
v -18.690001 24.850000 6.860000
v -17.820000 25.469999 6.860000
v -17.219999 25.250000 6.860000
v -2.250000 4.650000 6.860000
v -1.590000 2.500000 6.860000
v -1.300000 2.710000 6.860000
v -0.980000 2.280000 6.860000
v -1.260000 2.070000 6.860000
v -0.340000 0.780000 6.890000
v -0.920000 1.010000 6.890000
v -1.540000 1.870000 6.890000
v -1.830000 1.660000 6.890000
v -2.150000 2.080000 6.890000
v -1.860000 2.310000 6.890000
v -3.690000 3.600000 6.890000
v -18.660000 24.209999 6.890000
v -18.690001 24.850000 6.890000
v -17.820000 25.469999 6.890000
v -17.219999 25.250000 6.890000
v -2.250000 4.650000 6.890000
v -1.590000 2.500000 6.890000
v -1.300000 2.710000 6.890000
v -0.980000 2.280000 6.890000
v -1.260000 2.070000 6.890000
v -0.820000 -0.060000 6.860000
v -1.230000 -0.540000 6.860000
v -2.220000 -0.880000 6.860000
v -2.120000 -1.220000 6.860000
v -2.630000 -1.380000 6.860000
v -2.740000 -1.030000 6.860000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -