Search in sources :

Example 61 with Box

use of com.jme3.scene.shape.Box in project jmonkeyengine by jMonkeyEngine.

the class TestPhysicsCar method buildPlayer.

private void buildPlayer() {
    Material mat = new Material(getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
    mat.getAdditionalRenderState().setWireframe(true);
    mat.setColor("Color", ColorRGBA.Red);
    //create a compound shape and attach the BoxCollisionShape for the car body at 0,1,0
    //this shifts the effective center of mass of the BoxCollisionShape to 0,-1,0
    CompoundCollisionShape compoundShape = new CompoundCollisionShape();
    BoxCollisionShape box = new BoxCollisionShape(new Vector3f(1.2f, 0.5f, 2.4f));
    compoundShape.addChildShape(box, new Vector3f(0, 1, 0));
    //create vehicle node
    Node vehicleNode = new Node("vehicleNode");
    vehicle = new VehicleControl(compoundShape, 400);
    vehicleNode.addControl(vehicle);
    //setting suspension values for wheels, this can be a bit tricky
    //see also https://docs.google.com/Doc?docid=0AXVUZ5xw6XpKZGNuZG56a3FfMzU0Z2NyZnF4Zmo&hl=en
    //200=f1 car
    float stiffness = 60.0f;
    //(should be lower than damp)
    float compValue = .3f;
    float dampValue = .4f;
    vehicle.setSuspensionCompression(compValue * 2.0f * FastMath.sqrt(stiffness));
    vehicle.setSuspensionDamping(dampValue * 2.0f * FastMath.sqrt(stiffness));
    vehicle.setSuspensionStiffness(stiffness);
    vehicle.setMaxSuspensionForce(10000.0f);
    //Create four wheels and add them at their locations
    // was 0, -1, 0
    Vector3f wheelDirection = new Vector3f(0, -1, 0);
    // was -1, 0, 0
    Vector3f wheelAxle = new Vector3f(-1, 0, 0);
    float radius = 0.5f;
    float restLength = 0.3f;
    float yOff = 0.5f;
    float xOff = 1f;
    float zOff = 2f;
    Cylinder wheelMesh = new Cylinder(16, 16, radius, radius * 0.6f, true);
    Node node1 = new Node("wheel 1 node");
    Geometry wheels1 = new Geometry("wheel 1", wheelMesh);
    node1.attachChild(wheels1);
    wheels1.rotate(0, FastMath.HALF_PI, 0);
    wheels1.setMaterial(mat);
    vehicle.addWheel(node1, new Vector3f(-xOff, yOff, zOff), wheelDirection, wheelAxle, restLength, radius, true);
    Node node2 = new Node("wheel 2 node");
    Geometry wheels2 = new Geometry("wheel 2", wheelMesh);
    node2.attachChild(wheels2);
    wheels2.rotate(0, FastMath.HALF_PI, 0);
    wheels2.setMaterial(mat);
    vehicle.addWheel(node2, new Vector3f(xOff, yOff, zOff), wheelDirection, wheelAxle, restLength, radius, true);
    Node node3 = new Node("wheel 3 node");
    Geometry wheels3 = new Geometry("wheel 3", wheelMesh);
    node3.attachChild(wheels3);
    wheels3.rotate(0, FastMath.HALF_PI, 0);
    wheels3.setMaterial(mat);
    vehicle.addWheel(node3, new Vector3f(-xOff, yOff, -zOff), wheelDirection, wheelAxle, restLength, radius, false);
    Node node4 = new Node("wheel 4 node");
    Geometry wheels4 = new Geometry("wheel 4", wheelMesh);
    node4.attachChild(wheels4);
    wheels4.rotate(0, FastMath.HALF_PI, 0);
    wheels4.setMaterial(mat);
    vehicle.addWheel(node4, new Vector3f(xOff, yOff, -zOff), wheelDirection, wheelAxle, restLength, radius, false);
    vehicleNode.attachChild(node1);
    vehicleNode.attachChild(node2);
    vehicleNode.attachChild(node3);
    vehicleNode.attachChild(node4);
    rootNode.attachChild(vehicleNode);
    getPhysicsSpace().add(vehicle);
}
Also used : Geometry(com.jme3.scene.Geometry) Cylinder(com.jme3.scene.shape.Cylinder) CompoundCollisionShape(com.jme3.bullet.collision.shapes.CompoundCollisionShape) Vector3f(com.jme3.math.Vector3f) Node(com.jme3.scene.Node) VehicleControl(com.jme3.bullet.control.VehicleControl) Material(com.jme3.material.Material) BoxCollisionShape(com.jme3.bullet.collision.shapes.BoxCollisionShape)

Example 62 with Box

use of com.jme3.scene.shape.Box in project jmonkeyengine by jMonkeyEngine.

the class TestAndroidResources method simpleInitApp.

@Override
public void simpleInitApp() {
    // Create boxes with textures that are stored in the Android Resources Folders
    // Images are stored in multiple Drawable and Mipmap directories.  Android picks the ones that
    // match the device size and density.
    Box box1Mesh = new Box(1, 1, 1);
    Geometry box1 = new Geometry("Monkey Box 1", box1Mesh);
    Material mat1 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    mat1.setTexture("ColorMap", assetManager.loadTexture("drawable_monkey.png"));
    box1.setMaterial(mat1);
    box1.setLocalTranslation(-2, 0, 0);
    rootNode.attachChild(box1);
    Box box2Mesh = new Box(1, 1, 1);
    Geometry box2 = new Geometry("Monkey Box 2", box2Mesh);
    Material mat2 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    mat2.setTexture("ColorMap", assetManager.loadTexture("mipmap_monkey.png"));
    box2.setMaterial(mat2);
    box2.setLocalTranslation(2, 0, 0);
    rootNode.attachChild(box2);
}
Also used : Geometry(com.jme3.scene.Geometry) Box(com.jme3.scene.shape.Box) Material(com.jme3.material.Material)

Example 63 with Box

use of com.jme3.scene.shape.Box in project jmonkeyengine by jMonkeyEngine.

the class TestAndroidSensors method simpleInitApp.

@Override
public void simpleInitApp() {
    if (enableFlyByCameraRotation) {
        flyCam.setEnabled(true);
    } else {
        flyCam.setEnabled(false);
    }
    Mesh lineX = new Line(Vector3f.ZERO, Vector3f.ZERO.add(Vector3f.UNIT_X.mult(3)));
    Mesh lineY = new Line(Vector3f.ZERO, Vector3f.ZERO.add(Vector3f.UNIT_Y.mult(3)));
    Mesh lineZ = new Line(Vector3f.ZERO, Vector3f.ZERO.add(Vector3f.UNIT_Z.mult(3)));
    Geometry geoX = new Geometry("X", lineX);
    Material matX = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    matX.setColor("Color", ColorRGBA.Red);
    matX.getAdditionalRenderState().setLineWidth(30);
    geoX.setMaterial(matX);
    rootNode.attachChild(geoX);
    Geometry geoY = new Geometry("Y", lineY);
    Material matY = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    matY.setColor("Color", ColorRGBA.Green);
    matY.getAdditionalRenderState().setLineWidth(30);
    geoY.setMaterial(matY);
    rootNode.attachChild(geoY);
    Geometry geoZ = new Geometry("Z", lineZ);
    Material matZ = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    matZ.setColor("Color", ColorRGBA.Blue);
    matZ.getAdditionalRenderState().setLineWidth(30);
    geoZ.setMaterial(matZ);
    rootNode.attachChild(geoZ);
    Box b = new Box(1, 1, 1);
    geomZero = new Geometry("Box", b);
    Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    mat.setColor("Color", ColorRGBA.Yellow);
    Texture tex_ml = assetManager.loadTexture("Interface/Logo/Monkey.jpg");
    mat.setTexture("ColorMap", tex_ml);
    geomZero.setMaterial(mat);
    geomZero.setLocalTranslation(Vector3f.ZERO);
    geomZero.setLocalRotation(Quaternion.IDENTITY);
    rootNode.attachChild(geomZero);
    // Touch (aka MouseInput.BUTTON_LEFT) is used to record the starting
    // orientation when using absolute rotations
    inputManager.addMapping("MouseClick", new MouseButtonTrigger(MouseInput.BUTTON_LEFT));
    inputManager.addListener(this, "MouseClick");
    Joystick[] joysticks = inputManager.getJoysticks();
    if (joysticks == null || joysticks.length < 1) {
        logger.log(Level.INFO, "Cannot find any joysticks!");
    } else {
        // Joysticks return a value of 0 to 1 based on how far the stick is
        // push on the axis. This value is then scaled based on how long
        // during the frame the joystick axis has been in that position.
        // If the joystick is push all the way for the whole frame,
        // then the value in onAnalog is equal to tpf.
        // If the joystick is push 1/2 way for the entire frame, then the
        // onAnalog value is 1/2 tpf.
        // Similarly, if the joystick is pushed to the maximum during a frame
        // the value in onAnalog will also be scaled.
        // For Android sensors, rotating the device 90deg is the same as
        // pushing an actual joystick axis to the maximum.
        logger.log(Level.INFO, "Number of joysticks: {0}", joysticks.length);
        JoystickAxis axis;
        for (Joystick joystick : joysticks) {
            // Get and display all axes in joystick.
            List<JoystickAxis> axes = joystick.getAxes();
            for (JoystickAxis joystickAxis : axes) {
                logger.log(Level.INFO, "{0} axis scan Name: {1}, LogicalId: {2}, AxisId: {3}", new Object[] { joystick.getName(), joystickAxis.getName(), joystickAxis.getLogicalId(), joystickAxis.getAxisId() });
            }
            // Get specific axis based on LogicalId of the JoystickAxis
            // If found, map axis
            axis = joystick.getAxis(SensorJoystickAxis.ORIENTATION_X);
            if (axis != null) {
                axis.assignAxis(ORIENTATION_X_PLUS, ORIENTATION_X_MINUS);
                inputManager.addListener(this, ORIENTATION_X_PLUS, ORIENTATION_X_MINUS);
                logger.log(Level.INFO, "Found {0} Joystick, assigning mapping for X axis: {1}, with max value: {2}", new Object[] { joystick.toString(), axis.toString(), ((SensorJoystickAxis) axis).getMaxRawValue() });
            }
            axis = joystick.getAxis(SensorJoystickAxis.ORIENTATION_Y);
            if (axis != null) {
                axis.assignAxis(ORIENTATION_Y_PLUS, ORIENTATION_Y_MINUS);
                inputManager.addListener(this, ORIENTATION_Y_PLUS, ORIENTATION_Y_MINUS);
                logger.log(Level.INFO, "Found {0} Joystick, assigning mapping for Y axis: {1}, with max value: {2}", new Object[] { joystick.toString(), axis.toString(), ((SensorJoystickAxis) axis).getMaxRawValue() });
            }
            axis = joystick.getAxis(SensorJoystickAxis.ORIENTATION_Z);
            if (axis != null) {
                axis.assignAxis(ORIENTATION_Z_PLUS, ORIENTATION_Z_MINUS);
                inputManager.addListener(this, ORIENTATION_Z_PLUS, ORIENTATION_Z_MINUS);
                logger.log(Level.INFO, "Found {0} Joystick, assigning mapping for Z axis: {1}, with max value: {2}", new Object[] { joystick.toString(), axis.toString(), ((SensorJoystickAxis) axis).getMaxRawValue() });
            }
            joystickMap.put(joystick.getJoyId(), joystick);
        }
    }
}
Also used : Line(com.jme3.scene.shape.Line) Geometry(com.jme3.scene.Geometry) Joystick(com.jme3.input.Joystick) Mesh(com.jme3.scene.Mesh) Material(com.jme3.material.Material) Box(com.jme3.scene.shape.Box) MouseButtonTrigger(com.jme3.input.controls.MouseButtonTrigger) SensorJoystickAxis(com.jme3.input.SensorJoystickAxis) JoystickAxis(com.jme3.input.JoystickAxis) Texture(com.jme3.texture.Texture)

Example 64 with Box

use of com.jme3.scene.shape.Box in project jmonkeyengine by jMonkeyEngine.

the class AndroidHarness method initialize.

public void initialize() {
    app.initialize();
    if (handleExitHook) {
        // AndroidHarness can produce the exit app dialog box.
        if (app.getInputManager().hasMapping(SimpleApplication.INPUT_MAPPING_EXIT)) {
            app.getInputManager().deleteMapping(SimpleApplication.INPUT_MAPPING_EXIT);
        }
        app.getInputManager().addMapping(ESCAPE_EVENT, new TouchTrigger(TouchInput.KEYCODE_BACK));
        app.getInputManager().addListener(this, new String[] { ESCAPE_EVENT });
    }
}
Also used : TouchTrigger(com.jme3.input.controls.TouchTrigger)

Example 65 with Box

use of com.jme3.scene.shape.Box in project jmonkeyengine by jMonkeyEngine.

the class AndroidHarnessFragment method initialize.

@Override
public void initialize() {
    app.initialize();
    if (handleExitHook) {
        // AndroidHarness can produce the exit app dialog box.
        if (app.getInputManager().hasMapping(SimpleApplication.INPUT_MAPPING_EXIT)) {
            app.getInputManager().deleteMapping(SimpleApplication.INPUT_MAPPING_EXIT);
        }
        app.getInputManager().addMapping(ESCAPE_EVENT, new TouchTrigger(TouchInput.KEYCODE_BACK));
        app.getInputManager().addListener(this, new String[] { ESCAPE_EVENT });
    }
}
Also used : TouchTrigger(com.jme3.input.controls.TouchTrigger)

Aggregations

Geometry (com.jme3.scene.Geometry)106 Box (com.jme3.scene.shape.Box)99 Material (com.jme3.material.Material)83 Vector3f (com.jme3.math.Vector3f)77 Node (com.jme3.scene.Node)31 DirectionalLight (com.jme3.light.DirectionalLight)27 Sphere (com.jme3.scene.shape.Sphere)23 Quaternion (com.jme3.math.Quaternion)20 RigidBodyControl (com.jme3.bullet.control.RigidBodyControl)19 Spatial (com.jme3.scene.Spatial)19 BoundingBox (com.jme3.bounding.BoundingBox)17 Vector2f (com.jme3.math.Vector2f)15 Texture (com.jme3.texture.Texture)15 AmbientLight (com.jme3.light.AmbientLight)13 TempVars (com.jme3.util.TempVars)12 BulletAppState (com.jme3.bullet.BulletAppState)11 KeyTrigger (com.jme3.input.controls.KeyTrigger)11 FilterPostProcessor (com.jme3.post.FilterPostProcessor)11 BoundingSphere (com.jme3.bounding.BoundingSphere)8 BoxCollisionShape (com.jme3.bullet.collision.shapes.BoxCollisionShape)8