我是这个ARCore的新手,我一直在关注SDK中提供的HelloAR Java Android Studio项目.
Everthing工作正常并且非常酷,但是,即使没有检测到飞机,我也想在触摸屏幕时放置/放下物体.让我解释一下......
据我所知,它将检测水平平面,并且只在那些水平平面上,我可以放置3D物体进行运动跟踪.
有没有办法(可能使用PointCloud信息)能够在场景中放置一个对象,即使没有检测到水平面?有点像这些例子吗? https://experiments.withgoogle.com/ar/flight-paths https://experiments.withgoogle.com/ar/arcore-drawing
我知道他们正在使用Unity和openFrameworks,但这可以用Java完成吗?
另外,我看过 如何将物体放在空中? 以及 如何在ARCore中检查与对象的光线交集
但我不认为我理解Ancor的概念(我设法将对象放在场景中,但它要么立即消失,要么只是一个普通的OpenGL对象,不了解现实世界.
我想要了解的是: - 如何以及是否可以创建自定义/用户定义的平面,即ARCore不会自动检测到的平面? - 我怎样才能创建一个Ancor(我想这个样本在PlaneAttachment类中完成),它没有链接到任何连接到某个PointCloud点的平面OR? - 如何绘制对象并将其放置在先前创建的Ancor中?
我认为这个问题太多了,但是查看API文档根本没有帮助我
谢谢!
编辑:
这是我添加到HelloArActivity.java的代码(除了//*****之后和之前的行之外,Everything与原始文件相同...
@Override
public void onDrawFrame(GL10 gl) {
...
MotionEvent tap = mQueuedSingleTaps.poll();
// I added this to use screenPointToWorldRay function in the second link I posted... I am probably using this wrong
float[] worldXY = new float[6];
...
if (tap != null && frame.getTrackingState() == TrackingState.TRACKING) {
// ***** I added this to use …Run Code Online (Sandbox Code Playgroud) 我一直在玩Unity中的ARCore.
我想要实现的是根据输入的GPS坐标和当前的GPS位置产生对象(例如,对象应该以x.xxxxx,y.yyyyy坐标产生,转换为Unity中的世界坐标).
我发现为了正确放置物体,我需要以某种方式保持北方向.
如何用ARCore实现这一目标?在ARKit中,创建场景,使其中一个轴向北(根据场景创建时刻的罗盘读数).这与ARCore不同.
是否有针对ARCore的解决方法?
我正在开发一个应用程序,我需要使用ARCore放置对象.然后我需要将帧保存为图像.那么有没有办法用ARCore相机设置自动对焦?
我是一名IT学生,想了解(了解)有关ARCore中Augmented Faces API的更多信息.
我刚刚看到了ARCore V1.7版本和新的Augmented Faces API.我获得了这个API的巨大潜力.但我没有看到关于这个问题的任何问题或文章.所以我在质疑自己,这里有一些关于这个版本的假设/问题.
因此,如果您对此主题有任何建议或评论,请分享!
我试图构建和运行此存储库增强图像 ,但遇到了此错误。
引起原因:java.lang.RuntimeException:创建sfa时出错。
向下钻取此警告警告!API 'variant.getMergeResources()' is obsolete and has been replaced with 'variant.getMergeResourcesProvider()'。
从构建日志分析中获得的更多信息,我看到以下错误错误:无法导入“ sampledata / airplane / Airplane.obj”
我试图找到这个地方
variant.getMergeResources()
Run Code Online (Sandbox Code Playgroud)
用于替换它,但是没有运气。
请协助,也许我需要更新插件。我怀疑应该采取哪些步骤才能解决。
这是我的 android\build.gradle 文件
buildscript {
ext.kotlin_version = '1.2.41'
repositories {
google()
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.ar.sceneform:plugin:1.13.0'
}
}
allprojects {
repositories {
google()
mavenCentral()
jcenter()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)
这是我的 app\build.gradle 文件
package example.android.app
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = …Run Code Online (Sandbox Code Playgroud) 我的理解是有几种环境支持 ARCore,Unity 和 Sceneform SDK 是其中一些选项。
我想知道除了一个在 Java 中,另一个在 C# 中之外,它们之间有什么不同?除了语言偏好之外,为什么有人会选择一种而不是另一种?
谢谢
unity-game-engine augmented-reality android-augmented-reality arcore sceneform
下面是我尝试过的代码。它给了我想要的结果,但它没有像 camToPlan 或 MagicPlan 应用程序那样进行优化。在 CamToPlan 应用程序中,中心节点根据相机移动非常有效地移动。如果相机倾斜,锚节点距离会发生变化。如何在下面的代码中实现相同的效果?
Camera camera = arSceneView.getScene().getCamera();
Vector3 distance = Vector3.subtract(camera.getWorldPosition(), vector3CirclePosition);
float abs = Math.abs(distance.y);
float newAngleInRadian = (float) (Math.toRadians(90f) - (float) camera.getLocalRotation().x);
float zCoordinate = (float) (abs / Math.cos(newAngleInRadian));
Log.i("1", "zCoordinate::" + zCoordinate + "::" + abs);
Vector3 cameraPos = arFragment.getArSceneView().getScene().getCamera().getWorldPosition();
Vector3 cameraForward = arFragment.getArSceneView().getScene().getCamera().getForward();
Vector3 position = Vector3.add(cameraPos, cameraForward.scaled(zCoordinate));
redNodeCenter.setWorldPosition(position);
Run Code Online (Sandbox Code Playgroud) 我正在致力于创建简单的 AR 应用程序,并且使用了 ARCore 和 ARKit。我对现实世界中虚拟物体定位的准确性印象深刻,因为我玩的手机没有深度传感器,也没有多个摄像头,所以我想知道:这些 SDK 实现平面检测的算法是什么?
我在我的 Android 项目中使用 ARCore。它有一项活动 MainActivity.java 和一项 CustomArFragment.java。
问题是相机质量非常低。如何提高相机预览分辨率。将来,我需要使用相机识别文本,并且质量如此低,很难识别。我无法在谷歌上找到解决方案。尝试了很多事情但没有成功。请任何人告诉如何提高相机质量。我在 AR 和 android 领域是全新的。
谢谢 :)
MainActivity.java:
public class MainActivity extends AppCompatActivity {
private CustomArFragment arFragment;
private TextView textView;
private AugmentedImageDatabase aid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
arFragment = (CustomArFragment) getSupportFragmentManager().findFragmentById(R.id.arFragment);
textView = findViewById(R.id.textView);
arFragment.getArSceneView().getScene().addOnUpdateListener(this::onUpdate);
findViewById(R.id.registeredBtn).setOnClickListener(v -> {
if(ActivityCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
return;
}
registeredImage();
});
}
private void registeredImage() {
File file = new File(getExternalFilesDir(null) + "/db.imgdb");
try {
FileOutputStream outputStream = new FileOutputStream(file);
Bitmap …Run Code Online (Sandbox Code Playgroud)