问题标签 [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 回答
1246 浏览

ios - 预加载 Scenekit 场景

当我的 SCNView 准备好时,以及它实际呈现在我的视图上时,似乎有延迟 - 我总是在视图出现之前看到一瞬间的白色。我能做些什么来防止这种情况发生?

一旦背景最终出现,所有的定位都是正确的。

现在我有一个淡出的覆盖来缓解一些这种情况,但在慢速设备(iPhone 5)上,我仍然可以在 scnView 卡入完成之前看到白色。

0 投票
1 回答
432 浏览

ios - SCNText getBoundingBoxMin:max: 始终为零

我正在尝试确定 a 的边界框,SCNTextgetBoundingBoxMin:max:总是给我零。

这是在SCNText类扩展中运行self的代码, [textNode geometry].

我也试过这个

sizeMax始终为零。

注意:我已经发现了问题发生的原因。

当在这样的块内调用此调整时,就会出现问题:

所以,如果我从主线程调用这段代码,它可以工作

但如果我从另一个线程调用它,它将不起作用

问题是这个块是从一个调度块调用的,所以我需要将它重新调度到主队列,但是这样做会阻止代码工作。理论上,将一个块分派到主队列应该等同于从主线程运行它,但显然不是。

你们知道有什么解决方法吗?

0 投票
2 回答
846 浏览

ios - SceneKit:在 SCNView 中的某个位置查找节点的本机方式?如果没有,使用字典将位置映射到节点?

SceneKit 是否有一种本地方法可以在 SCNView 内的给定位置(例如(0,0,0))查找节点?

假设一个 SCNView 包含一个 SCNNode,它充当其他 SCNNode 的层。是否有一种本地方法可以找到层内特定位置的所有节点?

阅读类文档,似乎唯一的选择是创建和维护自定义数据结构映射位置到节点。

但希望有一些原生的东西,因为这似乎是一个常见的问题。

如果需要自定义数据结构,字典是在 Swift 中维护 10K 节点上的选项卡的最有效方法吗?

0 投票
2 回答
1867 浏览

swift - 如何在 swift 中使用 SCNMaterial 创建霓虹灯材质?

我一直在尝试SCNMaterials,专注于发射以尝试创造一种霓虹灯材料。不确定是否有可能,但如果它可以发光,那就太好了。谢谢 :)

0 投票
1 回答
361 浏览

scenekit - 将物理添加到 SCNGeometryElement 原语

我是 SceneKit 的新手,所以我尝试做的事情完全有可能/很可能不是正确的方法。所以这是我的一般意图:

我正在建造一个玩家穿越的“隧道”。这是一个程序生成的隧道。我正在确定代表隧道网格的点的位置,然后将点与三角形连接在一起以对其进行蒙皮。我正在使用以下方法来生成我的三角形:

这工作正常,我的隧道看起来像一个隧道。但是,当我开始尝试将 PhysicsBody 添加到我的节点以使其成为静态主体时(物体应该能够撞入隧道,但隧道壁不会移动),我的应用程序开始崩溃并出现 EXC_BAD_ADDRESS。在我添加前几个三角形后它实际上崩溃了,所以我怀疑以这种方式添加几个三角形时会出现一些问题。

因此,为了对此进行测试,我创建了一个测试项目并仅添加了一个三角形,并将其 PhysicsBody 设置为静态主体。它不会崩溃,但物理体似乎是原点的一个点,而不是采用我的三角形的形状。

所以,一些问题:

  1. 一般来说,这是生成自定义几何图形的坏方法吗?如果我真的想要一个有点不规则的形状,并且我希望它有一个 PhysicsBody,除了创建三角形来连接点之外,还有其他方法吗?
  2. 关于为什么为我的三角形创建物理体不起作用的任何想法?

谢谢。

0 投票
1 回答
780 浏览

sprite-kit - 添加到 SCNNode 时,SKSpriteNode 图像纹理看起来被拉伸了

我向 SCNNode 添加了一个包含 SKSpriteNode 图像的 SKScene,但是该图像看起来超出了 SCNode(面部节点)的边界。如何在 SCNode 面的边界内显示图像?

图像在 faceSKScene 中正确显示。一旦我将 faceSKScene 添加到 SKNode 的内容中,它会覆盖整个 SKNode,但大部分图像不会显示。看起来它可以拉伸,但我不确定。

0 投票
1 回答
128 浏览

ios - 在 SCNScene 中旋转坐标十字以镜像相机运动

我是 SceneKit 的新手,我可以在以下方面使用您的帮助:我有两个 SCNView - 一个大的(skView)为用户显示场景,用户可以在启用标准 allowCameraControl 选项的情况下对其进行操作 - 另一个小的( coordinateCrossView)在左角显示一个坐标交叉,我想反映用户在大型 SCNView 中执行的任何相机导航

坐标跨 SCNView

我通过使同时拥有 SCNViews 的 ViewController 成为 SCNRendererDelegate 并通过更新渲染器中的交叉方向来实现它: updateAtTime: 方法如下:

到目前为止,一切都很好。但是,这仅在用户用手指在屏幕上操作大 SCNView 时才有效。在手指离开屏幕时作为滑动手势后,大 SCNView 中的对象继续旋转一点 - 但坐标十字不会更新。任何想法为什么 pointOfView.orientation 更改未捕获此行为?

0 投票
2 回答
745 浏览

swift - 我可以复制一个 SCNNode 并保留比例吗

我想多次复制一个 SCNNode,每个节点有不同的材料和不同的位置。但是保持相同的比例。所以,如果我改变我复制的节点的比例,所有复制的节点都应该改变。

在下面的代码中,当我运行 changeScale() 时,复制的节点比例不会改变。

有没有办法可以一起更改所有复制节点的比例或几何尺寸。无需单独枚举或更改它们

0 投票
0 回答
703 浏览

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

我有一个名为 wc 的子节点的场景。我想在该节点上添加 dae/model 文件。

我可以通过以下方式添加模型/dae:

  1. 使用捆绑包中的 dae 资产创建父场景
  2. 将父场景添加到 scnView 并将其类型转换为 self.view
  3. 获取要添加 dae 的所需节点。
  4. 使用所需的节点 dae 创建一个子场景。
  5. 将子场景根节点添加为父场景所需节点的子节点。
  6. 将子节点的位置设置为父场景所需节点的位置。

以下是片段:

代码片段(在 viewDidLoad 中)

日志输出

wcNode 位置 275.306549, 157.163620, 0.956176

DAE 位置 284.000000, 160.000000, 0.959596

正如您在上述日志输出中看到的,所需节点及其子 Dae 节点的位置不同,这会导致模型在场景中移动。

为什么职位不一样?

我如何补偿这种转变?

0 投票
3 回答
4671 浏览

ios - 在 SceneKit 节点周围添加边框

我正在尝试使用轻按手势突出显示 SceneKit 中的选定节点。不幸的是,我无法完成它。我能做的最好的事情是在点击节点时更改材质。

有人可以建议一种我可以在对象周围添加边框或轮廓而不是更改整个节点颜色的方法吗?