首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将3D SceneKit节点位置映射到2D坐标- projectPoint不起作用

3D SceneKit是苹果公司提供的一个用于创建和渲染三维场景的框架。它可以在iOS和macOS平台上使用,并且提供了一系列的功能和工具来处理三维图形和动画。

在SceneKit中,节点(Node)是场景中的基本元素,它们可以包含几何形状、材质、光照等属性。每个节点都有一个位置属性,用于确定其在三维空间中的位置。

要将3D SceneKit节点的位置映射到2D坐标,可以使用SceneKit提供的方法projectPoint。该方法将一个节点的位置从3D场景坐标系转换为2D视图坐标系。

然而,如果projectPoint方法在您的情况下不起作用,可能有几个原因:

  1. 坐标系转换错误:请确保您正在正确地将节点的位置从3D场景坐标系转换为2D视图坐标系。您可以使用projectPoint方法的返回值来获取转换后的坐标。
  2. 视图设置错误:请确保您的SceneKit视图正确设置,并且与节点的位置转换相关的参数(例如相机位置、投影矩阵等)正确配置。
  3. 节点位置错误:请检查您要转换的节点的位置是否正确。您可以使用SceneKit提供的其他方法来验证节点的位置是否与您期望的一致。

如果您仍然无法解决问题,可以尝试查阅SceneKit的官方文档或者参考其他开发者的经验和讨论。以下是腾讯云提供的一些与3D场景相关的产品和服务:

  1. 腾讯云游戏多媒体引擎(GME):提供了音频和语音通信解决方案,可用于游戏中的实时语音聊天和音频处理。详情请参考:腾讯云游戏多媒体引擎(GME)
  2. 腾讯云直播(CSS):提供了直播流媒体处理和分发的解决方案,可用于实时视频流的处理和传输。详情请参考:腾讯云直播(CSS)

请注意,以上产品和服务仅供参考,具体选择应根据您的实际需求和项目要求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ARKit:增强现实技术在美团到餐业务的实践

SpriteKit 是 2D 渲染引擎,它提供了动画、事件处理、物理碰撞等接口,通常用于制作 2D 游戏。SceneKit3D 渲染引擎,它建立在 OpenGL 之上,支持多通道渲染。...虽然我们可以用 SpriteKit 把 2D 的卡片放置到 3D 的 AR 世界中,但是考虑到扩展性,方便之后为 AR 页面添加新的功能,这里我们选用 3D 渲染引擎 SceneKit。...ARSCNView 是 SCNView 的子类,它做了三件事: 将设备摄像头捕捉的每一帧的图像信息作为 3D 场景的背景 将设备摄像头的位置作为 3D 场景的摄像头(观察点)位置 ARKit 追踪的真实世界坐标轴与...3D 场景坐标轴重合 卡片信息 SceneKit 中使用 SCNNode 来管理 3D 物体。...SCNSceneRenderer 协议有两个方法用来投射坐标projectPoint::三维坐标系中点的坐标,投射到屏幕坐标系中 unprojectPoint::屏幕坐标系中的点的坐标,投射到三维坐标系中

2.1K20

ARKit by Example - 第1部分:AR立方体

这堂课有几件事: 从视图中的设备相机渲染实时视频流,作为3D场景的背景 ARKit的3D坐标系与SceneKit3D坐标系匹配,因此在此视图中渲染的对象将自动匹配增强的ARKit世界视图 自动移动虚拟...SceneKit 3D相机以匹配ARKit跟踪的3D位置,因此不需要额外的代码来连接ARKit移动事件以映射到SceneKit 3D渲染。...SceneKit有几个基本类,SCNScene是所有3D内容的容器,您可以在场景中添加多个3D几何体,包括各种位置,旋转,比例等。...然后几何体包裹在场景节点中并将其添加到场景中。然后SceneKit遍历场景图并渲染内容。...ARKit和SceneKit坐标系如下所示: ? image.png 正如您在上面的代码中所看到的那样,摄像机前面的摄像机位置为-0.5,因为摄像机面向负Z方向。

1.2K30

SceneKit_入门08_材质

SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit..._高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点...SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字 让学习成为一种习惯 干活来袭前奏 创建工程 让学习变成一件开心的事情 添加游戏框架 学习是一件很开心的事情...,你可以使用这些通道数字,去绘制材质的内容通过不同的方式 举个例子帮你理解一下: 学习快乐 很简单: 表示一个相框的一个几何体可能会使用一组纹理坐标来映射相框架本身的材质,另一组纹理坐标用于图片放置到框架中...2.可以通过纹理图片作为法线地图,使用RGB 表示 XYZ 下图就是一样模拟法线坐标的图像 效果图 映射(reflectiv) 你可以这样理解: 给材质外边加一个罩子,光能透过这个罩子照射到物体上

1.2K40

iOS - SceneKit显示与交互3D建模(二)

上篇文章iOS - SceneKit显示与交互3D建模(一)中我们介绍了sceneKit的简单使用,还提到一个需求,就是要从沙盒中动态加载场景 猜想阶段 素材拖至沙盒的Documents文件夹下,...scn是xcode能够识别的场景文件,该文件本身就是scene,所以不为nil,而如果是dae初始化场景,dae文件只是作为一个节点加入到新建的scene中,由于没有新建scene自然也就添加不了这个素材节点...新的scnassets 新的scnassets拖入沙盒的Document文件夹下,更名为art.scnassets,再次运行程序看看 ? ��成功 测试成功!...scnView addGestureRecognizer:tap]; - (void)tapTest:(UITapGestureRecognizer *)tap { // 获取模型点击处的三维坐标...SCNVector3 projectedOrigin = [self.scnView projectPoint:SCNVector3Zero]; CGPoint vp = [tap locationInView

1.5K60

ARKit 简介

4.坐标识别及转换:3D模型显示在现实图像中不是单纯的frame坐标点,而是一个三维的矩阵坐标。这基本上也是学习AR最难的部分,好在ARKit帮助我们大大简化了这一过程。...而ARKit的核心就是ARSession,下面我们一步步实现一个简单的ARKit场景。...ARKit提供了两种主要AR技术Content Technology 分别是: Scenekit: 基于3D场景 SpriteKit:基于2D场景 3,然后系统就为我们新建了一个简单的项目和场景...//创建节点节点可以理解为AR将要展示的2D图像) SKLabelNode *labelNode = [SKLabelNode labelNodeWithText:@" 修改模型 在苹果的例子中...接下来“pict1.jpg”和“pict2.jpg”替换我们所准备好的图片。 ? Xcode默认的AR项目自带了一个3D模型,我们需要用我们刚创建的模型替换它。

2.5K60

ARKit和CoreLocation:第一部分

Apple文档: 增强现实(AR)描述了用户体验,这些体验2D3D元素从设备的相机添加到实时视图中,使得这些元素看起来居住在现实世界中。...image.png worldAlignment - Apple Docs 创建AR体验取决于能够构建用于将对象放置在虚拟3D世界中的坐标系,该虚拟3D世界映射到设备的真实位置和运动。...节点添加到场景 ? https://developer.apple.com/documentation/scenekit/scnsphere 在我们继续之前,让我们先做一些基本的事情。...我们的球体将自动显示为跟踪真实世界的位置,因为ARKitSceneKit空间与真实世界空间相匹配。如果我们想要使用坐标,我们可能需要找到一些持久的东西来锚定提示我们的节点将来。...虽然这与它们用于位置节点的方式不同,但它们足够接近,您可以开始考虑实际应用的原则。为此,使用SceneKit创建一个新的ARKit项目。当你运行它时,屏幕前应该有一个漂浮在你面前的屏幕截图。

2.2K20

iOS ARKit教程:用裸露的手指在空中画画

为了以方便的方式处理平面,我们创建一个虚拟的SceneKit节点,该节点保存平面位置信息和对焦点方块的引用。...node是一个正常的SceneKit节点,放置在平面的确切位置和方向。它没有几何形状,因此它是不可见的。...我们使用它来添加我们自己的平面节点,该节点也是不可见的,但保存有关平面方向和位置的信息anchor。 那么如何保存位置和方向 ARPlaneAnchor?位置,方向和比例均以4x4矩阵编码。...这意味着较深的皮肤色素导致更可靠的跟踪。其次,由于用户将他们的手放在桌子上,并且由于我们已经桌子检测为平面,因此缩略图的位置2D视图投影到3D环境导致手指的几乎准确位置。表。...iOS ARKit Vision库检测到的要素点 我们按照以下步骤初始化缩略图跟踪: 上面最棘手的部分是如何点击位置从UIView坐标空间转换为图像坐标空间。

2.2K30

SceneKit_中级04_约束的使用

、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字...SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字 让学习成为一种习惯 先告诉你 我们在做应用开发的时候,也会用到约束,应用中的约束,就是当一个视图变化的时候...),当系统进行下一次渲染的时候,会重新计算这个块中的约束,然后调整节点的状态 2.创建方法 /* * world 设置为YES 使用世界坐标系,设置为NO 使用自身坐标系 + (instancetype...withBlock:(SCNMatrix4 (^)(SCNNode *node, SCNMatrix4 transform))block SCNIKConstraint(反向运动约束) 1.作用: 一个节点链移动到一个目标位置...4.设置目标位置,这个值可以动态的改变 3.举个例子理解一下 比如机器人的组成身体 上臂 胳膊 和 手,身体是上臂的根节点,上臂是胳膊的根节点,胳膊是手的根节点,手是身体的根节点,如果我们要实现上面的约束的话

61310

iOS ARKit教程:赤手在空中绘画

VIO是一种技术,通过这种技术可以摄像机与运动传感器融合在一起,从而在3D空间中追踪设备的位置。...为了方便地处理平面,我们创建一个虚拟场景节点,该节点包含平面位置信息和对焦点正方形的引用。平面是在X和Z方向上定义的,Y是表面的法线。...node 是放置在平面的精确位置和方向上的一个正常的SceneKit节点。它没有几何形状,所以它是不可见的。...2D点投射到最近的平面上,来寻找与屏幕视图中的2D点相对应的真实的平面。...其次,由于用户双手放在桌子上,并且我们已经表格作为一个平面来检测,所以thumbnail的位置2D视图投射到3D环境将会导致手指在表格上的精确位置

1.8K10

ARKit介绍

A SCNNode是“场景图的结构元素,表示3D坐标空间中的位置和变换”,其中可以附加几何图形,灯光,相机或其他可显示内容。我决定使用球体作为几何体。...我希望节点位于摄像机前方10厘米处,因此我需要当前帧才能访问摄像机在世界坐标空间中的位置和方向。 ? 红色是“x”轴,绿色是“y”轴,蓝色是“z”轴。...因此,如果使用0,对象位置位于当前相机框架的正前方。...image.png 3D中的欧几里德距离公式 我用结束节点位置(两个3D矢量)减去起始节点位置,得到一个新的矢量,然后我应用了公式|a| = sqrt((ax * ax) + (ay * ay) + (...最后,最后一个问题:如何节点放在最近的平面上?我已经知道如何节点放置在摄像机所在的位置,但我如何获得距离最近的平面的距离。答案是:hitTest(_:types:)。

2.3K20

ARKit 初探

ARKit主要负责AR计算,它将ARCamera捕获的视频帧当作背景,使用视觉惯性测距(VIO)来精确跟踪周围的世界,进行坐标转换,场景搭建及平面的捕获;然后,通过 SceneKit(3D)/SpritKit...顾名思意,就是当用户点击屏幕时,ARKit 点击屏幕的2D空间位置转换为ARKit 通过 ARCamera 捕获到的视频帧的 3D 空间位置。并在这个位置检测是否有平面。...ARKit.png SceneKit 的主要作用是虚拟物体展示在3D场景中。...根据2D坐标点搜索3D模型位置。当我们在手机屏幕点击某一个点的时候,可以捕捉到这一个点所在的3D模型的位置。为什么返回值是一个数组呢?...ARAnchor 包含真实世界位置和方向的信息。通过它可以轻松地虚拟物体添加,更新或从会话中删除。 ARCamera ARCamera 用于捕捉视频流。

2.4K20

SceneKit_入门09_物理身体

SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit..._高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点...、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字...SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字 让学习成为一种习惯 今天带大家熟悉一下,SceneKit 游戏引擎中都有那几种物理身体,他们的作用是什么...静态身体(StaticBody) Scenekit_03.gif 理解: 动画下面的柱子添加了静态的物理身体,你可以这样理解,它有一个很大的质量。外力对他不起作用

48030

iOS - SceneKit显示与交互3D建模(一)

最近公司要求在手机上显示3D模型,并且要获取点击的模型坐标,找了很多相关资料,发现有两种实现方式,一种是集成Unity3D,另一种是使用苹果提供的SceneKit;由于使用Unity3D太麻烦,于是选择使用...SceneKit实现的内容为节点层次结构树,也被称为场景图。一个场景由一个为场景世界定义一个坐标空间的根节点,以及其他的可视节点组成。...�Game Demo 初窥门径 代码从上至下的流程: 创建一个场景scene,场景本身并不可见,需要添加到sceneView的场景上 创建一个摄像机节点并设置摆放的位置,所处位置即视角所看的位置,可以联想到眼睛视角...创建灯光节点设置摆放的位置,灯光可以让需要呈现的物体变得更有质感。...iOS - SceneKit显示与交互3D建模(�二) 最后附上DEMO LXF3DSceneDemo

4.2K40

到底有多强?苹果的增强现实框架:ARKit

ARKit的提供了自带的两个渲染类:ARSCNView和ARSKView,后者用来渲染2D模型。之前鲜有问津的SceneKit算是有了用武之地。...此外SCeneKit的HitTest返回虚拟物品。 ARFrame摄像头视频帧的包装类,包含位置追踪信息、环境参数、视频帧。...(这个我一般是用OpenGL的shader去做,我想苹果工程师是说图像用Metal转成位图后,根据坐标去获取RGB值。但特征点不多的话,直接在CPU中利用公式计算一下不就行了吗?...目前ARKit支持的3D渲染引擎,有sceneKit,Unity3D,UE。...坐标系 ARKit和OpenGL一样,使用右手坐标系 [1504061887307_6694_1504061887404.jpg] 定位 模型加载到空间中,需要6个自由度(6DOF)的信息来指定模型的表现

3.2K00

ARKit示例 - 第3部分:添加几何和物理乐趣

https://github.com/markdaws/arkit-by-example/tree/part3 命中测试 正如您在第一个教程中看到的,我们可以在任何X,Y,Z位置插入虚拟3D内容,它将在现实世界中渲染和跟踪...在这个应用程序中,当用户单击屏幕时,我们执行命中测试,这涉及获取2D屏幕坐标并通过2D屏幕点(在投影平面上具有3D位置)从相机原点发射Ray并进入现场。...如果光线与任何平面相交,我们得到命中结果,然后我们获取光线和平面相交的3D坐标,并将我们的内容放置在该3D位置。...这个代码非常简单,ARSCNView包含一个hitTest方法,你传递屏幕坐标,它负责通过相机原点从那个点投射3D光线并返回结果: - (void)handleTapFrom: (UITapGestureRecognizer...默认情况下,会话保持相同的坐标系和找到的任何锚点: // Get our existing session configuration ARWorldTrackingSessionConfiguration

96910

《 iPhone X ARKit Face Tracking 》

人脸位置和方向 父类ARAnchor的transform属性以一个4*4矩阵描述了当前人脸在世界坐标系的位置及方向。...该变换矩阵创建了一个“人脸坐标系”以将其它模型放置到人脸的相对位置,其原点在人头中心(鼻子后方几厘米处),且为右手坐标系—x轴正方向为观察者的右方(也就是检测到的人脸的左方),y轴正方向延人头向上,z轴正方向从人脸向外...3D模型设计的时候还需去掉一些不必要的部件效果视频 如果要做类似上面视频中的镜片反射效果,使用SceneKit也十分方便,只需要将镜片的反射贴图(SCNMaterial的reflective属性)映射到...if (index > _count - 1) { index = _count - 1; } return self.diffuseArray[index]; } 几个脸部表情系数的组合映射到一个具体的分值...还可以将其映射到3D虚拟人物的形变上以实现animoji的效果,此处开发者们可自行脑洞大开:) 拍照 & 录制 可能是由于SceneKit原本是设计用来做游戏渲染的框架,只提供了一个截屏的接口snapshot

3.6K00

ARKit上手 添加3D物体

物体 SceneKit有一些基础类,SCNScene是所有3D内容的容器,可以在其中添加多个3D物体。...模型其实可以分为两个步骤: 相机捕捉现实世界图像–由ARKit实现 在图像中显示虚拟3D模型/2D模型–由SceneKit/SpriteKit实现 ARKit中ARSCNView用于显示3D虚拟AR的视图...3D场景中则是由SceneKit框架来完成,每个虚拟物体都是一个节点SCNNode,每个节点构成一个场景SCNScene。...它属于3D场景中的一个环节,每一个3D Scene都会有一个Camera,它决定了我们看物体的视野。 下图是ARKit与SceneKit的框架关系图: ?...当ARWorldTrackingSessionConfiguration计算出相机在3D世界中的位置时,它本身并不持有这个位置数据,而是将其计算出的位置数据交给ARSession去管理,而相机的位置数据对应的类就是

2.1K10

ARKit浅析V1.0

增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。...ARKit框架提供了两种AR技术,一种是基于3D场景(SceneKit)实现的增强现实,一种是基于2D场景(SpriktKit)实现的增强现实。...(SceneKit是苹果在iOS8中集成的一套3D引擎框架) 下图是ARKit中主要类的关系图: ? 上图中,ARSCNView可以认为是一个容器,代表的就是看到的现实世界。...2、如上图左边部分:显示我们添加进去的AR物体,这里可以是一个3D物体,也可以是一个2D物体。...1 ARSCNView 之前介绍过,ARKit支持3D2D场景,ARSCNView是3D的AR场景视图,是从SceneKit框架中的SCNView继承过来的,其内部最重要的属性是 @property

1.7K50

《iPhone X ARKit Face Tracking》

iPhone X前置深度摄像头带来了Animoji和face ID,同时也3D Face Tracking的接口开放给了开发者。...人脸位置和方向 父类ARAnchor的transform属性以一个4*4矩阵描述了当前人脸在世界坐标系的位置及方向。...该变换矩阵创建了一个“人脸坐标系”以将其它模型放置到人脸的相对位置,其原点在人头中心(鼻子后方几厘米处),且为右手坐标系—x轴正方向为观察者的右方(也就是检测到的人脸的左方),y轴正方向延人头向上,z轴正方向从人脸向外...如果要做类似上面视频中的镜片反射效果,使用SceneKit也十分方便,只需要将镜片的反射贴图(SCNMaterial的reflective属性)映射到cube map即可,支持以下4种设置方案 A horizontal...还可以将其映射到3D虚拟人物的形变上以实现animoji的效果,此处开发者们可自行脑洞大开:) 拍照 & 录制 可能是由于SceneKit原本是设计用来做游戏渲染的框架,只提供了一个截屏的接口snapshot

1.9K30

SceneKit_入门04_灯光

SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit..._高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点...、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字...SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字 让学习成为一种习惯 悄悄的告诉你 今天我们要学习的SceneKit 游戏框架中的几种光以及如何使用它们...光的介绍 环境光(SCNLightTypeAmbient) 这种光的特点,没有方向,位置在无穷远处,光均匀的散射到物体上.

1.2K20
领券