我想在应用程序中显示一个 3D 对象,您可以通过在
jetpack
撰写中旋转来看到该对象的所有侧面,但我找不到源代码。
谁能展示一下制作代码吗?
我读过一些有关
sceneform
的内容,但没有用于 jetpack
撰写的文档或库。
这是我发现的:
@Composable
fun MySceneformView(model: Model) {
SceneformModel(
model = model,
scale = 1.0f,
rotation = Quaternion.identity(),
position = Vector3(0.0f, 0.0f, 0.0f)
)
}
我不知道这是否有效。
为了将 3D 模型加载到基于 Jetpack Compose UI 构建的 AR/VR Android 应用程序中,最好使用 Thomas Gorisse 的 SceneView 库。要实现 AR/VR SceneView,请将以下代码粘贴到
build.gradle.kts
(模块:app)文件中。
dependencies { // Virtual Reality View
implementation("io.github.sceneview:sceneview:2.2.1")
}
dependencies { // Augmented Reality View
implementation("io.github.sceneview:arsceneview:2.2.1")
}
使用 SceneView 时,
.glb
(GL 传输格式二进制文件)模型是理想的选择。 .glb
是 .gltf
格式的二进制版本,它可以在单个压缩文件中包含多边形几何、照明、材质和动画的层次结构。您可以在.glb
上找到许多sketchfab.com
型号。
加载模型的 Kotlin 代码就这么简单:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
ARSceneViewTheme {
val engine = rememberEngine()
val modelLoader = rememberModelLoader(engine)
val cameraNode = rememberCameraNode(engine)
cameraNode.position = Position(z = 2.5f)
Scene(
modifier = Modifier.fillMaxSize(),
engine = engine,
modelLoader = modelLoader,
cameraNode = cameraNode,
childNodes = listOf(
ModelNode(
modelInstance = modelLoader
.createModelInstance("pigeon.glb"),
scaleToUnits = 1.25f
)
)
)
}
}
}
}