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

vector - 如何在 Apple SceneKit 中确定 SCNPlane 的法线向量

我有一个 SCNode,它是使用 SCNPlane 几何图形动态创建的,以使用 SceneKit 绘制平面。

如何确定该平面的法线向量?

这是一个展示我尝试过的东西的游乐场。我附上了绘制的结果场景的屏幕截图。我不认为有任何圆柱体代表在这个红色平面的法线向量处获得的向量。

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
154 浏览

swift - 自定义 SCNGeometry 节点上基于物理的照明

问题

如何从顶点数据定义自定义几何体上的材质,使其呈现与“典型”SCNNode 相同的效果?


细节

在这个场景中有

  • 定向灯
  • 使用基于物理的光照模型的红色球体
  • 使用基于物理的光照模型的蓝色球体
  • 使用顶点数据的自定义 SCNGeometry,使用基于物理的光照模型

红色和蓝色球体按我的预期渲染。自定义几何体中的两个点/球体是黑色的。

为什么?


这是游乐场代码:

设置场景

添加蓝色和红色球体

在此处输入图像描述

添加自定义 SCNGeometry

在此处输入图像描述


一些探索

现在添加normals显示颜色,但在所有方向(即,没有阴影)。

我在SCNSphere()我的 RGB 值中添加了一个黑色和第三个点VertexData,两者都使用相同的 RGB 值,但VertexData对象中的黑色显得太“浅”

在此处输入图像描述

0 投票
1 回答
52 浏览

swift - 为什么自定义 SCNGeometry 中的黑色比 SCNSphere 中的浅

在这个场景中

  • 左侧的球体列是使用创建的SCNSphere()
  • 右侧的“圆圈”列是SCNGeometry()使用.point原语创建的
  • 只有一个环境光源
  • 所有几何图形都使用.constant照明模型
  • 每对球体使用相同的 RGB 值来定义颜色。

为什么最后两对圆圈的黑色阴影比它们等效的球体浅?

在此处输入图像描述


重现此图像的完整操场代码:

创建场景

球体列

圆圈列


根据接受的答案更新。从 sRGB 转换为 LinearRGB 得到相同的结果

在此处输入图像描述

0 投票
1 回答
71 浏览

swift - 从 SceneKit 中的 SCNGeometry 中提取人脸信息

我想从 SCNNode 几何中提取面信息,就像我们可以从几何源中提取顶点信息一样。关于如何实现的任何想法?

0 投票
2 回答
50 浏览

ios - 从 SCNNode 几何获取源时顶点数据错误

我在 SCNGeometry 扩展中使用下面的代码来获取顶点数据,以及用于 .normals 的类似代码,我的目标是从原始节点创建一个克隆网格来为每个顶点着色,但是当我尝试创建另一个节点时有了这些顶点和法线,生成的网格有一些三角形搞砸了,我有一个小网格要测试,这就是我得到的,你们中有人对我可能做错了什么有一些指导吗?

在这个例子中,这个函数给我一个 50 个顶点的数组,而网格实际上有 18 个面,因此结果应该是一个 54 个顶点的数组,对吗?

原始网格 克隆网格

扩大:

对象:

克隆代码: