天道酬勤,学无止境

augmented-reality

Implement a crosshair kind behaviour in RealityKit

What I want to achieve: Attach a sphere to the camera position (so that it always stay at the center of the screen as the device move) and detect when it is on top of other AR objects - to trigger other actions/behaviour on the AR objects. Approach: I have created the sphere and attached to the center of the screen as shown below @IBOutlet var arView: ARView! override func viewDidLoad() { super.viewDidLoad() let mesh = MeshResource.generateSphere(radius: 0.1) let sphere = ModelEntity(mesh: mesh) let anchor = AnchorEntity(.camera) sphere.setParent(anchor) arView.scene.addAnchor(anchor) sphere

2021-09-24 07:03:10    分类:问答    swift   augmented-reality   arkit   realitykit   reality-composer

使用three.js遮挡真实世界的对象(Occlusion of real-world objects using three.js)

问题 我在实验性增强现实 Web 浏览器中使用了 Three.js。 (浏览器称为 Argon。本质上,Argon 使用高通公司的 Vuforia AR SDK 来跟踪手机摄像头中的图像和对象。Argon 将跟踪信息发送到 Javascript,在那里它使用带有three.js 的透明网页在上面创建 3D 图形电话视频提要。)但是,我的问题是关于three.js。 Argon 发送到网页中的数据允许我将 3D 摄像头与物理手机摄像头对齐并绘制 3D 图形,使它们看起来与预期的现实世界对齐。 我还想让物理世界中的一些东西遮挡 3D 图形(我有物理对象的 3D 模型,因为我已经设置了场景,或者因为它们是准备好的对象,例如 Vuforia 正在跟踪的盒子)。 我想知道人们是否对使用three.js 完成这种遮挡的最佳方法有建议。 谢谢。 回答1 编辑:似乎three.js(R71)的下一个版本将有一个更简单的方法来做到这一点,所以如果你可以使用dev分支(或只是等待),你可以更容易地做到这一点。 看这个帖子:three.js透明物体遮挡 我的原始答案(不使用 R71 中的新功能): 我认为最好的方法是(例如通过创建新的渲染通道来避免额外的工作)修改 WebGL 渲染器(src/renderers/WebGLRenderer.js)并添加对一种新对象的支持,也许称之为“遮挡对象”。

2021-09-18 21:51:37    分类:技术分享    three.js   augmented-reality   vuforia   argon

Android 罗盘精度 - 何时校准?(Android compass accuracy - when to calibrate?)

问题 我开发了一个使用指南针提供一些增强现实功能的应用程序。 我发现有时我需要校准我的指南针以使其正常工作。 我怎么知道(以编程方式)需要校准​​? 我的意思是我知道如何使用 8 模式图校准罗盘,但我想检测到是否需要校准并向用户显示一些警报(“您的罗盘不够准确,请校准您的罗盘传感器。”)。 请问这可能吗? 谢谢! 回答1 我的解决方案是使用 SensorEventListener 接口的onAccuracyChanged()方法。 这就是我会做的: //In SensorEventListener interface implementation @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { switch(sensor.getType()){ case Sensor.TYPE_MAGNETIC_FIELD : switch(accuracy) { case SensorManager.SENSOR_STATUS_ACCURACY_LOW : doSomething(); break; case SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM : doSomethingElse(); break; case SensorManager.SENSOR

2021-09-18 08:56:13    分类:技术分享    android   augmented-reality   compass

图像识别后如何在vuforia sdk ImageTarget中显示布局而不是茶壶模型(How can we show a layout instead of tea pot model in vuforia sdk ImageTarget after image recognition)

问题 如果图像在 qualcomm vuforia sdk 中被识别,我们如何在布局中显示简单的文本,即“你好”。 我正在使用 ImageTarget 的 qualcomm vuforia sdk 示例,现在它在识别图像后显示一个茶壶。 我是增强现实领域的新手。 请帮我。 回答1 在 JNI 文件夹中转到 imagetarget.cpp 文件注释以下内容 #include "Teapot.h" 这是之后加载 3d 纹理的文件 // Draw object: glBindTexture(GL_TEXTURE_2D, thisTexture->mTextureID); glTexCoordPointer(2, GL_FLOAT, 0, (const GLvoid*) &teapotTexCoords[0]); glVertexPointer(3, GL_FLOAT, 0, (const GLvoid*) &teapotVertices[0]); glNormalPointer(GL_FLOAT, 0, (const GLvoid*) &teapotNormals[0]); glDrawElements(GL_TRIANGLES, NUM_TEAPOT_OBJECT_INDEX, GL_UNSIGNED_SHORT, (const GLvoid*) &teapotIndices[0])

2021-09-11 18:29:56    分类:技术分享    android   augmented-reality

截屏相机视图+布局视图android增强现实(taking screenshot camera view+layout view android augmented reality)

问题 我尝试从帧缓冲区获取屏幕截图,它适用于我的布局视图,我使用了以下代码: String mPath = Environment.getExternalStorageDirectory().toString() + "/" + ACCUWX.IMAGE_APPEND; // create bitmap screen capture Bitmap bitmap; View v1 = mCurrentUrlMask.getRootView(); v1.setDrawingCacheEnabled(true); bitmap = Bitmap.createBitmap(v1.getDrawingCache()); v1.setDrawingCacheEnabled(false); OutputStream fout = null; imageFile = new File(mPath); try { fout = new FileOutputStream(imageFile); bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fout); fout.flush(); fout.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e

2021-09-11 15:47:42    分类:技术分享    android   android-layout   android-camera   augmented-reality   screen-capture

将 JPCT-ae 与 QCAR(vuforia) 集成(integrating JPCT-ae with QCAR(vuforia))

问题 我知道我要问的问题有时已经讨论过了,但是在完成所有这些之后,我找不到完整的答案,所以我要问一个新问题 当我尝试将 JPCT-ae 与 QCAR 集成时,一切都按预期进行,我从 jni 的 renderframe 中获得了我的模型视图矩阵,并成功地将它在 java 中转移到 jpct 模型,正如预期的那样完美显示。 但是当我尝试将此矩阵传递给 JPCT 世界相机时,我的模型消失了。 我的代码:在onsurfacechanged: world = new World(); world.setAmbientLight(20, 20, 20); sun = new Light(world); sun.setIntensity(250, 250, 250); cube = Primitives.getCube(1); cube.calcTextureWrapSpherical(); cube.strip(); cube.build(); world.addObject(cube); cam = world.getCamera(); cam.moveCamera(Camera.CAMERA_MOVEOUT, 10); cam.lookAt(cube.getTransformedCenter()); SimpleVector sv = new SimpleVector(); sv.set

2021-09-11 12:32:11    分类:技术分享    android   opengl-es   augmented-reality   qcar-sdk   jpct

QAugmentedReality 是 BB10(QAugmentedReality on BB10)

问题 我想在 BB10 上创建增强现实应用程序。 但是没有可用于 BB10 的 3rd 方库。 所以我想使用诺基亚的 QAugmentedReality 来实现增强现实,因为黑莓说 Qt 应用程序将在 BB10 上运行。 QT 中是否有任何示例 AR 应用程序,以便我可以在 BB10 上运行它并检查它是否有效,然后我开始开发我的应用程序。 回答1 在 QAugmentedReality 的官方教程中,最后有一个示例应用程序的链接。 然而,它是一个 .sis 文件,因此适用于 Symbian。 不确定您是否可以简单地在 BB10 上执行该操作。 在任何情况下,您都可以按照教程进行操作,然后为 BlackBerry 进行编译 回答2 WIkitude 推出其用于 BB10 的增强现实 SDK。 所以现在任何人都可以使用 Wikitude 构建他们的应用程序。 http://www.wikitude.com/

2021-09-11 04:47:20    分类:技术分享    qt   nokia   augmented-reality   blackberry-10

Using ARKit anchor to place RealityKit Scene

I am currently struggling to add an RealityKit Scene to an ARKit anchor. As my previous question, it is not possible to directly add the RealityKit Scene to an ARKit Anchor Node. But how can I use the ARKit Anchor to place my Scene? For example, I want to find an object in the room, and depending on which object I found, I want to use different scenes and anchor them in the room depending on the recognised objects position. Thanks for the help. Current try: func makeUIView(context: Context) -> ARView { let arView = ARView(frame: .zero) // Load the "Box" scene from the "Experience" Reality File

2021-09-09 05:00:17    分类:问答    swift   swiftui   augmented-reality   arkit   realitykit

RealityKit – Asynchronous model loading doesn't work

This code works: let entity = try! Entity.load(named: "toy_robot_vintage") anchorEntity.addChild(entity) But this doesn't: _ = Entity.loadAsync(named: "toy_robot_vintage") .sink(receiveCompletion: { loadCompletion in print("This is never executed") }, receiveValue: { entity in print("This is never executed") anchorEntity.addChild(entity) }) What could be the issue?

2021-09-08 09:04:25    分类:问答    swift   asynchronous   augmented-reality   realitykit   usdz

Loading .rcproject from iOS local directory

I am trying to load a rcproject from a local directory. My target is, to load it from an URL and then show it. If I load it like this: let modelScene = try? Entity.loadAnchor(named: "Experience") everything works fine. But if I do this: let url = URL(fileURLWithPath: "./Experience") or let url = URL(fileURLWithPath: "./Experience.rcproject") and let modelScene = try? Entity.loadAnchor(contentsOf: url, withName: "Experience") or let modelScene = try? Entity.loadAnchor(contentsOf: url) I get the following error: // [Pipeline] Failed to open scene 'Experience -- file:///'. I have no idea, what

2021-09-07 05:03:14    分类:问答    swift   xcode   swiftui   augmented-reality   realitykit