Пример #1
0
  // シーンを定義
  private void setupScene() {
    // カメラの位置、向き、移動速度を設定
    cam.setLocation(new Vector3f(0.0f, 1.6f, 24.0f));
    cam.lookAt(new Vector3f(0f, 1.6f, 0f), Vector3f.UNIT_Y);
    flyCam.setMoveSpeed(5);
    flyCam.setDragToRotate(true);

    // 空を追加
    Texture west = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_west.jpg");
    Texture east = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_east.jpg");
    Texture north = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_north.jpg");
    Texture south = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_south.jpg");
    Texture up = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_up.jpg");
    Texture down = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_down.jpg");
    Spatial sky = SkyFactory.createSky(assetManager, west, east, north, south, up, down);
    rootNode.attachChild(sky);

    // 床面を生成
    Material floor_mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    floor_mat.setColor("Color", ColorRGBA.Gray);
    Box floor = new Box(Vector3f.ZERO, 1500f, 0.01f, 1500f);
    Geometry floorGeom = new Geometry("Floor", floor);
    floorGeom.setMaterial(floor_mat);
    rootNode.attachChild(floorGeom);

    // 照明
    DirectionalLight sun = new DirectionalLight();
    sun.setColor(ColorRGBA.White.mult(3.0f));
    sun.setDirection(new Vector3f(-.5f, -.5f, -.5f).normalizeLocal());
    rootNode.addLight(sun);

    // 女性を追加
    Spatial girl = assetManager.loadModel("myAssets/Models/WalkingGirl/WalkingGirl.obj");
    girl.rotate(0, (float) (Math.PI), 0);
    girl.setLocalTranslation(0f, 0f, 20f);
    this.rootNode.attachChild(girl);
  }
Пример #2
0
  public void requestPreview(
      String textureName,
      String displayName,
      int width,
      int height,
      JComponent picLabel,
      JLabel infoLabel) {
    TextureKey key = new TextureKey(textureName);
    picPreview = picLabel;
    assetManager.deleteFromCache(key);
    Texture t = assetManager.loadTexture(key);
    Spatial geom = quad;
    if (key.getTextureTypeHint() == Texture.Type.TwoDimensional) {
      material.setTexture("ColorMap", t);
      geom.setMaterial(material);
      if (infoLabel != null) {
        infoLabel.setText(
            " "
                + displayName
                + "    w : "
                + t.getImage().getWidth()
                + "    h : "
                + t.getImage().getHeight());
      }
    } else if (key.getTextureTypeHint() == Texture.Type.ThreeDimensional) {
      geom = quad3D;
      assetManager.deleteFromCache(key);
      key.setTextureTypeHint(Texture.Type.ThreeDimensional);
      t = assetManager.loadTexture(key);
      material3D.setTexture("Texture", t);
      geom.setMaterial(material3D);
      if (infoLabel != null) {
        infoLabel.setText(
            " "
                + displayName
                + " (Texture3D)    w : "
                + t.getImage().getWidth()
                + "    h : "
                + t.getImage().getHeight()
                + "    d : "
                + t.getImage().getDepth());
      }
    } else if (key.getTextureTypeHint() == Texture.Type.CubeMap) {
      assetManager.deleteFromCache(key);
      geom = SkyFactory.createSky(assetManager, textureName, SkyFactory.EnvMapType.CubeMap);
      if (infoLabel != null) {
        infoLabel.setText(
            " "
                + displayName
                + " (CubeMap)    w : "
                + t.getImage().getWidth()
                + "    h : "
                + t.getImage().getHeight());
      }
    }

    PreviewRequest request = new PreviewRequest(this, geom, width, height);
    request.getCameraRequest().setLocation(new Vector3f(0, 0, 5.3f));
    request.getCameraRequest().setLookAt(new Vector3f(0, 0, 0), Vector3f.UNIT_Y.mult(-1));
    SceneApplication.getApplication().createPreview(request);
  }
Пример #3
0
  @Override
  public void simpleInitApp() {

    setDisplayFps(false);
    setDisplayStatView(false);

    bap = new BulletAppState();
    stateManager.attach(bap);
    bap.getPhysicsSpace().setGravity(Vector3f.ZERO);
    bap.getPhysicsSpace().addCollisionListener(this);

    guiFont = assetManager.loadFont("Interface/Fonts/Default.fnt");
    showText = new BitmapText(guiFont, false);
    showText.setSize(50);
    showText.setColor(ColorRGBA.Red);
    showText.setLocalTranslation((settings.getWidth() / 2) - 200, settings.getHeight() / 2, 0);

    score = 0;
    scoreText = new BitmapText(guiFont, false);
    scoreText.setSize(guiFont.getCharSet().getRenderedSize());
    scoreText.setColor(ColorRGBA.White);
    scoreText.setText("Score: " + score);
    scoreText.setLocalTranslation(settings.getWidth() - 200, settings.getHeight() - 30, 0);
    guiNode.attachChild(scoreText);

    lives = 3;
    /*
    livespic = new Picture[lives];
    for(int i=0; i < lives; i++){
        livespic[i] = new Picture("Live "+i);
        livespic[i].setImage(assetManager, "Textures/LifeLogo.png", true);
        livespic[i].setWidth(50);
        livespic[i].setHeight(50);
        livespic[i].setPosition(i*50, settings.getHeight()-50);
        guiNode.attachChild(livespic[i]);
    }
     *
     */

    planets = new Planet[9];

    Material mat10 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat10.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Sun.jpg"));
    mat10.setTexture("GlowMap", assetManager.loadTexture("Textures/Sun.jpg"));
    mat10.setColor("Specular", ColorRGBA.White);
    mat10.setBoolean("UseAlpha", true);
    sun = new Planet("Sun", 5f, mat10);
    sun.registerPhysics(bap.getPhysicsSpace());
    rootNode.attachChild(sun);

    Material mat1 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat1.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Mercury.jpg"));
    mat1.setColor("Specular", ColorRGBA.White);
    mercury = new Planet("Mercury", 2f, mat1);
    mercury.setInitLocation(new Vector3f(16.0f, 0f, -6.0f));
    mercury.setRotationSpeed((float) Math.random());
    mercury.setTranslationSpeed(0.76f);
    mercury.registerPhysics(bap.getPhysicsSpace());
    planets[0] = mercury;
    rootNode.attachChild(mercury);

    Material mat2 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat2.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Venus.jpg"));
    mat2.setColor("Specular", ColorRGBA.White);
    venus = new Planet("Venus", 2.6f, mat2);
    venus.setInitLocation(new Vector3f(23.0f, 0f, -6.0f));
    venus.setRotationSpeed((float) Math.random());
    venus.setTranslationSpeed(0.65f);
    venus.registerPhysics(bap.getPhysicsSpace());
    planets[1] = venus;
    rootNode.attachChild(venus);

    Material mat3 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat3.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Earth/Color.jpg"));
    mat3.setTexture("ParallaxMap", assetManager.loadTexture("Textures/Earth/Bump.jpg"));
    mat3.setTexture("SpecularMap", assetManager.loadTexture("Textures/Earth/Specular.jpg"));
    earth = new Planet("Earth", 2.7f, mat3);
    earth.setInitLocation(new Vector3f(31.0f, 0f, -6.0f));
    earth.setRotationSpeed((float) Math.random());
    earth.setTranslationSpeed(0.6f);
    earth.registerPhysics(bap.getPhysicsSpace());
    planets[2] = earth;
    rootNode.attachChild(earth);

    Material mat4 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat4.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Mars.jpg"));
    mat4.setColor("Specular", ColorRGBA.White);
    mars = new Planet("Mars", 2.5f, mat4);
    mars.setInitLocation(new Vector3f(40.0f, 0f, -6.0f));
    mars.setRotationSpeed((float) Math.random());
    mars.setTranslationSpeed(0.56f);
    mars.registerPhysics(bap.getPhysicsSpace());
    planets[3] = mars;
    rootNode.attachChild(mars);

    Material mat5 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat5.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Jupiter.jpg"));
    mat5.setColor("Specular", ColorRGBA.White);
    jupiter = new Planet("Jupiter", 3.1f, mat5);
    jupiter.setInitLocation(new Vector3f(49.0f, 0f, -6.0f));
    jupiter.setRotationSpeed((float) Math.random());
    jupiter.setTranslationSpeed(0.5f);
    jupiter.registerPhysics(bap.getPhysicsSpace());
    planets[4] = jupiter;
    rootNode.attachChild(jupiter);

    Material mat6 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat6.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Saturn.jpg"));
    mat6.setColor("Specular", ColorRGBA.White);
    saturn = new Planet("Saturn", 2.9f, mat6);
    saturn.setInitLocation(new Vector3f(57.0f, 0f, -6.0f));
    saturn.setRotationSpeed((float) Math.random());
    saturn.setTranslationSpeed(0.44f);
    saturn.registerPhysics(bap.getPhysicsSpace());
    planets[5] = saturn;
    rootNode.attachChild(saturn);

    Material mat7 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat7.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Uranus.jpg"));
    mat7.setColor("Specular", ColorRGBA.White);
    uranus = new Planet("Uranus", 2.8f, mat7);
    uranus.setInitLocation(new Vector3f(65.0f, 0f, -6.0f));
    uranus.setRotationSpeed((float) Math.random());
    uranus.setTranslationSpeed(0.4f);
    uranus.registerPhysics(bap.getPhysicsSpace());
    planets[6] = uranus;
    rootNode.attachChild(uranus);

    Material mat8 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat8.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Neptune.jpg"));
    mat8.setColor("Specular", ColorRGBA.White);
    neptune = new Planet("Neptune", 2.65f, mat8);
    neptune.setInitLocation(new Vector3f(75.0f, 0f, -6.0f));
    neptune.setRotationSpeed((float) Math.random());
    neptune.setTranslationSpeed(0.34f);
    neptune.registerPhysics(bap.getPhysicsSpace());
    planets[7] = neptune;
    rootNode.attachChild(neptune);

    Material mat9 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat9.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Pluto.jpg"));
    mat9.setColor("Specular", ColorRGBA.White);
    pluto = new Planet("Pluto", 1.5f, mat9);
    pluto.setInitLocation(new Vector3f(82.0f, 0f, -6.0f));
    pluto.setRotationSpeed((float) Math.random());
    pluto.setTranslationSpeed(0.2f);
    pluto.registerPhysics(bap.getPhysicsSpace());
    planets[8] = pluto;
    rootNode.attachChild(pluto);

    spaceship = new Spaceship("Spaceship", assetManager.loadModel("Models/X-WING/X-WING.j3o"));
    spaceship.addTurbines(
        new Material(assetManager, "Common/MatDefs/Misc/Particle.j3md"),
        assetManager.loadTexture("Effects/Explosion/flame.png"));
    spaceship.setLocalTranslation(0, 20, 40);
    spaceship.getModel().scale(0.1f);
    spaceship.registerPhysics(bap.getPhysicsSpace());

    rootNode.attachChild(spaceship);

    Material laserMaterial = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    laserMaterial.setColor("GlowColor", ColorRGBA.Green);
    laserMaterial.setColor("Ambient", ColorRGBA.Green);
    laserMaterial.setColor("Diffuse", ColorRGBA.Green);
    laserMaterial.setBoolean("UseMaterialColors", true);
    spaceship.setLaserMaterial(laserMaterial);

    lasers = new Node("Lasers");
    rootNode.attachChild(lasers);

    flyCam.setEnabled(false);

    cam.setLocation(spaceship.getRear().getWorldTranslation());
    cam.lookAt(spaceship.getFront().getWorldTranslation(), Vector3f.UNIT_Y);

    PointLight sunLight = new PointLight();
    sunLight.setColor(ColorRGBA.White);
    sunLight.setPosition(new Vector3f(0f, 0f, 0f));
    sunLight.setRadius(100f);
    rootNode.addLight(sunLight);

    AmbientLight ambient = new AmbientLight();
    rootNode.addLight(ambient);

    fpp = new FilterPostProcessor(assetManager);
    bloom = new BloomFilter(BloomFilter.GlowMode.Objects);
    bloom.setExposurePower(30f);
    bloom.setBloomIntensity(1f);
    fpp.addFilter(bloom);
    viewPort.addProcessor(fpp);

    rootNode.attachChild(SkyFactory.createSky(assetManager, "Textures/Stars5.jpeg", true));

    bloomDirection = 1;
    noComet = 1;
    moving = up = down = left = right = leftSide = rightSide = false;

    asteroids = new Node("Asteroids");
    rootNode.attachChild(asteroids);

    explosions = new Node("Explosions");
    rootNode.attachChild(explosions);

    initKeys();
    initAudio();
  }