【发布时间】:2021-06-21 05:53:13
【问题描述】:
Sceneform 相机具有接受Vector3 的camera.setWorldPosition 方法。
我目前使用ScaleGestureDetector计算了用户pinches屏幕的中心点。
我的问题是,如何根据屏幕上的单个点计算我想要移动到的 Vector3 位置?
假设用户在屏幕中间附近捏捏 --- 根据手机显示指标计算的 X 和 Y 坐标的比率为
X: 0.58122176, Y: 0.46196362
如何将其转换为 Vector3,以便我的 SceneView camera 可以放大屏幕上的那个位置?
private class ZoomGestureDetector extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
float ratioX = detector.getFocusX() / displayMetrics.widthPixels;
float ratioY = detector.getFocusY() / displayMetrics.heightPixels;
Log.d(TAG, "onScale: Called X: " + ratioX + ", Y: " + ratioY);
Camera camera = sceneView.getScene().getCamera();
//camera.setWorldPosition(); <--- How to calculate vector3
return false;
}
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
isScaling = true;
return true;
}
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
isScaling = false;
}
}
编辑:
基本上我是在尝试让相机放大/缩小我在屏幕上捏合的位置。
这不可能吗?
【问题讨论】: