我正在开发一个AR导航应用程序,但我对它的AR方面并不太熟悉。是否可以将物体放置在静态位置,例如屏幕的一角?
我的应用程序基于谷歌的场景形式示例:https://github.com/google-ar/sceneform-android-sdk/tree/master/samples/hellosceneform.我已经导入了我想要使用的3D模型。目前,该应用程序正在寻找可以放置对象的锚。我只想在屏幕的一角放置一个导航箭头,箭头应该仍然能够旋转。
我已经搜索了例子或类似的问题,但没有找到任何。谢谢你的帮助。
if (useStaticArrow) {
// Rotation at the registerListeners is measured, so that the arrow points to north in our coordinate system
camera.getPose().compose(Pose.makeTranslation(0.37f, -0.17f, -1f))
.extractTranslation().toMatrix(cameraAnchorMatrix, 0);
// Rotate the arrow in the needed direction to the next target
Matrix.rotateM(cameraAnchorMatrix, 0, neededStartRotation + directionChange, 0f, 1f, 0f);
virtualObject.updateModelMatrix(cameraAnchorMatrix, scaleFactor / 12f);
virtualObject.draw(viewmtx, projmtx, colorCorrectionRgba, arrowColor);
}
(Renjith的完整代码段)
使三维模型成为摄影机节点的子节点,通过使其成为摄影机节点的子节点,可以强制其位置相对于摄影机而非锚点更新。使用局部旋转来旋转模型。
[更新]
你也可以使用场景表单作为应用程序布局的一部分。xml。在布局中。xml对于视图,添加场景视图作为视图布局的一部分。
<com.google.ar.sceneform.SceneView
android:id="@+id/sceneView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
/>
然后在你的MainActivity.java
import android.net.Uri
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.widget.Toast
import com.google.ar.sceneform.Node
import com.google.ar.sceneform.Scene
import com.google.ar.sceneform.math.Vector3
import com.google.ar.sceneform.rendering.ModelRenderable
import kotlinx.android.synthetic.main.act_main.*
class MainActivity : AppCompatActivity() {
private lateinit var scene: Scene
private lateinit var node: Node
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.act_main)
scene = sceneView.scene
render(Uri.parse("coffee_cup.sfb"))
}
private fun render(uri: Uri) {
ModelRenderable.builder()
.setSource(this, uri)
.build()
.thenAccept {
addNode(it)
}
.exceptionally {
Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show()
return@exceptionally null
}
}
private fun addNode(model: ModelRenderable?) {
model?.let {
node = Node().apply {
setParent(scene)
localPosition = Vector3(0f, -2f, -7f)
localScale = Vector3(3f, 3f, 3f)
renderable = it
}
scene.addChild(node)
}
}
override fun onPause() {
super.onPause()
sceneView.pause()
}
override fun onResume() {
super.onResume()
sceneView.resume()
}
}
我正在使用ArCore为Android构建一个简单的导航应用程序(Java)。我开始在Google(https://github.com/google-ar/sceneform-android-sdk/tree/master/samples/hellosceneform)的场景表单演示上构建我的应用程序。 目前,该应用程序正在扫描环境中的锚点。用户可以通过点击锚点将对象放置在锚点上。是否可以使用这
我正在尝试使用ARCore在屏幕上不点击的情况下显示对象。在Google提供的ARCore Sceneform的基本示例中,您需要在屏幕检测到表面后点击屏幕。 我想实现这一点,AR在不点击屏幕的情况下显示对象。 我试着在不点击屏幕的情况下进行显示。 如果有人知道怎么做,请帮助我。提前感谢
问题内容: 选项1:无Javascript 我只想显示一个 静态 模板,该模板在任务运行时显示“请稍候…”。这是route函数的简化版本: 它不会让我不返回使用,从而跳过了我需要完成的处理。我需要它在进程运行 时 显示进度屏幕 , 然后在完成时显示“成功”。我该怎么做呢? 选项2:JavaScript 如果无法做到这一点, 必须 使用Javascript ,那么到目前为止,这是我尝试过的: htm
问题内容: 如何使用jQuery在屏幕中央设置a ? 问题答案: 我喜欢向jQuery添加功能,因此该功能将有所帮助: 现在我们可以这样写:
我有其他一切正确,但由于某种原因,这给我带来了问题。我想实现一个名为填充()的方法。我想在构造函数中被调用。我希望它的方法创建每种类型的对象的随机数量。这是我的代码。我的错误是“*强文本*构造函数在类中淡黄色不能是给定类型的。必需:int 找到:不是参数原因:实际和表单参数列表的长度不同。
在 一到三个 。有没有办法在后始终将单元格放置在屏幕底部?