问题标签 [scnnode]

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 回答
304 浏览

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

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

0 投票
0 回答
654 浏览

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

假设 SceneKit 场景提供类似于 Minecraft 的视角。有一台相机。相机节点就像人的“头”,而它的父节点就像“身体”。相机节点是父节点的子节点,称为“userNode”。

目标:

  • 让用户用一根手指平移来旋转相机。换句话说,相机位置保持固定,但“头部”旋转并让用户观看场景,就像转了一圈一样。

  • 让用户用两根手指平移以围绕给定点旋转相机。换句话说,相机位置和旋转现在会发生变化,以便让用户从不同角度查看同一点。

到目前为止,下面的代码实现了单指平移行为。问题是如何合并两指平移行为。

选项 1:按照这个答案,它解释了如何环绕相机。然而,这似乎不是最理想的,因为场景中已经有一个摄像机节点,并且需要额外的节点,同时还要在不同摄像机之间移动场景的视点。

选项 2:计算相机的新位置和旋转,这样可以避免添加另一个相机节点和另一个轨道节点。这感觉像是更好的答案,但可能更复杂。

问题:

1) 在 SceneKit 中是否有更简单的方法来完成此任务?

2)如果不是,上面的两个选项是否只有两个选项,如果是,哪个选项更好?

3) 对于选项 2,更新userNode或“body”的位置似乎很简单:只需计算沿给定中心原点的圆的新位置,即轨道点)。对于“头”,除了更新(或“头”)的rotation属性之外,还有什么需要注意的吗?cameraNode似乎将相机定向为始终面向轨道点可能会更复杂,因为有一部分 SceneKit API 专用于它,例如,SCNLookAtConstraint.

0 投票
2 回答
1367 浏览

swift - 如何让我的相机节点聚焦在被点击的节点上?(场景套件)

我创建了一个空节点并将一组节点添加到空节点,最后将其添加到我的根节点。之后,我创建了一个相机节点,如下所示。我正在尝试向我的场景工具包应用程序添加一个功能,当用户点击一个节点时,相机会移动并聚焦在该节点上。在我的 handleTap 函数中,我试图获取节点的位置,然后将相机固定到该位置,但它不起作用。有什么建议么?

编辑

所以,我取得了一些进展,但我仍然无法弄清楚我的节点的位置。更新后的代码如下。我所做的是创建一个新节点并将相机连接到它。然后将该节点作为子节点添加到分接节点。我仍然无法在空节点的上下文中获得分接节点的位置。

0 投票
1 回答
296 浏览

ios - 在 SceneKit 中为对象着色的等价物是什么?

如何为 a 的颜色变化设置动画SCNNode?在SpriteKit我只会使用colorizeWithColor SKAction,但这不是SceneKit. 在SpriteKit中,我通常会在两个节点之间发生冲突。当节点发生碰撞时,其中一个节点只需运行colorizeWithColor SKAction. 这相当于SceneKit什么SCNNode

0 投票
1 回答
528 浏览

ios - SCNNode 释放具有改变的变换和枢轴属性的子节点

我正在处理具有已更改的枢轴和位置的子节点。我发现了很多 SCNNode 转换主题,但似乎没有一个能代表我的情况。

我有六个球:(不能发布超过 2 个链接,图片位于 i.stack.imgur.com/v3Lc4.png)

我选择了其中的前四个,调整枢轴,调整位置(以抵消枢轴平移效果),然后旋转。这是我使用的代码:

它做得很好:

这是预期的结果

现在,我需要将fourBalls 子节点释放回rootNode,我使用这段代码作为完成块:

问题来了,我错误地释放了它们:

图片

所以我的问题是,如何使用正确的枢轴、位置和变换属性将子节点释放到根节点?

这是我完整的 GameViewController.swift 给想要尝试的你:

0 投票
1 回答
817 浏览

ios - 从 SceneKit 中的 SCNNode 中提取几何信息

我正在尝试为场景中的每个节点提取几何图形。我使用 .obj 文件创建了一个场景,它完美呈现。但是,我想从每个节点中提取几何图形,但我被卡住了。我的代码如下

}

我想获取位置和法线,以便将它们存储在数据库中。

0 投票
1 回答
337 浏览

ios - 向场景中添加大量自定义节点需要很长时间才能加载

我正在构建一个scenekit应用程序,但是我遇到了一些更精细的问题。我创建了一个scene,我正在向它添加自定义几何图形,它工作正常,直到节点数量达到大约 100。将大量节点添加到场景中是理想的,有没有更清洁的方法来做到这一点?

我有大量的索引、法线和位置。

0 投票
0 回答
271 浏览

scenekit - 更改枢轴不会更改坐标系原点

我对 SceneKit 很陌生,在我看来,我偶然发现了一种非常奇怪的行为。

更改节点枢轴移动它锚定到其父节点的点,因为枢轴放置在position节点本身指定的点。这很好,但后来我尝试将一个子节点添加到一个移动其枢轴的节点(仅翻译),并且子节点(默认位置为(0,0,0))将自身放置在其父节点的几何中心,一个SCNCylinder用它移动的枢轴。

使用移动枢轴的转换重新计算相对于父枢轴放置子枢轴的位置不是问题,但我想知道是否有正当理由不移动坐标系以及节点的枢轴,因为我没有在网上找到任何关于这个事实的信息。

0 投票
1 回答
831 浏览

ios - SceneKit:使子球体在半透明父球体内可见?

在 SceneKit 中,假设您想在半透明节点 Parent 中嵌入一个节点 Child,这样 Parent 就像一个“笼子”,您可以看穿并查看 Child。

具体来说,Parent 是半径为 2 的 SCNSphere。 Child 是半径为 1 的 SCNSphere,是 Parent 的子节点。

Child 不可见,因为它在 Parent 内部。将 Parent 的不透明度设置为 0.3 或半透明的值也会影响 Child 的不透明度,让您看到 Child 但现在 Child 不再完全不透明。

您如何使 Child 完全不透明但仍然通过 Parent 可见?

一种选择是 Child 一个独立的节点,不再是 Parent 的子节点,而是手动计算将 Child “内部”Parent 居中所需的位置。但这需要在每次 Parent 移动时手动移动 Child,而当 Child 已经是 Parent 的子节点时,此移动会自动发生。

有更好的方法吗?

0 投票
0 回答
396 浏览

xcode - SceneKit:参考节点生成错误 [SCNKit 错误] 无法解析 url 处的参考场景

在 Xcode 场景编辑器中向场景添加引用节点,这意味着引用节点出现在场景中。

然而,当在设备上运行应用程序时,节点不会出现,并且会生成以下错误: