Exemple #1
0
 public javax.vecmath.Vector3d transformToViewport(Vector3 xyz, Camera camera) {
   javax.vecmath.Vector3d xyzInCamera = transformTo(xyz, camera);
   RenderTarget renderTarget = camera.renderTarget.getRenderTargetValue();
   return renderTarget
       .getInternal()
       .transformFromCameraToViewport(xyzInCamera, camera.getSceneGraphCamera());
 }
  @Override
  public void initScene() {
    mCameraLeft = new Camera();
    mCameraLeft.setNearPlane(.01f);
    mCameraLeft.setFieldOfView(getCurrentCamera().getFieldOfView());
    mCameraLeft.setNearPlane(getCurrentCamera().getNearPlane());
    mCameraLeft.setFarPlane(getCurrentCamera().getFarPlane());

    mCameraRight = new Camera();
    mCameraRight.setNearPlane(.01f);
    mCameraRight.setFieldOfView(getCurrentCamera().getFieldOfView());
    mCameraRight.setNearPlane(getCurrentCamera().getNearPlane());
    mCameraRight.setFarPlane(getCurrentCamera().getFarPlane());

    setPupilDistance(mPupilDistance);

    mLeftQuadMaterial = new Material();
    mLeftQuadMaterial.setColorInfluence(0);
    mRightQuadMaterial = new Material();
    mRightQuadMaterial.setColorInfluence(0);

    mSideBySideScene = new RajawaliScene(this);

    mLeftQuad = new ScreenQuad();
    mLeftQuad.setScaleX(.5);
    mLeftQuad.setX(-.25);
    mLeftQuad.setMaterial(mLeftQuadMaterial);
    mSideBySideScene.addChild(mLeftQuad);

    mRightQuad = new ScreenQuad();
    mRightQuad.setScaleX(.5);
    mRightQuad.setX(.25);
    mRightQuad.setMaterial(mRightQuadMaterial);
    mSideBySideScene.addChild(mRightQuad);

    addScene(mSideBySideScene);

    mViewportWidthHalf = (int) (mDefaultViewportWidth * .5f);

    mLeftRenderTarget = new RenderTarget("sbsLeftRT", mViewportWidthHalf, mDefaultViewportHeight);
    mLeftRenderTarget.setFullscreen(false);
    mRightRenderTarget = new RenderTarget("sbsRightRT", mViewportWidthHalf, mDefaultViewportHeight);
    mRightRenderTarget.setFullscreen(false);

    mCameraLeft.setProjectionMatrix(mViewportWidthHalf, mDefaultViewportHeight);
    mCameraRight.setProjectionMatrix(mViewportWidthHalf, mDefaultViewportHeight);

    addRenderTarget(mLeftRenderTarget);
    addRenderTarget(mRightRenderTarget);

    try {
      mLeftQuadMaterial.addTexture(mLeftRenderTarget.getTexture());
      mRightQuadMaterial.addTexture(mRightRenderTarget.getTexture());
    } catch (TextureException e) {
      e.printStackTrace();
    }
  }
Exemple #3
0
  @Override
  public void initScene() {
    mMainQuadMaterial = new Material();
    mMainQuadMaterial.setColorInfluence(0);

    mMiniQuadMaterial = new Material();
    mMiniQuadMaterial.setColorInfluence(0);

    mMainQuad = new WorkaroundScreenQuad();
    mMainQuad.setMaterial(mMainQuadMaterial);
    mMainQuad.setTransparent(true);

    // Set-up viewport dimensions of mini quad for touch event processing
    setupMiniTouchLimits();

    mMiniQuad = new WorkaroundScreenQuad();
    // Set the size of the mini view using a scale factor (mPipScale times the main view)
    mMiniQuad.setScale(mPipScale);
    // Position the mini view in the top right corner
    // For X and Y, the position is:
    //   50% screen shift to the right/top minus half the size of the minimap to bring it back
    //   left/bottom into full view plus a little bit more left/bottom to leave margin
    mMiniQuad.setX(.5d - mPipScale / 2d - mPipMarginX / mDefaultViewportWidth);
    mMiniQuad.setY(.5d - mPipScale / 2d - mPipMarginY / mDefaultViewportHeight);
    mMiniQuad.setMaterial(mMiniQuadMaterial);

    mMainRenderTarget =
        new RenderTarget("pipMainRT", mDefaultViewportWidth, mDefaultViewportHeight);
    mMainRenderTarget.setFullscreen(false);
    mMiniRenderTarget =
        new RenderTarget("pipMiniRT", mDefaultViewportWidth, mDefaultViewportHeight);
    mMiniRenderTarget.setFullscreen(false);

    addRenderTarget(mMainRenderTarget);
    addRenderTarget(mMiniRenderTarget);

    mCompositeScene = getCurrentScene();
    mCompositeScene.addChild(mMainQuad);
    mCompositeScene.addChild(mMiniQuad);

    try {
      mMiniQuadMaterial.addTexture(mMiniRenderTarget.getTexture());
      mMainQuadMaterial.addTexture(mMainRenderTarget.getTexture());
    } catch (ATexture.TextureException e) {
      e.printStackTrace();
    }
    // Init main scene
    mMainRenderer.initScene();

    // Init mini scene
    mMiniRenderer.initScene();
  }