首页 文章
  • 0 votes
     answers
     views

    SCNNode在放置后违反位置

    我正在使用Apples SceneKit并拥有自定义 .dae 资产 . 我已将资产转换为 .scn 文件 . 我从 .scn 文件中获取名称 SCNNode . 将SCNNode作为子节点放入我的SCNView场景并将其位置设置为 SCNVector3(0,0,-1) 后,它会忽略此位置,而是跟随我的手机位置 . 资产在我身上呈现,当我走开时,它跟随着我 . 它's getting to be...
  • 0 votes
     answers
     views

    节点组的位置在SCNNode.runAction的开头重置

    我有一些代码可以在屏幕被点击时围绕x轴旋转几个SCNNode: func handleTap(gestureRecognize: UIGestureRecognizer) { let sceneView = self.view as SCNView let slice = self.cubes[0...8] let container = SCNNode() fo...
  • 2 votes
     answers
     views

    SceneKit:如果目标是在相机前旋转相机和项目节点X单位,使用变换或直接操纵旋转/位置属性?

    对于体素艺术应用程序,目标是让用户在SceneKit场景中移动和旋转相机,然后点击以放置块 . 下面的代码允许用户通过平移来旋转相机 . 手势结束后,我们移动现有的块,使其在相机的Z轴上为-X单位(即相机前面的-X单位) . cameraNode 是场景的观点,是 userNode 的孩子 . 当用户移动操纵杆时,我们更新 userNode. 的位置 Question: 其他SO帖子通过应用变换而...
  • 0 votes
     answers
     views

    在应用程序窗口中获取SceneKit节点的框架?

    我希望在SceneKit中渲染的对象上覆盖UIView(特别是带有一些文本的高亮框等),但我遇到了一个问题:我当时并不知道对象在屏幕上的确切位置 . 有没有办法在SCNView中获取SCNNode当前位置的CGRect帧?即使只是节点的中心点也会有所帮助,但理想情况下它会给出整个框架,表明几何体在屏幕上占据了多少垂直和水平空间 . 我在文档和网上搜索了相对于SCNNode的“框架”和“边界”的各种...
  • 3 votes
     answers
     views

    SceneKit:用一个手势围绕点轨道相机,同时允许相机以不同的手势旋转

    假设SceneKit场景提供类似于Minecraft的透视图 . 有一台相机 . 摄像机节点的行为类似于人的“头部”,而其父节点的行为类似于“身体” . 摄像机节点是父节点的子节点,称为“userNode” . 目标: 让用户用一根手指平移以旋转相机 . 换句话说,相机位置保持固定,但“头部”旋转并让用户观看场景,就好像在一个圆圈中转身一样 . 让用户用两根手指平移以围绕给定点绕相机运行 ...
  • 1 votes
     answers
     views

    ARKit - 相对于世界原点定位世界上的节点

    目前,我的代码加载到3D模型中,使用该模型创建节点,并在场景中显示节点 . 设置节点的比例/旋转(euler角度)可以正常工作 . 但是,我正在尝试设置节点相对于世界原点的位置,我不希望节点连接到平面 . 我试过设置node.position和node.worldPosition无济于事;虽然节点的位置发生了变化,但是当相机移动时,节点并没有使用ARKit,所以我想知道我需要做什么,所以任何帮助都...
  • 1 votes
     answers
     views

    SceneKit:如何在一起动画多个SCNNode然后调用完成块一次

    目标是同时为多个SCNNode制作动画,然后在完成所有动画后调用完成块 . 并行动画具有相同的持续时间,因此如果一起启动则将同时完成 . This SO answer建议使用Sprite Kit的 group 函数,但Scene Kit中没有模拟,因为 SCNScene 类缺少 runAction . 一个选项是针对每个节点单独运行所有操作,并让每个操作调用相同的完成函数,该函数必须保持一个标志...
  • 1 votes
     answers
     views

    如何为SCNSphere选择合适的半径?

    我正在研究360图像查看器,我使用SCNSphere . 问题是我创建球体时应该使用的半径是多少? 到目前为止,我注意到将半径设置在10到100之间的任何位置都可以正常工作 . 但是,假设图像是缠绕球体,半径不应该是2 * Pi / image.width(其中C = 2 * Pi * R)??不知何故,这对我正在使用的尺寸为1600 x 800的图像完全不起作用 . 这是我的代码: let ma...
  • 1 votes
     answers
     views

    获取用于创建SCNNode的SCNSphere的半径

    如何返回用于设置SCNNode的球体几何体(SCNSphere)的半径 . 我想在一个方法中使用radius,我将一些子节点相对于父节点移动 . 下面的代码失败,因为如果我没有将节点传递给方法,那么结果节点的半径似乎是未知的? 我的数组索引也失败说Int不是Range . 我正在尝试从this构建一些东西 import UIKit import SceneKit class Primitives...
  • 0 votes
     answers
     views

    SceneKit:围绕轴镜像SCNNode

    我正在开发一个AR Kit应用程序,其中一架飞机被放置在一个表面上的用户定义点之间 . 目前,平面在形状和大小方面正确创建,但未在AR空间中以正确的方向放置 . 如何以一种将它放置在设定点的方式镜像节点? 这是当前状态的图像 . 注释如下: Blue :设定点数 Green :成品和放置形状的角落 White :应该镜像形状的线,以便正确放置 Screenshot from the...
  • 3 votes
     answers
     views

    在ARKit中的水平面上移动SCNNode

    在ARKit中,检测到水平面时 . 我添加了一个像结构一样的平面( SCNNode ),其高度非常小,所以它看起来像地板 . 然后我在那个平面上添加更多像立方体等对象 . 现在我希望用户只能在该平面上移动立方体,它应该看起来像是只在那个表面上推动对象 . 多维数据集节点也已作为子节点添加到主场景节点 . 我添加了这样的平移手势: let globalPanRecognizer: UIPanGest...
  • 1 votes
     answers
     views

    如何检测是否在 scenekit 中触摸了 SCNBox?

    如何检测是否在 scenekit 中触摸了 SCNBox?我正在构建一个 VR 应用程序
  • 10 votes
     answers
     views

    ARKit 将 SCNNode 放置在面向相机的位置

    我正在使用ARKit来显示 3D 对象。我设法将节点放在用户面前的真实世界(也就是相机)。但是当我放下相机时,我无法让它们面对镜头。 let tap_point=CGPoint(x: x, y: y) let results=arscn_view.hitTest(tap_point, types: .estimatedHorizontalPlane) guard results.count>...
  • 0 votes
     answers
     views

    如何将 SCNNode 作为子项添加到父级而不更改世界坐标中的相对位置,大小和比例

    我有两个 SCNNode,nodeCh和nodePrnt。他们的世界坐标是可用的,他们的相对 position/size/angle 应保持不变。 我想通过使用- (void)addChildNode:(SCNNode)方法将nodeCh添加到nodePrnt作为孩子。为了做到这一点,我应该根据nodePrnt的相对 position/scale/rotation 来翻译世界 coordinate...
  • 1 votes
     answers
     views

    为什么要在 ARKit 的 renderer(_:nodeFor:)中添加节点到 superNode

    我试图通过一些图像覆盖检测到的平面 所以我试着用renderer(_:nodeFor:) 在这个方法里面,一些博主写了这样的代码 guard let anchor = anchor as? ARPlaneAnchor else { return nil } let anchorNode = SCNNode() let planeNode = SCNNode() let m...
  • 1 votes
     answers
     views

    SceneKit:通过像 SpriteKit 中那样直接设置 velocity 属性来移动 SCNNode?

    在 SpriteKit 中,可以通过直接设置其velocity属性来移动节点。 但是,这在 SceneKit 中似乎不起作用。在游戏循环回调和游戏循环函数之外设置velocity似乎没有任何效果。 来自其中一位 Apple SceneKit 工程师的这个答案建议只能在updateAtTime等游戏循环回调期间访问 velocity 属性。 很明显,velocity属性存在局限性。 使用 SCNNo...
  • 2 votes
     answers
     views

    SceneKit,测试 SCNNode 是否完全可见

    我有一个 2 SCNNode 彼此相邻(1 个大盒子和 1 个小盒子)。 我旋转它的父母,以便相机中的小盒子有时不再可见,是否可以知道小盒子何时不可见,因为它在大盒子后面? 我目前的结构 Scene - RootNode - SCNNode (camera) - SCNNode (parent) - SCNNode (B...
  • 6 votes
     answers
     views

    检查 SCNNode SCNAction 是否完成

    我已经创建了一个玩家可以移动的 SceneKit 3D 迷宫世界。像跳跃这样的一些动作涉及在几秒钟的时间段内改变观察方向时上下移动相机。在此期间,我想忽略用户的轻击和滑动,这通常会导致其他类型的动作,如转弯和前进。 我可以创建一个匹配跳转持续时间的计时器并设置 Bool,但我希望能够以更简单的方式检查摄像机的 SCNNode。 有没有一种简单的方法来查看相机的 SCNNode 是否不再运行 SCN...
  • 3 votes
     answers
     views

    将“SCNNode”添加到 ScreenView 到相机的当前视图

    我有一个图像,我试图添加到 Screenview ARSCNView 会话的当前相机位置。无论我做什么,它似乎把图像放在手机摄像头的当前位置后面,我必须将它移回去看它。我有以下代码: var currentFrame = SceneView.Session.CurrentFrame; if (currentFrame == null) return; var threeVector = new...
  • 2 votes
     answers
     views

    SCNNode 面向相机

    我试图将 SCNCylinder 节点放在触摸点的场景中。我总是希望显示面向相机的圆柱形状直径。它适用于水平场景,但在垂直场景中有问题。在垂直场景中,我可以看到圆柱面,但我想显示朝向相机的全直径,无论相机方向是什么。我知道根据相机变换需要应用一些转换,但不知道如何。我没有使用平面检测它直接添加到场景中的简单节点。 垂直图像: 水平图像: 插入节点的代码如下, override func touch...
  • 1 votes
     answers
     views

    检测 ARKit 中的 SCNNode 上的触摸

    我已将一个 SCNNode(一个平面)放置在 ARKit 1.5 beta 中识别图像的位置。我想在点击飞机时向控制台打印一条消息。到目前为止,我有这个代码: // MARK: - ARSCNViewDelegate (Image detection results) /// - Tag: ARImageAnchor-Visualizing func renderer(_ rend...
  • 1 votes
     answers
     views

    SceneKit 物理问题与动态实体

    这是一个有趣的问题,我已经坚持了一段时间,无法弄清楚。我正在使用 SceneKit(使用 swift)。无论何时何地我尝试将具有动态物理主体的对象放入节点层次结构中(i.e 将它们作为子项添加到另一个节点),物理主体与模型分离(有时模型只是飞走等)。如果我将主体设置为静态,它总是很有效。有没有人听说过这样的事情? 编辑:对不起,如果以前稍微不清楚。只是添加一些有关该问题的更多信息: 我在场景中多次...
  • 0 votes
     answers
     views

    Xcode 7 SceneKit 对象的 position 属性在移动时不会更新?

    所以我正在制作游戏,在游戏中,你将使用 DPad 在场景中移动你的球。虽然 beta 4 中存在同样的问题,但我正在使用 Xcode 7 Beta 5.这是测试视图控制器的代码: class TestController: UIViewController,DPadDelegate { @IBOutlet var scnView:SCNView! @IBOutlet var dpad:DPad! ...
  • 2 votes
     answers
     views

    沿着 X-Axis 拖动 SceneKit 节点,同时保持速度?斯威夫特 3

    Swift 3,SceneKit:在我的游戏中,我在屏幕中央有一个 SCNSphere 节点。球体通过重力下降到 SCNBox 节点上,一旦它与盒子碰撞,就会向它施加速度 SCNVector3(0,6,0)。 创建一个新盒子并向前移动(z)朝向我的相机并朝向球体移动。球体上升,峰值,然后向下(通过重力)朝向新的盒子,当它与新盒子碰撞时,速度为 SCNVector(0,6,0)。这个过程不断重复。一...
  • 1 votes
     answers
     views

    创建一个相对于设备定位并朝向 real-world 标题的 SCNNode

    我正在创建一个导航应用程序,它将使用增强现实来帮助用户导航到指定的位置。 我希望在设备前面放置一个SCNNode(箭头,在这种情况下为箭头),略低于 y-axis。箭头将朝向用户导航到的位置。当用户四处走动时,箭头将围绕 y-axis 旋转以保持指向导航位置。 为了让我的箭头朝向 real-world 位置,我必须设置ARWorldTrackingConfiguration.worldAlignm...
  • 3 votes
     answers
     views

    SceneKit节点不是't changing position with scene'的根节点

    我正在使用带有ARKit的SceneKit,现在有一个简单的应用程序,我点击屏幕,它为我的场景添加了一个ARAnchor和一个SCNNode . 在某些时候,我想要移动整个场景,所以我尝试更改 sceneView.scene.rootNode.position.x += 10 来测试它 . 如果我在任何特定节点上调用它,该节点确实会正确移动 . 但是在 rootNode 上调用它,没有任何反应,我...
  • 0 votes
     answers
     views

    如何将节点添加到SceneKit / ARKit场景,保留其位置,但重置其方向/旋转

    我想在场景中添加一个节点,保持相对于相机的位置,但保持场景的方向/旋转 . 到目前为止我到底在哪里...... 当我点击屏幕时,我会在场景中添加一个锚点,其变换等于相机的变换 . 然后在 didUpdateNode 中,当锚节点具有其位置信息设置时,我添加一个包含模型的子节点,该模型具有 position.z = -0.5 . 模型节点直接添加到摄像机前面的场景中,并反映摄像机的旋转属性 . 随...
  • 0 votes
     answers
     views

    如何使子节点和父节点的 SCNNode 位置相同?

    我有一个名为 wc 的子节点的场景。我想在该节点上添加 dae/model 文件。 我能够通过以下方式添加 model/dae: 使用 bundle 中的 dae 资产创建父场景 将父场景添加到 scnView 并将其强制转换为 self.view 获取要添加 dae 的必需节点。 使用所需的节点 dae 创建 sub-Scene。 将 sub-scene 根节点添加为父场景所...
  • 6 votes
     answers
     views

    更改 SCNNode 位置而不更改方向

    我正在使用 SceneKit 并拥有一个带有多个 SCNNode 的应用程序,当用户点击一个时,它将跟随他们的手指(使用 UILongPressGestureRecognizer)。在状态开始和更改,我使用以下代码行来更改节点的位置: _currentlyMoving?.position = SCNVector3Make(worldPoint.x, worldPoint.y, worldPoint...
  • 0 votes
     answers
     views

    在 SceneKit 中移动节点

    我有一个 SCNNode,我希望它默认处于特定位置。我试图从.dae 文件设置位置,但它没有保存。有些人可以给我一个提示,我该怎么做?

热门问题