⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3dflyover.txt

📁 This example creates a 3D fly-over of the city of Boston
💻 TXT
📖 第 1 页 / 共 5 页
字号:
  /**
   * 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 + -