gpt4 book ai didi

android - 在没有 ArCore 的情况下与 SceneView 内的 3D 模型交互

转载 作者:行者123 更新时间:2023-12-05 00:05:53 25 4
gpt4 key购买 nike

我想在没有相机和 ArCore 的场景 View 上加载 3D 对象。所以我创建了一个简单的 xml 布局,如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<com.google.ar.sceneform.SceneView
android:id="@+id/scene"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</RelativeLayout>

并像这样加载 3D 对象:

   private fun renderObject() {
ModelRenderable.builder()
.setSource(this, R.raw.andy)
.build()
.thenAccept {
it?.let {
node = Node().apply {
setParent(scene)
localPosition = Vector3(0f, 0f, -1f)
localScale = Vector3(3f, 3f, 3f)
name = "Andy"
renderable = it
}

scene.addChild(node)
}
}
.exceptionally {
val builder = AlertDialog.Builder(this)
builder.setMessage(it.message)
.setTitle("error!")
val dialog = builder.create()
dialog.show()
return@exceptionally null
}
}

我得到了预期的 3D 对象: enter image description here

现在的问题是如何与这个 3D 对象进行交互、旋转、缩放和拾取元素?我看到使用 ArCore 有 TransformableNodes但是如果没有 ArCore,我该如何使用它呢?

最佳答案

此存储库中有一个工作示例:https://github.com/chnouman/SceneView

它使用自定义节点 (DragTransformableNode)。相关 fragment 位于 SceneViewActivity.kt 中。

    private fun addNodeToScene(model: ModelRenderable) {
if (sceneView != null) {
val transformationSystem = makeTransformationSystem()
var dragTransformableNode = DragTransformableNode(1f, transformationSystem)
dragTransformableNode?.renderable = model
sceneView.getScene().addChild(dragTransformableNode)
dragTransformableNode?.select()
sceneView.getScene()
.addOnPeekTouchListener { hitTestResult: HitTestResult?, motionEvent: MotionEvent? ->
transformationSystem.onTouch(
hitTestResult,
motionEvent
)
}
}
}

如果有人对此感兴趣的话,我已经 fork 了这个 repo 并且正在致力于键盘输入支持。

关于android - 在没有 ArCore 的情况下与 SceneView 内的 3D 模型交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56899714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com