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

ios - Swift、SceneKit 和相机位置

我正在开发一个显示 3D 人体的应用程序 - 在 SceneKit 编辑器中,我已将相机设置为指向模型。

正如我设置的sceneView.allowsCameraControl = true,用户可以通过简单的手势在对象周围移动、放大和缩小。

为了垂直移动,我实现了一个 UISlider - 我不希望用户用两个手指手势垂直平移。

在滑块操作中,我执行以下操作:

当我在加载 ViewController 后更改滑块位置时,这可以正常工作。但是一旦我通过手势旋转或缩放模型,滑块就不再显示效果 - 因此我不能再以编程方式更改相机节点的位置。

有谁知道我该如何解决这个问题?

0 投票
0 回答
77 浏览

macos - macOS Mojave 中的 SCNView 和处理器加载问题

我的 macOS 程序中的 Mojave 和 SCNView 有问题。但是,我也测试了最简单的项目,发现同样的问题!

因此,如果我们使用 xib 文件而不是故事板启动新的 macOS 项目,并将 NSTabView(带有两个 TabView)放在窗口中。然后,当我们将 SCNView 放置在程序启动时未激活的 TabView 中时,我们在构建和启动程序后将拥有 100% 的处理器负载。而且,在我们用 SCNView 打开 TabView 之前,它一直保持 100%,然后处理器负载下降到零。

这不应该是这样的,这个最简单的项目没有自定义代码,只是加载视图!

在以前的 macOS 中没有看到这样的情况

0 投票
2 回答
218 浏览

ios - CATextLayer 无法在 SCNNode 上正确渲染

我有一个 CALayers 层次结构,我将其设置为我的 SCNNode 材质的漫反射属性。我使用以下代码对场景的当前状态(只有一个节点)进行快照,以将其作为 PNG 保存到文件中:

通常这可以正常工作,按预期渲染节点,但大约 25-50% 的时间,我作为返回层的子层的任何 CATextLayer 都self.createLayer()不会渲染文本。所有其他图层似乎每次都渲染得很好。

例如,应该看起来像这样的图像:

正确的

最终错过了文本“N”: 不正确

图层本身正在渲染,我可以通过更改文本图层的背景颜色来确认:

在此处输入图像描述

这似乎只是在创建图层后立即发生的问题。如果我异步调度渲染代码,即使没有添加任何延迟,一切都会按预期呈现:

上述解决方法似乎很老套,我不相信它是可靠的。另外,我宁愿不强制我的调用点以异步方式调用该方法。

SceneKit 或 CoreAnimation 中是否有我缺少的属性或方法可以用来确保在尝试将其渲染到图像之前完全渲染图层?

0 投票
0 回答
79 浏览

ios - ARKit:在跟踪图像之外添加虚拟 2D 图像

我试图在跟踪(参考)图像旁边的屏幕上放置一个虚拟 2D 图像。为此,我在跟踪参考图像后使用下面的代码,创建一个类似于屏幕上图像的平面,然后用简单的基本数学计算图像节点的位置。显然太简单了,因为结果不是很好。

我相信应该有更好的方法,但我是 ARKit 的新手,我还没有找到它,可以使用一些帮助。谢谢。

以下是不满意的结果:

在此处输入图像描述

编辑:这里看起来有什么问题?图像应位于左侧跟踪图像(大图像)的右侧,接触跟踪图像的左侧。问题也是实现这一点的方法,我用近似数学计算完成了这个糟糕的结果,我想有一种方法可以使用跟踪图像平面的变换将另一张图像放在一边。

0 投票
1 回答
40 浏览

ios - 函数仅在 scenview (Swift4) 上放置 1 个 arkit 对象节点

我下面的代码应该将用户创建的 arkit 对象放在 scenview 中,但它不起作用。它放置 1 个对象,不能再放置任何其他对象。我注释掉的代码完美地放置了 scn 形状的球,并且在调用函数时与用户请求的一样多。但是它只放置 1 个用户创建的对象,我想放置几个对象。

0 投票
1 回答
117 浏览

swift - 获取在 scn 文件中创建的球体的位置

我使用 Xcode 创建了一个 scn 文件(如下所示),其中有两个节点(一个球体和一个平台)。我设置了球体的位置:

显示球体的 SCN 编辑器窗口 球体位置读数 0.074 0.391 0.392

我使用了一个创建节点平台的类,您可以调整它的大小和移动它:

截屏

按下按钮后,它会放置我的 scn 文件而不是那个平台(具有相同的比例、位置和方向)问题是我不知道如何从场景视图中获取球体的位置。

使用该代码,它总是打印我在 scn 文件中设置的位置(如上所示),但我想要它在视图中的真实位置。

截屏

0 投票
1 回答
562 浏览

ios - Scenekit - 将子节点(平面节点)添加到相机前面的父节点(球体节点)

我正在尝试将子节点添加到拥有自己相机的父节点。在场景中点击用户,使用命中测试我将子节点(即平面节点)添加到父节点(球体节点)。但我不知道为什么子节点没有正确面对相机。它在不同的位置看起来不同。我希望它修复看着相机。

代码 :

我使用上面的代码得到的结果:

添加的平面节点看起来很奇怪

在此处输入图像描述

0 投票
0 回答
708 浏览

ios - SceneKit 内存泄漏

VC转到with后,应用程序的内存增加了scnView。我已经使用deinit并设置geometry为,nil但它没有帮助。我在堆栈上看到了一些关于使用deinit来解决这个问题的提示,但它对我不起作用。每次我用scnScene SceneKit 回到这个 ViewController 时,内存都会增加:太多内存持续存在

0 投票
2 回答
224 浏览

ios - 如何在给定 scnvector3 点数组的情况下创建倾斜平面

我正在尝试使用已转换为 scnvector3 点的给定 3d 坐标点数组在 scenekit 中创建平面形状。我使用贝塞尔路径来创建 2d 平面,我想知道是否有一种简单的方法可以在真实 3d 空间中绘制平面

0 投票
0 回答
48 浏览

swift - 在 macOS 中结合 3D 和 2D

我需要在 3D 场景之上绘制 2D 图例、2D 框架等。在这里,我试图在 3D 球体顶部显示 2D 标签,以便标签始终面向用户,即使他们旋转场景。

我正在使用 SCNView 绘制 3D 场景(=> 工作正常) 我正在使用它的 NSView 父级(子类以覆盖其绘制功能)来显示 2D 文本(=> 不显示任何内容)

(var twoDCoordinates:CGPoint 是外部的)

在我的视图控制器中:

=> 3D球体正确显示;两个D坐标是正确的

在 TwoDView:NSView 类中(即场景视图容器)

=> 函数 draw 被调用,但没有显示文本。

我希望文本“球体标签”显示在 3D 球体旁边,但只显示 3D 场景。即使调用了函数 draw。