标签: augmented-reality

在ARSCNView Aspect中加载大型3d Object .scn文件适合屏幕ARKIT Swift iOS

我正在使用3D模型开发ARKit应用程序。为此,我使用了3D模型并添加了用于移动,旋转和缩放3D模型的手势。

现在我只面临1个问题,但是我不确定这个问题与什么有关。3d模型是否存在问题,或者我的程序中是否缺少任何内容。

问题是我正在使用的3D模型显示得很大并且超出了屏幕。我正在尝试缩小尺寸,但尺寸很大。

这是我的代码:

@IBOutlet var mySceneView: ARSCNView!
var selectedNode = SCNNode()
var prevLoc = CGPoint()
var touchCount : Int = 0

override func viewDidLoad() {
    super.viewDidLoad()
    self.lblTitle.text = self.sceneTitle
    let mySCN = SCNScene.init(named: "art.scnassets/\(self.sceneImagename).scn")!
    self.mySceneView.scene = mySCN

    let cameraNode = SCNNode()
    cameraNode.camera = SCNCamera()
    cameraNode.position = SCNVector3Make(0, 0, 0)
    self.mySceneView.scene.rootNode.addChildNode(cameraNode)
    self.mySceneView.allowsCameraControl = true
    self.mySceneView.autoenablesDefaultLighting = true

    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(detailPage.doHandleTap(_:)))
    let panGesture = UIPanGestureRecognizer(target: self, action: #selector(detailPage.doHandlePan(_:)))
    let gesturesArray = NSMutableArray()
    gesturesArray.add(tapGesture)
    gesturesArray.add(panGesture)
    gesturesArray.addObjects(from: self.mySceneView.gestureRecognizers!)
    self.mySceneView.gestureRecognizers …
Run Code Online (Sandbox Code Playgroud)

augmented-reality ios swift scnnode arkit

13
推荐指数
2
解决办法
246
查看次数

增强现实工具包 - Android

我一直在寻找免费或商业AR工具包,并需要一些最好的建议!

我不想拥有一个识别图案并创建形状的图案.我的想法使用本地位置并使用服务器中的POI将它们呈现到AR视图.

有任何想法吗?

android augmented-reality

12
推荐指数
2
解决办法
7521
查看次数

使用OpenCV Python计算相机世界位置

我想计算我的相机在世界坐标中的位置.这应该相当容易,但我没有得到我期望的结果.我相信我已经阅读了有关此主题的所有内容,但我的代码无效.这是我做的:

我有一个相机看着一个区域.

1)我画了一张该地区的地图.

2)我通过使用在我的地图上将4个图像点匹配到4个点来计算单应性 cv2.getPerspectiveTransform

3)H homography将每个世界坐标转换为摄像机坐标; 这是正常的

4)为了计算相机矩阵我遵循这个:

translation = np.zeros((3,1)) 
translation[:,0] = homography[:,2]

rotation = np.zeros((3,3))
rotation[:,0] = homography[:,0]
rotation[:,1] = homography[:,1]
rotation[:,2] = np.cross(homography[0:3,0],homography[0:3,1])

cameraMatrix = np.zeros((3,4))
cameraMatrix[:,0:3] = rotation
cameraMatrix[:,3] = homography[:,2]

cameraMatrix = cameraMatrix/cameraMatrix[2][3] #normalize the matrix
Run Code Online (Sandbox Code Playgroud)

5)根据这个,相机的位置应该这样计算:

x,y,z = np.dot(-np.transpose(rotation),translation)
Run Code Online (Sandbox Code Playgroud)

我得到的坐标是完全错误的.我想这个问题应该在步骤4或5的某个地方.我的方法有什么问题?

python opencv computer-vision homography augmented-reality

12
推荐指数
1
解决办法
1万
查看次数

如何计算图片内的特定距离?

对不起,我的英语不好.我有以下问题:

1

让我们说我的移动设备的相机正在显示这张照片.

在图片中,您可以看到4个不同的位置.我知道每个位置(经度,纬度).

现在我想知道,图中的具体位置在哪里.例如,我想在前面20米处和我左边5米处有一个矩形.我只知道这一点的纬度/经度,但我不知道,我必须把它放在图片的内部(x,y).例如,在我看来,POS3位于(0,400).POS4为(600,400),依此类推.

我必须在哪里放置新点,前面20米,左边5米?(所以我的输入是:(LatXY,LonXY),我的结果应该是(x,y)在屏幕上)

我还得到了摄像机的高度以及摄像机的x,y和z轴的角度.

我可以使用简单的数学运算来解决这个问题吗?

非常感谢你!

android coordinate-systems augmented-reality coordinate-transformation android-camera

12
推荐指数
2
解决办法
4527
查看次数

基于标记和无标记增强现实的区别

我是AR的新手,我在互联网上搜索基于标记和无标记的AR,但我对基于标记和无标记的AR感到困惑.让我们假设AR应用程序在扫描特定图像时触发AR动作.所以这是基于标记的AR或无标记AR ..图像不是标记吗?另外,为了定位AR内容,基于标记的AR使用设备的加速度计和指南针如无标记AR?

augmented-reality

12
推荐指数
2
解决办法
2万
查看次数

如何在Vuforia(没有Unity)中点击部分模型?

我想通过点击屏幕在Vuforia (没有Unity)中制作调色板的可点击单元格: 在此输入图像描述

我找到了具有类似功能的Dominoes示例并执行此操作:

  • 创建一个板块对象并乘以单元格对象

  • 调用isTapOnSetColor函数,点击参数x,y(点击坐标)并获取坐标,

  • 坐标是正确的,但获取部分对象的id/name是错误的

我觉得这行问题:

boolean bool = checkIntersectionLine(matrix44F, lineStart, lineEnd);
Run Code Online (Sandbox Code Playgroud)

在Dominoes示例中,这是:

bool intersection = checkIntersectionLine(domino->pickingTransform, lineStart, lineEnd);
Run Code Online (Sandbox Code Playgroud)

但我不知道做什么domino->pickingTransform和粘贴代替这行modelViewMatrix(Tool.convertPose2GLMatrix(trackableResult.getPose()).getData())

我的触摸功能的完整代码:http://pastebin.com/My4CkxHa

你能帮助我做点击或者可能是另一种方式(不是Unity)吗?

java android augmented-reality ios vuforia

12
推荐指数
1
解决办法
287
查看次数

从单应性或使用solvePnP()函数估计相机姿势

我正在尝试在照片上构建静态增强现实场景,在平面和图像上的共面点之间有4个定义的对应关系.

这是一步一步的流程:

  1. 用户使用设备的相机添加图像.我们假设它包含一个用透视图捕获的矩形.
  2. 用户定义矩形的物理尺寸,它位于水平平面(根据SceneKit的YOZ).让我们假设它的中心是世界的起源(0,0,0),所以我们可以很容易地找到每个角的(x,y,z).
  3. 用户在图像坐标系中为矩形的每个角定义uv坐标.
  4. SceneKit场景使用相同大小的矩形创建,并以相同的透视可见.
  5. 可以在场景中添加和移动其他节点.

流

我还测量了iphone相机相对于A4纸中心的位置.所以对于这个镜头,位置是(0,14,42.5),以cm为单位测量.我的iPhone也稍微倾斜到桌子上(5-10度)

使用这些数据我已设置SCNCamera为在第三张图像上获得蓝色平面的所需视角:

let camera = SCNCamera()
camera.xFov = 66
camera.zFar = 1000
camera.zNear = 0.01

cameraNode.camera = camera
cameraAngle = -7 * CGFloat.pi / 180
cameraNode.rotation = SCNVector4(x: 1, y: 0, z: 0, w: Float(cameraAngle))
cameraNode.position = SCNVector3(x: 0, y: 14, z: 42.5)
Run Code Online (Sandbox Code Playgroud)

这将为我提供比较我的结果的参考.

为了使用SceneKit构建AR,我需要:

  1. 调整SCNCamera的fov,使其与真实相机的fov相匹配.
  2. 使用世界点(x,0,z)和图像点(u,v)之间的4个相关误差计算相机节点的位置和旋转

方程

H - 单应性; K - 内在矩阵; [R | t] - 外在矩阵

我尝试了两种方法来找到相机的变换矩阵:使用OpenCV中的solvePnP和基于4个共面点的单应性手动计算.

手动方式:

1.找出单应性

单应

此步骤已成功完成,因为世界原点的UV坐标似乎是正确的.

2.内在矩阵

为了获得iPhone 6的内在矩阵,我使用了这个应用程序,它给出了100个640*480分辨率图像中的以下结果:

固有

假设输入图像具有4:3的宽高比,我可以根据分辨率缩放上述矩阵

Intrinsic2

我不确定,但感觉这是一个潜在的问题.我用cv :: calibrationMatrixValues来检查fovx的计算内在矩阵,结果是~50°,而它应该接近60°. …

opencv homography augmented-reality ios scenekit

12
推荐指数
1
解决办法
3122
查看次数

使用ARKit显示DAE文件并跟踪场景中的锚点

我正在尝试ARKit,我设置了一个ARSCNView使用本教程.

然后使用本教程的第二部分设置跟踪水平3D平面.

我创建了一个单独的视图应用程序,然后将一个ARSCNView刷新约束到根视图,并为我的插座ViewController.

这是以下代码ViewController:

import UIKit
import ARKit

class ViewController: UIViewController {

    //MARK: Properties
    @IBOutlet weak var arScene: ARSCNView!

    //MARK: ARKit variables
    var realityConfiguration: ARWorldTrackingSessionConfiguration?

    //MARK: Lifecycle
    override func viewDidLoad() {
        super.viewDidLoad()         
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        self.prepare()
    }

    //MARK: Actions      

    //MARK: Overrides
}

extension ViewController {
    func prepare() {
        //Check to see if active reality is supported
        guard ARSessionConfiguration.isSupported else {
            //Custom alert …
Run Code Online (Sandbox Code Playgroud)

augmented-reality ios swift iphone-6 arkit

12
推荐指数
1
解决办法
8128
查看次数

自然标记增强现实实现

在发现OpenCV的强大功能后,我决定使用该库来开发我正在研究的自然标记跟踪引擎.但我的问题是我不知道如何正确实施这种跟踪器.

我制定了以下计划:

  1. 使用对象跟踪算法之一(例如SIFT,SURF等)来描述和从实时摄像机馈送中提取关键点.
  2. 基于提取的关键点,将它们转换为直方图,并将直方图与存储的标记的直方图进行比较.
  3. 找到匹配项后,转换这些位置信息并将其传递给负责渲染3d对象的引擎.

我尝试了SIFT和SURF算法来描述和提取关键点,最终结果是两种算法的超低fps(即小于0 fps).我注意到SIFT和SURF在计算上相当昂贵,它是否适合在现场摄像机上进行这种跟踪?

谢谢.

c++ opencv augmented-reality

11
推荐指数
1
解决办法
3327
查看次数

将子项添加到场景ARKit/SceneKit时FPS会下降

我正在研究ARKit项目4个月了.我注意到在将一个子项添加到我的场景rootNode时,会有一个FPS丢弃.该设备冻结不到一秒钟.我做了很多研究和试验,注意到所有Apple的代码示例在放置对象时都会使这个FPS下降.无论是直接添加节点(scene.rootNode.addChild(child))还是在不同阶段(didUpdateAtTime,didApplyAnimations等等)的渲染器循环中添加节点都无关紧要.我发现一旦将一个对象添加到场景中,下一个添加的对象将立即呈现.我使用在SceneKit编辑器中创建的3D模型,克隆它以生成我的不同节点,然后将它们添加为子节点.我在放置物体之前做了这个装载工作.

仪器显示渲染器循环在冻结期间忙.

我找到的唯一解决方案是在开始整个体验之前将我的节点添加到加载屏幕后面的场景中.

这是游戏编程中使用它们之前渲染节点的正常行为吗?

多谢你们

augmented-reality ios scenekit swift arkit

11
推荐指数
1
解决办法
459
查看次数