问题标签 [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 投票
2 回答
1697 浏览

ios - 节点组的位置在 SCNNode.runAction 开始时被重置

我有一些代码可以在点击屏幕时围绕 x 轴旋转几个 SCNNode,如下所示:

我遇到的问题是,每次调用此函数时,节点似乎都会在执行操作之前将自己重置为原始位置。操作完成后,它们似乎会停留在正确的位置,直到再次点击屏幕。如何进行后续调用以handleTap将它们从当前位置旋转?

在将节点添加到容器之前,我尝试从其原始父节点中删除它们,但它没有明显的效果。

我也尝试过使用动画

这与动作的效果完全相同。

如果我将节点作为根视图的子节点放回 runAction 的完整块中

然后节点在动作完成时返回到它们的原始位置,而不是在新的点击开始时。

0 投票
0 回答
414 浏览

cocoa-touch - 使用动作围绕父轴旋转 SCNNode

我有一堆 SCNNode,它们都共享同一个父节点。我可以使用它们围绕自己的轴旋转一组

但理想情况下,我想做的是将它们绕着父轴旋转。我可以旋转整个父节点,但旋转的节点比我想要的多得多,我尝试将它们分组到自己的父节点中,但是当我将它们添加回之前的父节点时,它们不会保持新的位置。

0 投票
2 回答
1349 浏览

scale - SCNNode材料规模

我有一个 SCNNode,它的几何图形从 collada 文件 (.dae) 填充并在屏幕上正确显示。我可以很容易地将材质应用于几何体,但是我想更改材质的比例。

我目前填充它

但是材料的规模太小了。虽然我可以在 GIMP 或类似的东西中编辑 png 并将其导入为 wood2.png 有什么方法可以以编程方式设置材质比例吗?

0 投票
2 回答
4130 浏览

swift - 使用 SceneKit 进行 hitTesting 不返回 SCNNode 的命中

XCode 中的文档明确指出,当计划测试 3D 线段时,可以使用 SCNRender、SCNView 或 SCNNode 本身在 SceneKit 中对几何体进行 hitTesting。我有一个 SCNScene 的用途,它的节点没有渲染器或视图,因此我计划使用 SCNNode hitTesting。我创建了一个 SCNScene,将一个 SCNNode 放入其中并测试通过的简单射线,但我总是得到一个空的 hitList,我不明白为什么:

我尝试过传递各种形式的选项,但没有任何改变。

  1. SCNHitTestFirstFoundOnlyKey:是或否不会改变任何东西
  2. SCNHitTestSortResultsKey:是或否不会改变任何东西
  3. SCNHitTestClipToZRangeKey:对 SCNNode 无效
  4. SCNHitTestBackFaceCullingKey: yes 或 no 不会改变任何东西
  5. SCNHitTestBoundingBoxOnlyKey: yes 或 no 不会改变任何东西
  6. SCNHitTestRootNodeKey:场景或boxNode的rootNOde不会改变任何东西
  7. SCNHitTestIgnoreHiddenNodesKey: yes 或 no 不会改变任何东西

我究竟做错了什么?

0 投票
2 回答
1796 浏览

ios - SceneKit - 以任何比例绘制具有相等线宽的缩放圆圈

我想用 SceneKit 绘制缩放动画圆圈。圆圈应在一秒钟内将其半径从(可能)100 更改为 200。只能看到宽度为(随机值)五的圆的轮廓。

我用 SCNShape 和 UIBezierPath 绘制圆圈。缩放圆圈并没有帮助,因为轮廓宽度也会发生变化。每帧更改我的 SCNNode 的 SCNGeometry 属性非常昂贵,我从中获得 100% 的 CPU 使用率,所以这也不起作用。

有人知道最好的方法是什么吗?

0 投票
1 回答
713 浏览

iphone - SceneKit 物理 - 摩擦和凹多面体

我正在 Scene Kit 中开发一个玉米洞游戏,并遇到了一个错误SCNPhysicsShapeSCNPhysicsBody摩擦。游戏的棋盘通过.dae文件加载并设置为SCNPhysicsShapeTypeConcavePolyhedron. 这允许豆袋从孔中掉下来,但它似乎消除了板上的摩擦。当豆袋碰到板子时,尽管摩擦值为 1.0(豆袋的摩擦值也为 1.0),但它还是会滑落。如果我将板换成SCNPhysicsShapeTypeConvexHull摩擦力起作用,但豆袋不会从孔中掉下来。

这是我的自定义板初始化:

这是豆袋的自定义初始化

这些都在子类的类的 init 方法中SCNNode

我的问题是:我怎样才能将板保持为 aConcavePolyhedron并同时使摩擦起作用?

0 投票
2 回答
877 浏览

ios - 移动相机时 SceneKit 命中测试错误

我在初始化时这样声明我的相机:

在此之后,在 tapGesture 块中,我进行了命中测试:

这返回了我想要的,得到了​​节点。在我添加一个新相机并改变场景的视角之后

当相机位置改变时,我之前使用的相同命中测试返回一个长度为 0 的数组并在控制台上出现此错误:

任何人都可以帮我解决这个问题吗?谢谢

0 投票
1 回答
1010 浏览

ios - SceneKit,测试 SCNNode 是否完全可见

我有一个相邻的 2 个 SCNNode(1 个大盒子和 1 个小盒子)。

我旋转了它的父级,这样小盒子有时在相机中不再可见,是否有可能知道小盒子何时不再可见,因为它在大盒子后面?

我目前的结构

0 投票
2 回答
642 浏览

ios8 - 在保留位置的同时将子 SCNNode 移动到 rootNode

我无法保留删除并添加到rootNode的子节点的位置。父节点和子节点都有一个枢轴平移,我认为这是问题的一部分。我尝试将变换属性设置为worldtransform属性,然后删除节点并将其重新附加到根。但位置略有移动。我尝试删除枢轴变换,将worldtransform添加到根节点并恢复枢轴。有时我认为我已经解决了它,然后一个特定的节点在重新连接为根节点时会跳转。

似乎子节点和父节点的枢轴会影响worldtransform。因此,将父节点排除在等式之外似乎会改变最终位置。

有没有一种方法可以将子节点添加到根节点,同时保持其物理位置/旋转。

任何指针将不胜感激。

0 投票
2 回答
1098 浏览

scenekit - 在 SCNNode 上执行 SCNAction 会改变节点位置吗?

我想知道是否有人知道您是否在节点上执行 SCNAction,有没有办法在该节点执行操作时,您可以找到它在场景坐标系中的位置?

假设我有两个 SCNNodes A 和 B ...

我想为 A 运行一个 SCNAction

当 A 运行它的动作时,B 是否实时跟随它?

所以每次 B 重复给定一个新的更新位置 A 移动到。

我遇到的问题是,即使我将 A 的presentationNode 设置为上面的 SCNAction,它仍然会返回我设置的初始输入(这是有道理的),但是如何获得 A 的更新位置?

旁注:当我采用 A.presentationNode.position 时,我得到默认的零向量

已解决的问题

经过进一步研究,我发现了如何使用 SCNSceneRendererDelegate 然后创建了一个(void)方法来更新节点 A 的位置,然后在同一个方法中我有一个 SCNAction 将 B 移动到 A 的更新位置。

如果有人遇到类似问题或只想查看代码,请告诉我,我会发布!