Поворот узла жестами или касанием события Sceneform AR Core - PullRequest
0 голосов
/ 30 мая 2019

Я использую AR Core в качестве приложения для просмотра 3D в моем приложении.Я не использую Sceneform для рендеринга AR, но для рендеринга модели в 3D.Проблема, с которой я сталкиваюсь, заключается в том, как я могу поворачивать модель на 360 с помощью жестов или касаний.Это возможно со сценой, или мне нужно использовать более сложные способы, такие как открыть GL.

Вот мой код.

public class FullDegreeActivity extends AppCompatActivity {

SceneView sceneView;
Scene scene;
Node node;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_full_degree);
    inIt();
    renderObject();
}

private void inIt() {
    sceneView = findViewById(R.id.scene_view);
    scene = sceneView.getScene();
}

private void renderObject() {
    ModelRenderable.builder().setSource(this, Uri.parse("edited.sfb"))
            .build().thenAccept(modelRenderable -> {
                addNodeToScene(modelRenderable);
            }
    ).exceptionally(throwable -> {

        return null;
    });
}

private void addNodeToScene(ModelRenderable renderable) {
    node = new Node();
    node.setParent(scene);
    node.setLocalPosition(new Vector3(0f, 0f, -1f));
    node.setLocalScale(new Vector3(1f, 1f, 1f));
    node.setName("Dog");
    node.setRenderable(renderable);
    TransformableNode transformableNode = new TransformableNode(sceneView.getTransformationSystem());
    transformableNode.setParent(node);
    transformableNode.setLocalRotation(Quaternion.axisAngle(new Vector3(1f, 0, 0), 0f));
    transformableNode.setRenderable(renderable);
    transformableNode.select();
    scene.addChild(transformableNode);
}

@Override
protected void onPause() {
    super.onPause();
    sceneView.pause();
}

@Override
protected void onResume() {
    super.onResume();
    try {
        sceneView.resume();
    } catch (CameraNotAvailableException e) {
        e.printStackTrace();
    }
}
}

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Я думаю, что ваша реализация довольно близка к тому, как она должна работать.Просто взгляните на пример hellosceneform от Google (https://github.com/google-ar/sceneform-android-sdk/blob/master/samples/hellosceneform/app/src/main/java/com/google/ar/sceneform/samples/hellosceneform/HelloSceneformActivity.java).

0 голосов
/ 12 июня 2019

Вы можете сделать это легко с помощью Sceneform. На самом деле у вас нет никакого кода Sceneform для него. Вы просто используете стандартное распознавание жестов Android, чтобы обнаружить жест и использовать его для обновления поворота вашего узла. https://developer.android.com/training/gestures/detector

...