当前位置: 首页>>代码示例>>Java>>正文


Java HeadTransform类代码示例

本文整理汇总了Java中com.google.vr.sdk.base.HeadTransform的典型用法代码示例。如果您正苦于以下问题:Java HeadTransform类的具体用法?Java HeadTransform怎么用?Java HeadTransform使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


HeadTransform类属于com.google.vr.sdk.base包,在下文中一共展示了HeadTransform类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: onNewFrame

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
/**
 * Prepares OpenGL ES before we draw a frame.
 *
 * @param headTransform The head transformation in the new frame.
 */
@Override
public void onNewFrame(HeadTransform headTransform) {
  setCubeRotation();

  // Build the camera matrix and apply it to the ModelView.
  Matrix.setLookAtM(camera, 0, 0.0f, 0.0f, CAMERA_Z, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);

  headTransform.getHeadView(headView, 0);

  // Update the 3d audio engine with the most recent head rotation.
  headTransform.getQuaternion(headRotation, 0);
  gvrAudioEngine.setHeadRotation(
      headRotation[0], headRotation[1], headRotation[2], headRotation[3]);
  // Regular update call to GVR audio engine.
  gvrAudioEngine.update();

  checkGLError("onReadyToDraw");
}
 
开发者ID:codedavid,项目名称:PanoramaGL,代码行数:24,代码来源:TreasureHuntActivity.java

示例2: update

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
@Override
public void update(HeadTransform headTransform) {
    float[] forwardVec = new float[3];
    float[] upVec = new float[3];
    float[] rightVec = new float[3];
    headTransform.getForwardVector(forwardVec, 0);
    headTransform.getUpVector(upVec, 0);
    headTransform.getRightVector(rightVec, 0);

    // create m in column major order
    // invert forward vec because in opengl -z is forward
    float[] m = new float[] {
            rightVec[0], upVec[0], -forwardVec[0], 0.0f,
            rightVec[1], upVec[1], -forwardVec[1], 0.0f,
            rightVec[2], upVec[2], -forwardVec[2], 0.0f,
            0.0f, 0.0f, 0.0f, 1.0f
    };
    // a = M^T * b where b is vector representation in cardboard basis
    float[] mt = new float[16];
    Matrix.transposeM(mt, 0, m, 0);
    mModelScreen = mt;
}
 
开发者ID:davrempe,项目名称:cardboardAR-lib,代码行数:23,代码来源:StereoScreenRenderer.java

示例3: getCardboardToWorldTransform

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
/**
 * Calculates a column-major transformation matrix that will transform a vector in the basis
 * formed by the Google cardboard (up, right, and forward vector from the HeadTransform)
 * to the world system (right-handed for OpenGL). I.e., given the returned matrix M, and a vector b in cardboard coordinates,
 * then a = M * b where a is in world coordinates.
 * @param M The 4x4 matrix to place the transformation in.
 * @param headTransform The head transform to form the transformation from
 */
public static void getCardboardToWorldTransform(float[] M, HeadTransform headTransform) {
    if (M.length != 16) {
        throw new IllegalArgumentException("Destination matrix array must be 4x4 (length 16)!");
    }

    float[] forwardVec = new float[3];
    float[] upVec = new float[3];
    float[] rightVec = new float[3];
    headTransform.getForwardVector(forwardVec, 0);
    headTransform.getUpVector(upVec, 0);
    headTransform.getRightVector(rightVec, 0);

    // transform to world coordinates from camera
    // create m in column major order
    // invert forward vec because in opengl -z is forward
    float[] m = new float[] {
            rightVec[0], upVec[0], -forwardVec[0], 0.0f,
            rightVec[1], upVec[1], -forwardVec[1], 0.0f,
            rightVec[2], upVec[2], -forwardVec[2], 0.0f,
            0.0f, 0.0f, 0.0f, 1.0f
    };
    // a = m^T * b where b is vector representation in camera (cardboard) basis
    Matrix.transposeM(M, 0, m, 0);
}
 
开发者ID:davrempe,项目名称:cardboardAR-lib,代码行数:33,代码来源:GarUtil.java

示例4: getTranslationMatFromTvec

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
/**
 * Calculates a column-major translation matrix from the given
 * OpenCV tvec. This method transforms the translation into the
 * world coordinate system to valid OpenGL coordinates using the given HeadTransform, which could
 * be passed directly into a shader to translate an object to the
 * marker that produced the tvec.
 * @param transMat The 4x4 matrix to place the translation in.
 * @param tvec OpenCV tvec.
 */
public static void getTranslationMatFromTvec(float[] transMat, Mat tvec, HeadTransform headTransform) {
    if (transMat.length != 16) {
        throw new IllegalArgumentException("Destination matrix array must be 4x4 (length 16)!");
    }

    float[] tvecCam = new float[4];
    tvecToCardboardCoords(tvecCam, tvec);

    // transform to world coords
    float[] mt = new float[16];
    getCardboardToWorldTransform(mt, headTransform);
    float tvecWorld[] = new float[4];
    Matrix.multiplyMV(tvecWorld, 0, mt, 0, tvecCam, 0);

    // Build translation matrix
    Matrix.setIdentityM(transMat, 0);
    Matrix.translateM(transMat, 0, tvecWorld[0], tvecWorld[1], tvecWorld[2]);
}
 
开发者ID:davrempe,项目名称:cardboardAR-lib,代码行数:28,代码来源:GarUtil.java

示例5: getRotationMatFromRvec

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
/**
 * Calculates a column-major rotation matrix from the given
 * OpenCV rvec. This method transforms the rotation into the
 * world coordinate system using the given HeadTransform to valid OpenGL coordinates, which could
 * be passed directly into a shader to rotate an object to the
 * the pose estimated by the marker that produced the rvec.
 * @param rotMat The 4x4 matrix to place the rotation in.
 * @param rvec OpenCV rvec.
 * @param headTransform The HeadTransform for the current frame.
 */
public static void getRotationMatFromRvec(float[] rotMat, Mat rvec, HeadTransform headTransform) {
    if (rotMat.length != 16) {
        throw new IllegalArgumentException("Destination matrix array must be 4x4 (length 16)!");
    }

    // must use rvec to find rotation matrix
    // transform rotation axis to world space
    float angleRad = (float) Core.norm(rvec, Core.NORM_L2);
    float angle = (float)Math.toDegrees(angleRad);
    float rvecCam[] = {(float)rvec.get(0, 0)[0] / angleRad, -1.0f * (float)rvec.get(1, 0)[0] / angleRad, -1.0f * (float)rvec.get(2, 0)[0] / angleRad, 0.0f};
    float rvecArr[] = new float[4];
    float[] mt = new float[16];
    getCardboardToWorldTransform(mt, headTransform);
    Matrix.multiplyMV(rvecArr, 0, mt, 0, rvecCam, 0);

    // Build rotation matrix
    Matrix.setIdentityM(rotMat, 0);
    Matrix.rotateM(rotMat, 0, angle, rvecArr[0], rvecArr[1], rvecArr[2]);
}
 
开发者ID:davrempe,项目名称:cardboardAR-lib,代码行数:30,代码来源:GarUtil.java

示例6: onNewFrame

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
/**
 * Prepares OpenGL ES before we draw a frame.
 *
 * @param headTransform The head transformation in the new frame.
 */
@Override
public void onNewFrame(HeadTransform headTransform) {

    //rotate the cube, mangle is how fast, x,y,z which directions it rotates.
    Matrix.rotateM(CubeMatrix0, 0, mAngle, 0.7f, 0.7f, 1.0f);
    //rotate cube2, mangle is how fast, x,y,z which directions it rotates.
    Matrix.rotateM(CubeMatrix1, 0, -mAngle, 0.7f, 0.7f, 1.0f);
    Matrix.rotateM(CubeMatrix2, 0, mAngle, 1.0f, 0.7f, 0.7f);
    Matrix.rotateM(CubeMatrix3, 0, -mAngle, 1.0f, 0.7f, 0.7f);
    Matrix.rotateM(CubeMatrix4, 0, mAngle, 0.7f, 1.0f, 0.7f);
    Matrix.rotateM(CubeMatrix5, 0, -mAngle, 0.7f, 1.0f, 0.7f);
    Matrix.rotateM(CubeMatrix6, 0, mAngle, 0.5f, 0.5f, 1.5f);
    Matrix.rotateM(CubeMatrix7, 0, -mAngle, 0.5f, 0.5f, 1.5f);

    // Build the camera matrix and apply it to the ModelView.
    Matrix.setLookAtM(camera, 0, 0.0f, 0.0f, CAMERA_Z, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);

    headTransform.getHeadView(headView, 0);
}
 
开发者ID:JimSeker,项目名称:CardBoardVR,代码行数:25,代码来源:myStereoRenderer.java

示例7: onNewFrame

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
/**
     * Prepares OpenGL ES before we draw a frame.
     *
     * @param headTransform The head transformation in the new frame.
     */
    @Override
    public void onNewFrame(HeadTransform headTransform) {

        //rotate the cube, mangle is how fast, x,y,z which directions it rotates.
        Matrix.rotateM(mRotationMatrix, 0, mAngle, 0.7f, 0.7f, 1.0f);

        if (moving) {
            //so figure out which direction we are facing, using the forward normalized vector.
            headTransform.getForwardVector(forward, 0);
            Log.v(TAG, "X =" + forward[0] + " Y=" + forward[1] + " Z=" + forward[2]);
            MoveX = forward[0] * mSpeed;
            MoveY = forward[1] * mSpeed;
            MoveZ = -forward[2] * mSpeed;  //-Z otherwise, going the wrong direction...
//                                         X  Y  Z
            //Matrix.translateM(camera, 0, 0, 0, 0.1f);
            Matrix.translateM(camera, 0, MoveX, MoveY, MoveZ);
            //moving = false;
        }
        //I don't think I need this at all.
        headTransform.getHeadView(headView, 0);
    }
 
开发者ID:JimSeker,项目名称:CardBoardVR,代码行数:27,代码来源:myStereoRenderer.java

示例8: onNewFrame

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
/**
 * Prepares OpenGL ES before we draw a frame.
 *
 * @param headTransform The head transformation in the new frame.
 */
@Override
public void onNewFrame(HeadTransform headTransform) {
    // Build the Model part of the ModelView matrix.
    Matrix.rotateM(modelCube, 0, TIME_DELTA, 0.5f, 0.5f, 1.0f);

    // Build the camera matrix and apply it to the ModelView.
    Matrix.setLookAtM(camera, 0, 0.0f, 0.0f, CAMERA_Z, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);

    headTransform.getHeadView(headView, 0);

    // Update the 3d audio engine with the most recent head rotation.
    headTransform.getQuaternion(headRotation, 0);
    gvrAudioEngine.setHeadRotation(
            headRotation[0], headRotation[1], headRotation[2], headRotation[3]);

    checkGLError("onReadyToDraw");
}
 
开发者ID:JimSeker,项目名称:CardBoardVR,代码行数:23,代码来源:MainActivity.java

示例9: onNewFrame

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
@Override
public boolean onNewFrame(HeadTransform headTransform, boolean forceRedraw) {
	scenes.get(sceneIndex).camera.updateViewMatrix();

	headTransform.getForwardVector(forward, 0);
	forwardVector.setAll(forward, 0);

	// Check if we are looking to one of the two buttons
	buttonLeft.checkIsLooking(scenes.get(sceneIndex).camera.getPosition(), forwardVector);
	buttonRight.checkIsLooking(scenes.get(sceneIndex).camera.getPosition(), forwardVector);

	// Animations
	long currentTime = System.currentTimeMillis();
	long timeElapsed = lastTimeStamp == -1 ? 0 : currentTime - lastTimeStamp;
	lastTimeStamp = currentTime;

	// First animate the buttons (it can also generate an scene change)
	buttonLeft.animate(timeElapsed);
	buttonRight.animate(timeElapsed);

	// Now update the shown scene
	if (scenes.get(sceneIndex) instanceof ObjLoaderScene) {
		((ObjLoaderScene) scenes.get(sceneIndex)).update(timeElapsed);
	}

	return true;
}
 
开发者ID:mobialia,项目名称:jmini3d-vr-demo,代码行数:28,代码来源:MyScreenController.java

示例10: onNewFrame

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
@Override
public void onNewFrame(HeadTransform headTransform) {
	screenController.onNewFrame(headTransform, true);

	// TODO Workaround for a R SDK bug, distortion correction disables GL_DEPTH_TEST
	GLES20.glEnable(GLES20.GL_DEPTH_TEST);

	if (logFps) {
		doFps();
	}
}
 
开发者ID:mobialia,项目名称:jmini3d-vr-demo,代码行数:12,代码来源:VRActivity.java

示例11: onNewFrame

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
@Override
public void onNewFrame(HeadTransform headTransform) {
  checkIfAllProductsAreAnimated();

  long currentNanos = System.nanoTime();
  if (lastRendered == 0) {
    lastRendered = currentNanos;
  }

  actors.act(currentNanos - lastRendered);
  lastRendered = currentNanos;

  renderer.prepare();
}
 
开发者ID:contentful-labs,项目名称:contentful-cardboard,代码行数:15,代码来源:MainActivity.java

示例12: onNewFrame

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
@Override
public void onNewFrame(HeadTransform headTransform) {
    // capture image to use
    try {
        mCameraCaptureSession.capture(mPreviewBuilder.build(), mCapCall, new Handler(Looper.getMainLooper()));
    } catch (RuntimeException | CameraAccessException ex) {
        Log.e(TAG, "Error capturing: " + ex.getMessage());
    }

    // Update the renderers
    camTexRenderer.update(headTransform);
    screenRenderer.update(headTransform);

    // Draw current camera view to texture through frame buffer
    GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, mFboIdCamera);
    GLES20.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
    GLES20.glDisable(GLES20.GL_DEPTH_TEST);
    GLES20.glViewport(0, 0, mPreviewSize.getWidth(), mPreviewSize.getHeight());

    float[] iden = new float[16];
    Matrix.setIdentityM(iden, 0);
    // don't need view or perspective so just pass in identity
    camTexRenderer.draw(iden, iden);

    GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, DEFAULT_FBO_ID);

    // Build the camera matrix.
    Matrix.setLookAtM(mCamera, 0, 0.0f, 0.0f, CAMERA_Z, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);

    garutil.checkGLError("onReadyToDraw");
}
 
开发者ID:davrempe,项目名称:cardboardAR-lib,代码行数:33,代码来源:GarActivity.java

示例13: onNewFrame

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
/**
 * Prepares OpenGL ES before we draw a frame.
 *
 * @param headTransform The head transformation in the new frame.
 */
@Override
public void onNewFrame(HeadTransform headTransform) {

    //rotate the cube, mangle is how fast, x,y,z which directions it rotates.
    Matrix.rotateM(mRotationMatrix, 0, mAngle, 0.7f, 0.7f, 1.0f);

    // Build the camera matrix and apply it to the ModelView.
    Matrix.setLookAtM(camera, 0, 0.0f, 0.0f, CAMERA_Z, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);

    headTransform.getHeadView(headView, 0);
}
 
开发者ID:JimSeker,项目名称:CardBoardVR,代码行数:17,代码来源:myStereoRenderer.java

示例14: getTransformationFromTrackingParams

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
/**
 * Takes in an OpenCV tvec and rvec, and returns a transformation matrix to place
 * an object defined in the Cardboard coordinate system (defined by up, right, and forward vectors from the HeadTransform)
 * in the pose and location defined by the tvec and rvec. <br></br><br></br>
 * <b>Note: this method is recommended for drawing augmented objects in the scene.</b>
 * @param transMat The 4x4 matrix to place the transformation in.
 * @param tvec The OpenCV tvec to use.
 * @param rvec The OpenCV rvec to use.
 * @param headTransform The head transformation from the same frame as tvec and rvec.
 */
public static void getTransformationFromTrackingParams(float[] transMat, Mat tvec, Mat rvec, HeadTransform headTransform) {
    if (transMat.length != 16) {
        throw new IllegalArgumentException("Destination matrix array must be 4x4 (length 16)!");
    }

    // Get the rotation matrix
    float[] rot = new float[16];
    getRotationMatFromRvec(rot, rvec, headTransform);

    // Turn tvec into a cardboard basis coordinate system
    float[] tvecCam = new float[4];
    tvecToCardboardCoords(tvecCam, tvec);

    // adjust z so not too close to camera
    // update x and y accordingly
    // must move away in cardboard -z as well as properly scale so this translation isn't noticed
    float xRatio = tvecCam[0] / Math.abs(tvecCam[2]);
    float yRatio = tvecCam[1] / Math.abs(tvecCam[2]);
    float scaleRatio = 1.0f / Math.abs(tvecCam[2]);
    float distToMoveZ = Math.abs(Math.abs(tvecCam[2]) - Math.abs(StereoScreenRenderer.SCREEN_DEPTH));
    float adjustZ = (StereoScreenRenderer.SCREEN_DEPTH <= tvecCam[2] ? -distToMoveZ : distToMoveZ); // actually moves to the initial Z position
    float scaleFact = 1.0f - adjustZ * scaleRatio;
    float adjustX = -adjustZ * xRatio;
    float adjustY = -adjustZ * yRatio;
    tvecCam[0] += adjustX;
    tvecCam[1] += adjustY;
    tvecCam[2] += adjustZ;
    // build the scale matrix
    float[] scale = new float[16];
    Matrix.setIdentityM(scale, 0);
    Matrix.scaleM(scale, 0, scaleFact, scaleFact, scaleFact);

    // transform to world coords
    float[] mt = new float[16];
    getCardboardToWorldTransform(mt, headTransform);
    float tvecWorld[] = new float[4];
    Matrix.multiplyMV(tvecWorld, 0, mt, 0, tvecCam, 0);
    // Build translation matrix
    float trans[] = new float[16];
    Matrix.setIdentityM(trans, 0);
    Matrix.translateM(trans, 0, tvecWorld[0], tvecWorld[1], tvecWorld[2]);

    // multiply together, we want v' = TSRM^T v
    float[] basisChangeRot = new float[16];
    float[] addScale = new float[16];
    Matrix.multiplyMM(basisChangeRot, 0, rot, 0, mt, 0);
    Matrix.multiplyMM(addScale, 0, scale, 0, basisChangeRot, 0);

    Matrix.setIdentityM(transMat, 0);
    Matrix.multiplyMM(transMat, 0, trans, 0, addScale, 0);
}
 
开发者ID:davrempe,项目名称:cardboardAR-lib,代码行数:62,代码来源:GarUtil.java

示例15: onNewFrame

import com.google.vr.sdk.base.HeadTransform; //导入依赖的package包/类
@Override
public void onNewFrame(HeadTransform headTransform) {
    Matrix.setLookAtM(camera, 0, 0.0f, 0.0f, CAMERA_Z, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);
    headTransform.getHeadView(headView, 0);
}
 
开发者ID:dbrant,项目名称:cardboard-mpo,代码行数:6,代码来源:MainActivity.java


注:本文中的com.google.vr.sdk.base.HeadTransform类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。