问题标签 [scnscene]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
239 浏览

ios - 在 AR 中替换 SCNNode 的最佳方法

我正在开发一个关于人体解剖学的 AR 应用程序。我设置了 AR 和位置检测,一切正常。我需要用其他东西更改或替换当前模型。例如,第一个模型是人体,然后我需要用按钮将其更改为骨架。我尝试了不同的方法,例如,如果我SCNNode只更改它不会替换为确切的位置。那么在 AR 中替换场景或节点的最佳方法是什么?这是我的代码:

0 投票
0 回答
31 浏览

swift - 当我使用“node.physicsBody.velocity”时,我可以在 SCNScene 中获得 SCNNode 位置吗?

当我以前使用时,有什么方法可以在 SCNScene 中获取 SCNNode 的位置node.physicsBody.velocity?我已将默认坐标设置为SCNVector3(0,0,0)然后我已使用node.physicsBody.velocity = SCNVector3(someValue, someValue, someValue)并尝试从中读取它,node.position但它已打印SCNVector3(0,0,0)。是否velocity更改 SCNScene 中的节点位置?或者我可以在 SCNScene 中获取节点位置吗?

有任何想法吗?

0 投票
1 回答
74 浏览

properties - SCNkit:未隐藏节点的问题

我正在创建一个以洞穴为主要环境的 3-D 游戏。洞穴由大量环形段组成,一个连接另一个,因此形成了一个目前很小的隧道系统。

如果玩家在洞穴内,则只有一小部分片段可见。我认为实际上隐藏不可见的部分可以节省大量的 gpu 时间,我需要其他对象,如建筑物或敌人。

所以我首先尝试做的是隐藏整个洞穴,然后通过将“node.isHidden”设置为真和假来取消隐藏可见部分。通过它们的名称找到和访问特定节点:“Node.childnode(withName:“XYZ003”,递归:false)。isHidden = true'(或 false)。

它可以工作到段未被隐藏的地步,但是一旦我试图隐藏以前未隐藏的段,渲染器就会崩溃并出现 EXC_BAD_ACCESS。

对隐藏的对象进行隐藏(当然没用,但有助于理解问题)很好,取消隐藏未隐藏的片段也是如此。

根据另一个线程的提示,我将例程移到渲染器委托中,因此不会在错误的时间进行切换,而是在应该发生此类更改的阶段进行切换,但这没有帮助。作为替代方案,我通过 SCNActions 进行了隐藏(和取消隐藏),但我收到了相同的结果,这真的让我感到困惑,因为这将是一种“官方方式”来做到这一点......

我还使用了“递归”布尔值,得到了相同的结果(适用于取消隐藏,在 isHidden = true 时崩溃)。

然后我尝试改变节点的不透明度或其他属性——效果很好。另一方面,尝试从父节点中删除节点也会导致上述崩溃。

我需要它来工作,因为旧硬件永远无法应付几千个节点(尝试这个,帧速率下降到 10fps,即使周围没有敌人)。一旦敌人出现,更新的硬件可能会崩溃......

我的想法是指针在某种程度上被第一次取消隐藏(以及因此的 BAD_ACCESS 错误)弄乱了,所以可能是一个额外的绑定(通常在 spritekit-routines 中看到)或另一种获取节点指针的方法可能是解决方案。另一方面,如果指针损坏,为什么我仍然可以访问所有其他属性?也许是子节点导致了问题——每个节点都有 20 个子节点,它们也应该改变可见性。

有没有人在我之前遇到过这种行为?我在谷歌搜索期间找不到任何东西......

0 投票
1 回答
348 浏览

ios - iOS AR Kit 3 World Tracking 切换摄像头后停止工作

我正在开发一个 AR 绘图应用程序,我在 AR Kit 3 中遇到了一个错误/问题。世界跟踪停止工作,并且在 AR 视图中添加的 3D 对象被冻结。

我的应用程序在前后摄像头之间切换,在这两种情况下,我都启用了 World Tracking。

1.我像这样启用后置摄像头会话:

如果我只是在场景会话上运行此配置,一切都会完美。

2.当我像这样切换到前置摄像头时:

一切仍然完美。

3.但是当我切换回相机会话时(我像第1点一样切换回来):

添加到 AR 场景中的 3D 对象在静态视图中冻结,并且世界轨迹停止工作。没有办法让它恢复工作,只能关闭应用程序并重新打开。

有趣的事情:

  • 当我禁用该configuration.isWorldTrackingEnabled = true 部分时。该错误没有出现。但我确实需要 configuration.isWorldTrackingEnabled = true被设置。
  • 前置摄像头会话永远不会中断,即使在我切换回前置摄像头出现错误之后,世界跟踪在那里也能正常工作。

这是该应用程序的视频(未出现错误)configuration.isWorldTrackingEnabled =false

没有错误视频- https://www.youtube.com/watch?v=JPAa6zJe_kQ

这是该应用程序的视频(出现错误)configuration.isWorldTrackingEnabled =true

是的错误视频- https://www.youtube.com/watch?v=UF2Z8c4A42I

我已经尝试了什么?

  • 我尝试先在前置摄像头上运行该应用程序,看看当我换到后置摄像头时是否也会中断。是的,它也坏了。
  • 我尝试运行一个ARFaceTrackingConfiguration()withconfiguration.isWorldTrackingEnabled = true然后再次重新运行它,configuration.isWorldTrackingEnabled = false看看它是否会覆盖任何东西并修复它。但是没有锁,还是坏了。
  • 我也尝试过暂停会话,然后在相机切换之间重新启用它,但仍然存在问题。即使有延误。
  • 我还尝试使用以下设置运行配置:sceneView.session.run(configuration,options: [.resetTracking,.removeExistingAnchors,.stopTrackedRaycasts]),但仍然没有运气。

任何人都知道如何解决它?有人遇到过这种奇怪的行为吗?

0 投票
1 回答
134 浏览

scenekit - DefaultCameraController 上的 SceneKit 动画

并原谅我在这里的无知。我是 SceneKit 的新手。我试图让我的默认相机控制器以一种平滑的“平移运动”进行动画处理。我正在尝试使用类似的东西:

SCNView进入视图控制器时。问题是这个动作会跳转,我希望它动画,从它的当前视角过渡到它的新位置,在这个位置表示空间中两个点之间的过渡帧。

如果可能的话,我也希望这种情况发生defaultCameraController

谢谢!

0 投票
2 回答
195 浏览

swift - 单击按钮Swift时是否可以更改ARKit场景的对象

我是第一次构建 ARkit 项目,我需要做的是,首先,我必须在 ARSCNView 中显示一个 3D Sphere。然后当我单击一个按钮时,球体应该消失并在其位置显示一个 3D 立方体。

我正在考虑我的代码:

这是按钮的代码:

我正面临这个错误

难道我做错了什么?

0 投票
0 回答
72 浏览

swift - 如何克隆具有不同实例的 scnnode?

目前我正在研究具有复制 AR 对象功能的基于 AR 的项目,我遇到的问题是当我使用 .clone() 方法克隆 SCNNode ...它创建相同的实例并且当我更改重复的 SCNNode 的名称时,它更改所有节点的名称.. 我如何克隆具有不同名称、模型名称等属性的 SCNNode?

基本上我想要每个克隆的虚拟对象的特定属性来删除对象..

放置对象的代码

用于复制节点

0 投票
3 回答
97 浏览

swift - 节点的几何(来自 DAE 文件)仅在生产版本中为零

我有一个 3D 模型,当从 Xcode 编译时,它在真实设备和模拟器上始终可以正常工作,即使设置为 Release 并使用任何优化设置,但是当上传到 TestFlight 时它会丢失一些材料。

调试后(使用 TF 构建,因为无法在本地重现)我发现我正在使用的两个节点(看起来很糟糕的节点)没有几何结构(它们在本地确实有几何结构)。

我正在使用的代码:

baseNode?.geometry返回nil生产,这是我无法弄清楚的部分,因此没有应用材料。另外我想澄清一下几何图形按预期工作,但它使用默认材质,因为没有应用任何内容。

0 投票
1 回答
33 浏览

swift - 如何从覆盖的 SKScene 调用 GameViewController 函数

我有:GameViewController,我在其中设置了一个 3D 场景和一个“开火”功能。然后我有另一个 SKScene,它被覆盖了,所以我无法单击 3D 场景上的节点。在 SKScene 我有一个 SKSpriteNode,“fireNode”。单击此 fireNode 后,我想在 GameViewCONtroller 中调用“fire”函数。我怎样才能做到这一点?

0 投票
2 回答
80 浏览

swift - 如何在 defaultCameraController 中禁用双击?

SCNScene,allowsCameraControl让您移动和旋转相机,但当我“双击”时,相机会快速旋转并且对象会消失。

我正在阅读文档,但我不确定如何禁用双击。