public static void translateMatrix(Matrix4f mat, float x, float y) { Matrix4f transMat = new Matrix4f(1.0f, 0.0f, 0.0f, x, 0.0f, 1.0f, 0.0f, y, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f); mat.mul(transMat); }
public static void scaleMatrix(Matrix4f mat, float x, float y) { Matrix4f scaleMat = new Matrix4f(x, 0.0f, 0.0f, 0.0f, 0.0f, y, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f); mat.mul(scaleMat); }
public static void rotateMatrixY(Matrix4f mat, float thetaDegrees) { Matrix4f rotMat = new Matrix4f(); rotMat.rotY((float)(thetaDegrees * Math.PI/180)); mat.mul(rotMat); }
public static void rotateMatrixZ(Matrix4f mat, float thetaDegrees) { Matrix4f rotMat = new Matrix4f(); rotMat.rotZ((float)(thetaDegrees * Math.PI/180)); mat.mul(rotMat); }
public static void rotateMatrixX(Matrix4f mat, float thetaDegrees) { Matrix4f rotMat = new Matrix4f(); rotMat.rotX((float)(thetaDegrees * Math.PI/180)); mat.mul(rotMat); }
protected static Matrix4f getCombinedRotation(float x, float y, float z) { Matrix4f xMat = new Matrix4f(); xMat.rotX((float) Math.toRadians(x)); Matrix4f yMat = new Matrix4f(); yMat.rotY((float) Math.toRadians(y)); Matrix4f zMat = new Matrix4f(); zMat.rotZ((float) Math.toRadians(z)); xMat.mul(yMat); xMat.mul(zMat); return xMat; }
@Nonnull @Override @SideOnly(Side.CLIENT) public Pair<IBakedModel, Matrix4f> getModel(@Nonnull IVehicleAccess access) { Pair<IBakedModel, Matrix4f> model = handler.getModel(0); Matrix4f transform = new Matrix4f(); transform.setIdentity(); // Center the view (-0.5) and then move half a pixel back out. transform.setTranslation(new Vector3f(0, 0, -0.5f + (1 / 32.0f))); transform.mul(transform, model.getRight()); return Pair.of(model.getLeft(), transform); }
@Nonnull @Override @SideOnly(Side.CLIENT) public Pair<IBakedModel, Matrix4f> getModel(ITurtleAccess turtle, @Nonnull TurtleSide side) { float xOffset = side == TurtleSide.Left ? -0.40625f : 0.40625f; Matrix4f transform = new Matrix4f( 0.0f, 0.0f, 1.0f, -0.5f, 0.0F, 1.0f, 0.0f, -0.5f, -1.0f, 0.0f, 0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f ); Pair<IBakedModel, Matrix4f> pair = handler.getModel(0); transform.mul(pair.getRight(), transform); transform.mul(new Matrix4f( 0.8f, 0.0f, 0.0f, 0.5f + xOffset, 0.0f, 0.8f, 0.0f, 0.6f, 0.0f, 0.0f, 0.8f, 0.475f, 0.0f, 0.0f, 0.0f, 1.0f ), transform); // Translate -0.5 -0.5 -0.5 // Rotate Y PI/2 // Normal transform // Scale 0.8 // Ideally we'd flip if we're on the left side, but that mucks up culling. // Translate 0.5 0.5 0.5 // Translate xOffset 0.1 -0.025 return Pair.of(pair.getLeft(), transform); }
protected javax.vecmath.Matrix4f generateProjectionMatrix(float cameraOffsetX, float cameraOffsetY) { int viewportWidth = master.getWidth(); int viewportHeight = master.getHeight(); int cameraX = Math.round(cameraOffsetX);//viewportWidth/2; int cameraY = Math.round(cameraOffsetY);//viewportHeight/2; javax.vecmath.Matrix4f viewMat = MathUtils.createScaleMatrix(1.0f, -1.0f); viewMat.m03 = -(viewportWidth*0.5f + cameraX); viewMat.m13 = viewportHeight*0.5f + cameraY; viewMat.m23 = viewportWidth; float xmin = (viewportWidth*0.5f + cameraX)/-2; float xmax = (viewportWidth*0.5f - cameraX)/2; float ymin = (viewportHeight*0.5f - cameraY)/-2; float ymax = (viewportHeight*0.5f + cameraY)/2; float zmin = viewportWidth*0.5f; float zmax = viewportWidth*50; javax.vecmath.Matrix4f projMat =new javax.vecmath.Matrix4f( 2*zmin/(xmax - xmin), 0, 0, 0, 0, 2*zmin/(ymax-ymin), 0, 0, (xmin+xmax)/(xmin-xmax), (ymin+ymax)/(ymin-ymax), zmax/(zmax-zmin), 1, 0, 0, zmax*zmin/(zmin-zmax), 0); projMat.transpose(); // This is the view-projection matrix currently projMat.mul(projMat, viewMat); return projMat; }
public ItemRendererPhaser() { super(new ResourceLocation(MODEL)); phaserTextureColorMask = new ResourceLocation(TEXTURE_COLOR_MASK); Matrix4f mat = new Matrix4f(); mat.setIdentity(); mat.mul(getCombinedRotation(45f, 120f, 0f)); mat.setTranslation(new Vector3f(0.2f, 2.1f, 0f)); mat.setScale(2.65f); transforms.put(ItemCameraTransforms.TransformType.GUI, mat); }
projMat = generateProjectionMatrix(op.effectTracker.getCameraOffsetX(), op.effectTracker.getCameraOffsetY()); currEffectMat = new javax.vecmath.Matrix4f(tempMat); currEffectMat.mul(stackItem.xform, tempMat); currMat.mul(projMat, currEffectMat); currEffectMat.mul(stackItem.xform, tempMat); tempMat.mul(currMat, tempMat); currMat = new javax.vecmath.Matrix4f(tempMat); if (stackItem.projxform != null) projMat = stackItem.projxform; currMat.mul(projMat, currEffectMat); for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++)
trans.mul(temp); trans.mul(temp); trans.mul(temp); temp.setIdentity(); temp.rotX((float) Math.toRadians(MathHelper.sin(amplitude) * amplitude * roll / 10.0F * (float) getRollingDirection())); trans.mul(temp); temp.setIdentity(); temp.setTranslation(new Vector3f(-0.5F, (float) (offset - 8) / 16.0F, 0.5F)); trans.mul(temp);
public void init() { createModel(this.weaponModelLocation); loadWeaponMetadata(); identity = new Matrix4f(); identity.setIdentity(); Matrix4f mat = new Matrix4f(); mat.setIdentity(); mat.rotY((float) Math.toRadians(180)); mat.setTranslation(new Vector3f(-0.8f, 0.8f, -0.6f)); mat.setScale(1.6f); transforms.put(ItemCameraTransforms.TransformType.THIRD_PERSON_RIGHT_HAND, mat); mat = new Matrix4f(); mat.setIdentity(); mat.mul(getCombinedRotation(20f, 45f, 0f)); mat.setTranslation(new Vector3f(0.8f, 0.9f, 0f)); mat.setScale(1.5f); transforms.put(ItemCameraTransforms.TransformType.GUI, mat); mat = new Matrix4f(); mat.setIdentity(); mat.setTranslation(new Vector3f(0.6f, 0.5f, 0.3f)); mat.setScale(1.2f); transforms.put(ItemCameraTransforms.TransformType.GROUND, mat); }