问题标签 [scngeometry]

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

ios - 自定义 SCNGeometry 不将漫反射内容显示为纹理

我正在创建一个自定义 SCNGeometry。首先,我将其开发为平面。它会显示,我可以将颜色应用到它的漫反射内容,但如果我尝试应用任何东西,例如 UIImage 或 CALayer,它会显示为白色。

代码:

0 投票
1 回答
374 浏览

ios - 使用 subdivisionLevel 平滑 SCNGeometry

我们正在开发一款类似于 iPhone 的 Animoji 应用的应用。我们创建了自己的 3d 模型,看起来非常漂亮,唯一的问题是模型的眼睛或鼻子周围有边缘不光滑。模型已在 Maya 3D 软件中准备好。

看截图

截屏

您可以看到眼睛周围和眉毛周围的粗糙边缘。

我们正在尝试以下代码来平滑这些边缘:

我们正在尝试设置 subdivisionLevel 以便可以平滑边缘。这是正确的方法吗?或者我们需要做其他事情来以编程方式修复这个问题。当我们在 Maya 中看到 3d Designer 时,它的边缘非常平滑。

0 投票
0 回答
147 浏览

ios - SceneKit 沿路径生成管道

我目前正在尝试找出如何从给定点P(n 数组SCNVector3)和 radius生成管道 3D 对象r,其中P[i]是圆柱体的中心。我不能简单地生成n-1 SCNCylinder并将它们放在 and 之间P[i-1]P[i]因为圆柱体之间的连接看起来很难看。

我已经看到,您可以使用SCNGeometrySource生成自定义几何图形。但据我了解,我必须手动计算曲面及其法线及其连接。

搅拌机的这个答案描述了我想要实现的目标(但使用数组SCNVector3而不是贝塞尔曲线 。https ://blender.stackexchange.com/a/8686

这是一个不同的视频: https ://www.youtube.com/watch?v=g_ciyeTmZx4

我的问题是:

是否有内置的东西可以提供此功能,还是我真的必须手动计算所有内容?我现在不太喜欢 SceneKit,可能只是错过了该功能的正确搜索词。有什么建议么?

0 投票
1 回答
323 浏览

swift - SceneKit 自定义几何形状未显示

我对 Swift 和 SceneKit 还是很陌生,我目前的问题是我尝试创建的自定义形状没有显示出来,即使框架中的原始形状显示得很好。

我一直在关注https://www.raywenderlich.com/1261-scene-kit-tutorial-with-swift-part-1-getting-started的教程。

我还查看了关于 SO 的答案:SceneKit – Custom geometry does not show up。我在这里查看了其他答案,但没有一个对我有用。

这是我的代码:

这是生成自定义形状的函数:

0 投票
0 回答
90 浏览

swift - Scenekit - 渲染自定义 SCNGeometry 多边形时崩溃

尝试从大量 SCNVector3 位置渲染一些多边形时,我收到以下错误消息。我真的需要渲染多边形,我不知道为什么会这样。如果有人知道另一种渲染多边形的方法,我将很高兴对其进行测试!

以下代码用于创建自定义 SCNGeometry。

0 投票
1 回答
434 浏览

ios - SceneKit 通过特定索引选择性地为面部着色

我的目标:给定一些 indexi和 some UIColor c,使该索引处的脸变成该颜色。

我的 3D 对象渲染正确。正如预期的那样,它全是白色。然而,那张红脸并没有出现。我看到一丝红色,但看起来 SceneKit 正在尝试在顶点周围着色,而不是那些顶点形成的面。如何强制它只为这些顶点创建的面/多边形着色?

0 投票
1 回答
199 浏览

performance - 为什么 SCNNode .flattenedClone() 会崩溃或使性能变差?

我正在尝试将大约 4.5kSCNNode对象添加到场景中。它们的几何形状是两个SCNPlanes 之一,其材质由CALayers 渲染(但我认为这并不重要,每个CALayerDelegates 只调用一次,所以这似乎不是问题。)性能很糟糕(< 1fps .)

.showsStatistics启用后,我看到我正在执行近 3.5k 绘制调用,根据 2017 年的 WWDC 视频,这是我的问题。因此,按照建议,我将所有节点添加到一个父节点并.flattenedClone()在将其添加到场景的根节点之前调用它。这让我的控制台上出现图形损坏和重复错误:

(“x > 8192”中的x每行加一)

如果我将节点分成两组并.flattenedClone()在将结果添加到根节点之前调用它们,错误就会消失,但我的绘图调用计数上升到近 5k!

这是怎么回事?为什么调用.flattenedClone()具有大约 2.5k 个节点的节点不会……使其变平?

0 投票
0 回答
118 浏览

scenekit - ARSCNPlaneGeometry 更新并重新计算纹理坐标,而不是拉伸它们

我在 ARKit 更新的平面几何图形的纹理坐标上遇到问题。纹理图像被拉伸,我想避免这种情况。

现在我正在检测水平垂直墙壁并向它们应用纹理。它的工作就像一个魅力......

但是当几何体因为扩大了墙壁/地板的检测范围而更新时,纹理坐标被拉伸而不是重新映射,导致纹理看起来像下图一样被拉伸。

您还可以看到发生问题的未经编辑的视频:https ://www.youtube.com/watch?v=wfwYPwzND74

墙

这是更新几何的代码:

我已经看到您可以通过将其定义为如下源来定义纹理坐标:

但我不知道如何填充textCords数组以使其正确适应更新planeGeometry

编辑:

重新定义方法:

深入思考这个问题,我想到我需要修改纹理的变换来修复拉伸部分,但是如果我这样做,我有两个选择:

  • 要么保持纹理足够大以填充整个几何体,但保持 1:1 的比例以避免拉伸
  • 或者保持纹理的原始大小但具有 1:1 的纵横比,并多次重复纹理以适应整个几何体。

这些方法中的任何一种我仍然不知道如何去做。你有什么建议?

0 投票
1 回答
141 浏览

swift - 您如何使用自己的源和元素正确地对 SCNGeometry 进行子类化?

尝试创建我自己的自定义SCNGeometry子类,类似于框架的SCNBox, SCNPyramid,SCNCapsule等。我已经建立了我的源数组和元素数组,但是下面是一个方便的初始化器,而不是指定的初始化器!

我知道的唯一一个是,super.init()但如果你使用它,源和元素是只读的。

尝试失败

我试图简单地调用super.init(), 然后用我自己的数组覆盖sourcesandelements属性,但无济于事。

注意:这两个数组与我直接传递给上面的便利初始化程序的两个数组完全相同,同时设置了材质,而且效果很好,所以我知道数组都是正确的。然而,这不起作用,所以在那个便利初始化程序中显然发生了其他事情,但我看不出是什么。SCNGeometry

真的很遗憾,Apple 实际上并没有向您展示此类事情的来源,也没有关于它的良好文档。我的意思是他们标记SCNGeometryopen,但是没有给你任何关于如何实际使用它的信息,而且很多 API 文档都是空白的!

解决方法

我已经完成了所有信息以成功构建我的源和元素(同样,我试图传递给我的上面的类),并确认它可以正常工作并使用便捷初始化程序正确呈现,然后是材料属性,所以从技术上讲,我可以将所有这些包装在一个静态工厂函数中并完成它,但我真的想在这里遵循 Apple 的 API,您可以通过初始化程序实例化几何,而不是工厂函数,所以我不想让这个去。成功完成从第 2 步到第 n 步的所有步骤真的很糟糕,只是在第一步完全跳闸……初始化!

那么,什么是指定的初始化器SCNGeometry,让我可以指定我自己的顶点和材质等,如果没有,如何在使用时指定该信息super.init()

0 投票
1 回答
202 浏览

ios - 像测量应用程序一样在scenekit中绘制虚线圆柱体?

我已经按照这个问题尝试制作破折号气缸

但是,管道没有虚线。

结果

我不确定我在这里缺少什么,请帮忙。

更新T:

事实证明,清晰的颜色(在图像中)被渲染为黑色,在 SCNView 中不透明。不过,不知道为什么绿色会这样变暗。