/** Constructs a new ModelInstance at the specified position. */ public ModelInstance (final Model model, float x, float y, float z) { this(model); this.transform.setToTranslation(x, y, z); }
/** Constructs a new ModelInstance at the specified position. */ public ModelInstance (final Model model, Vector3 position) { this(model); this.transform.setToTranslation(position); }
/** Constructs a new ModelInstance at the specified position. */ public ModelInstance (final Model model, Vector3 position) { this(model); this.transform.setToTranslation(position); }
/** Constructs a new ModelInstance at the specified position. */ public ModelInstance (final Model model, float x, float y, float z) { this(model); this.transform.setToTranslation(x, y, z); }
public BulletEntity (final Model model, final btCollisionObject body, final float x, final float y, final float z) { this(model, body, tmpM.setToTranslation(x, y, z)); }
public void update (float deltaTime) { vy += -30f * deltaTime; position.y += vy * deltaTime; position.x += vx * deltaTime; position.z += vz * deltaTime; if (position.y < 0.1f) { vy *= -0.70f; position.y = 0.1f; } if (position.x < -5) { vx = -vx; position.x = -5; } if (position.x > 5) { vx = -vx; position.x = 5; } if (position.z < -5) { vz = -vz; position.z = -5; } if (position.z > 5) { vz = -vz; position.z = 5; } lightInstance.transform.setToTranslation(position); } }
public static void build (MeshPartBuilder builder, float radius, float height, int divisions) { if (height < 2f * radius) throw new GdxRuntimeException("Height must be at least twice the radius"); final float d = 2f * radius; CylinderShapeBuilder.build(builder, d, height - d, d, divisions, 0, 360, false); SphereShapeBuilder.build(builder, matTmp1.setToTranslation(0, .5f * (height - d), 0), d, d, d, divisions, divisions, 0, 360, 0, 90); SphereShapeBuilder.build(builder, matTmp1.setToTranslation(0, -.5f * (height - d), 0), d, d, d, divisions, divisions, 0, 360, 90, 180); } }
public static void build (MeshPartBuilder builder, float radius, float height, int divisions) { if (height < 2f * radius) throw new GdxRuntimeException("Height must be at least twice the radius"); final float d = 2f * radius; CylinderShapeBuilder.build(builder, d, height - d, d, divisions, 0, 360, false); SphereShapeBuilder.build(builder, matTmp1.setToTranslation(0, .5f * (height - d), 0), d, d, d, divisions, divisions, 0, 360, 0, 90); SphereShapeBuilder.build(builder, matTmp1.setToTranslation(0, -.5f * (height - d), 0), d, d, d, divisions, divisions, 0, 360, 90, 180); } }
/** Sets this matrix to a look at matrix with the given position, target and up vector. * * @param position the position * @param target the target * @param up the up vector * @return This matrix */ public Matrix4 setToLookAt (Vector3 position, Vector3 target, Vector3 up) { tmpVec.set(target).sub(position); setToLookAt(tmpVec, up); this.mul(tmpMat.setToTranslation(-position.x, -position.y, -position.z)); return this; }
/** Sets this matrix to a look at matrix with the given position, target and up vector. * * @param position the position * @param target the target * @param up the up vector * @return This matrix */ public Matrix4 setToLookAt (Vector3 position, Vector3 target, Vector3 up) { tmpVec.set(target).sub(position); setToLookAt(tmpVec, up); this.mul(tmpMat.setToTranslation(-position.x, -position.y, -position.z)); return this; }
@Override public void create () { texture = new Texture(Gdx.files.internal("data/black_marked_0.png")); region = new TextureRegion(texture); batch = new SpriteBatch(); batch.getTransformMatrix().setToTranslation(30.5f, 30.5f, 0); }
private void renderBox (Body body, float halfWidth, float halfHeight) { // get the bodies center and angle in world coordinates Vector2 pos = body.getWorldCenter(); float angle = body.getAngle(); // set the translation and rotation matrix transform.setToTranslation(pos.x, pos.y, 0); transform.rotate(0, 0, 1, (float)Math.toDegrees(angle)); // render the box renderer.begin(ShapeType.Line); renderer.setTransformMatrix(transform); renderer.setColor(1, 1, 1, 1); renderer.rect(-halfWidth, -halfHeight, halfWidth * 2, halfHeight * 2); renderer.end(); }
@Override public boolean keyUp (int keycode) { switch (keycode) { case Keys.DOWN: downPressed = false; break; case Keys.UP: upPressed = false; break; case Keys.LEFT: leftPressed = false; break; case Keys.RIGHT: rightPressed = false; break; case Keys.R: chassis.body.setWorldTransform(chassis.transform.setToTranslation(0, 5, 0)); chassis.body.setInterpolationWorldTransform(chassis.transform); ((btRigidBody)(chassis.body)).setLinearVelocity(Vector3.Zero); ((btRigidBody)(chassis.body)).setAngularVelocity(Vector3.Zero); chassis.body.activate(); break; } return super.keyUp(keycode); } }
@Override public void create () { super.create(); final Model sphereModel = modelBuilder.createSphere(0.5f, 0.5f, 0.5f, 8, 8, new Material(ColorAttribute.createDiffuse(Color.WHITE), ColorAttribute.createSpecular(Color.WHITE)), Usage.Position | Usage.Normal); disposables.add(sphereModel); final BulletConstructor sphereConstructor = new BulletConstructor(sphereModel, 0.25f, new btSphereShape(0.25f)); sphereConstructor.bodyInfo.setRestitution(1f); world.addConstructor("sphere", sphereConstructor); final Model sceneModel = objLoader.loadModel(Gdx.files.internal("data/scene.obj")); disposables.add(sceneModel); final BulletConstructor sceneConstructor = new BulletConstructor(sceneModel, 0f, new btBvhTriangleMeshShape( sceneModel.meshParts)); sceneConstructor.bodyInfo.setRestitution(0.25f); world.addConstructor("scene", sceneConstructor); world.add("scene", (new Matrix4()).setToTranslation(0f, 2f, 0f).rotate(Vector3.Y, -90)).setColor( 0.25f + 0.5f * (float)Math.random(), 0.25f + 0.5f * (float)Math.random(), 0.25f + 0.5f * (float)Math.random(), 1f); world.add("ground", 0f, 0f, 0f).setColor(0.25f + 0.5f * (float)Math.random(), 0.25f + 0.5f * (float)Math.random(), 0.25f + 0.5f * (float)Math.random(), 1f); for (float x = -3; x < 7; x++) { for (float z = -5; z < 5; z++) { world.add("sphere", x, 10f + (float)Math.random() * 0.1f, z).setColor(0.5f + 0.5f * (float)Math.random(), 0.5f + 0.5f * (float)Math.random(), 0.5f + 0.5f * (float)Math.random(), 1f); } } }
@Override protected void onLoaded () { if (currentlyLoading == null || currentlyLoading.length() == 0) return; final ModelInstance instance = new ModelInstance(assets.get(currentlyLoading, Model.class)); instance.transform = new Matrix4().idt(); instance.transform.setToTranslation(MathUtils.random(-10, 10), MathUtils.random(-10, 10), MathUtils.random(-10, 10)); instance.transform.rotate(Vector3.X, MathUtils.random(-180, 180)); instance.transform.rotate(Vector3.Y, MathUtils.random(-180, 180)); instance.transform.rotate(Vector3.Z, MathUtils.random(-180, 180)); instances.add(instance); }
world.addConstructor("scene", sceneConstructor); final BulletEntity scene = world.add("scene", (new Matrix4()).setToTranslation(0f, 2f, 0f).rotate(Vector3.Y, -90)); scene.setColor(0.25f + 0.5f * (float)Math.random(), 0.25f + 0.5f * (float)Math.random(), 0.25f + 0.5f * (float)Math.random(), 1f);
@Override public void create () { if (spriteBatch != null) return; spriteBatch = new SpriteBatch(); Matrix4 transform = new Matrix4(); transform.setToTranslation(0, Gdx.graphics.getHeight(), 0); transform.mul(new Matrix4().setToScaling(1, -1, 1)); spriteBatch.setTransformMatrix(transform); pixS1 = new Pixmap(Gdx.files.getFileHandle("data/test4.png", Files.FileType.Internal)); pixS2 = new Pixmap(Gdx.files.getFileHandle("data/test3.png", Files.FileType.Internal)); pixD = new Pixmap(512, 1024, Pixmap.Format.RGBA8888); pixD.setBlending(Pixmap.Blending.SourceOver); pixD.setFilter(Pixmap.Filter.NearestNeighbour); pixD.drawPixmap(pixS1, 0, 0, 38, 76, 0, 0, 512, 1024); pixD.drawPixmap(pixS2, 0, 0, 38, 76, 0, 0, 512, 1024); logoSprite = new Sprite(new Texture(pixD)); logoSprite.flip(false, true); pixS1.dispose(); pixS2.dispose(); pixD.dispose(); }
public static btPairCachingGhostObject createFrustumObject (final Vector3... points) { final btPairCachingGhostObject result = new TestPairCachingGhostObject(); final boolean USE_COMPOUND = true; // Using a compound shape is not necessary, but it's good practice to create shapes around the center. if (USE_COMPOUND) { final Vector3 centerNear = new Vector3(points[2]).sub(points[0]).scl(0.5f).add(points[0]); final Vector3 centerFar = new Vector3(points[6]).sub(points[4]).scl(0.5f).add(points[4]); final Vector3 center = new Vector3(centerFar).sub(centerNear).scl(0.5f).add(centerNear); final btConvexHullShape hullShape = new btConvexHullShape(); for (int i = 0; i < points.length; i++) hullShape.addPoint(tmpV.set(points[i]).sub(center)); final btCompoundShape shape = new btCompoundShape(); shape.addChildShape(tmpM.setToTranslation(center), hullShape); result.setCollisionShape(shape); } else { final btConvexHullShape shape = new btConvexHullShape(); for (int i = 0; i < points.length; i++) shape.addPoint(points[i]); result.setCollisionShape(shape); } result.setCollisionFlags(btCollisionObject.CollisionFlags.CF_NO_CONTACT_RESPONSE); return result; }
mpb = modelBuilder.part("mesh", GL20.GL_TRIANGLES, mesh.getVertexAttributes(), material); Matrix4 transform = new Matrix4(); mpb.setVertexTransform(transform.setToTranslation(0, 2, 0)); mpb.addMesh(mesh); mpb.setColor(Color.BLUE); mpb.setVertexTransform(transform.setToTranslation(1, 1, 0)); mpb.addMesh(mesh); mpb.setColor(null); mpb.setVertexTransform(transform.setToTranslation(-1, 1, 0).rotate(Vector3.X, 45)); mpb.addMesh(mesh); mpb.setVertexTransform(transform.setToTranslation(0, 1, 1)); mpb.setUVRange(0.75f, 0.75f, 0.25f, 0.25f); mpb.addMesh(mesh);
/** Sets this matrix to a look at matrix with the given position, target and up vector. * * @param position the position * @param target the target * @param up the up vector * @return This matrix */ public Matrix4 setToLookAt (Vector3 position, Vector3 target, Vector3 up) { tmpVec.set(target).sub(position); setToLookAt(tmpVec, up); this.set(this.mul(tmpMat.setToTranslation(-position.x, -position.y, -position.z))); return this; }