当前位置: 首页 > 知识库问答 >
问题:

Rajawali对象旋转与摄影机匹配

康赞
2023-03-14

我用rajawali框架加载了一个对象…我想用相机协调旋转它。。

这是我的代码:

public Renderer(Context context) {
    super(context);
    setFrameRate(60);
    this.context = context;
    mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
    mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    mAccVals = new Number3d();
}

public void initScene() {  
    DirectionalLight light = new DirectionalLight(0, 0, 1);
    light.setPower(4);     
    mCamera = new Camera();
    LoaderOBJ objParser = new LoaderOBJ(mContext.getResources(), mTextureManager, R.raw.ship_obj);
    try {
        objParser.parse();
    } catch (ParsingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    mObjectGroup = objParser.getParsedObject();
    mObjectGroup.setPosition(0, 0, 0);
    mCamera.setPosition(10, 50, 150);
    addCamera(mCamera);
    addChild(mObjectGroup); 
    mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_UI);
}   

public void onDrawFrame(GL10 glUnused) {
    super.onDrawFrame(glUnused);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
    // TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
    if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER)
        return; 
    mAccVals.x = (float) (-event.values[1] * FILTERING_FACTOR + mAccVals.x
            * (1.0 - FILTERING_FACTOR));
    mAccVals.y = (float) (event.values[0] * FILTERING_FACTOR + mAccVals.y
            * (1.0 - FILTERING_FACTOR));
    double posx = mAccVals.x * .2f;
    double posy = mAccVals.y * .2f;
    mCamera.setPosition(posx, posy, 0);     
    double currentPosx = mCamera.getPosition().x;
    double currentPosy = mCamera.getPosition().y;
    mCamera.setLookAt(currentPosx, currentPosy, 0);
}

这是我的课:

public class Renderer extends RajawaliRenderer implements SensorEventListener {
}

我在SensorChanged(传感器更改)中接收数字posx和posy。setPosition(posx,posy,0)不起作用!

共有1个答案

酆耀
2023-03-14

我更改了这些:

mCamera.setPosition(posx, posy, 0); 

到=

getCurrentCamera().setRotation(posx, posy, 0);


mCamera.setLookAt(currentPosx, currentPosy, 0); 

到=

getCurrentCamera().setLookAt(currentPosx, currentPosy, 0);

而且

mCamera.setPosition(10, 50, 150); to => mCamera.setPosition(0, 0, 0);

现在它工作了!

 类似资料:
  • 我正在尝试围绕我的模型旋转我的透视相机。模型位于中心(0,0,0)点。这是我的旋转相机方法: 我试着去中心,旋转5度,然后回到同样的距离。然而,旋转似乎不起作用,我不知道为什么,任何帮助都非常感谢。

  • OpenGL总是围绕(0,0,0)旋转。但是我需要绕着相机旋转。我知道在GL中,没有相机,但是如果我翻译回(0,0,-6.0),它会绕着(0,0,0)旋转,而不是绕着(0,0,-6.0)旋转 所以我的问题是:如何在opengl和c中设置旋转中心 我已经找到了这篇文章:OpenGL围绕一个点旋转相机 显示此解决方案的地方: 旋转函数通常围绕原点旋转。要围绕另一个点P旋转,必须:平移(-P)旋转平移(

  • 在我的应用程序中,用户从相机捕获图像或从图库中选择图像,然后将其转换为pdf并上载到服务器,现在我的问题是,从相机捕获的图像在某些设备上旋转,我有代码尝试解决此问题,但它不起作用 任何建议或问题在哪里,没有错误代码或任何东西

  • 使用摄影机 安装PSP™专用的摄影机(选购品)后,可拍摄静止图像或影像。 若要使用此机能,需先准备另售的周边机器。有关周边机器的详情,请参阅各区域的官方网站。 您使用的PSP™ 必要的周边机器 PSP-1000/2000/3000系列 摄影机(PSP™主机专用) Memory Stick™ PSP-N1000系列 摄影机(PSP™主机专用) 转接线转换器 部分区域可能并未贩卖摄影机。 拍摄图像或影

  • 问题内容: 我有一个方法需要旋转,将其存储在新变量中,然后返回new 。这是我的尝试,图像似乎为空或什么。它只是不显示在屏幕上: 当我取出图像时,在屏幕上绘制的图像就很好,没有问题,但是当然没有旋转。 问题答案: 因此,基于此答案中的示例,您应该能够设计一种旋转方法,该方法可以将源图像旋转给定的度数,例如…

  • 我有一个方法,它需要旋转,将其存储在一个新变量中,然后返回新的。这是我的尝试,图像似乎是空的什么的。它只是不显示在屏幕上: 当我取出时,图像在屏幕上绘制得很好,没有任何问题,但当然没有旋转。