问题标签 [scnmaterial]
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.
swift3 - 图像仅在 ARKit 中显示为黑色和红色
我们正在尝试使用 ARKit 框架在 ARSCNView 中创建具有 SCNMaterial 的 SCNNode,该 SCNMaterial 具有图像(.png 扩展名)。问题是图像渲染存在图像仅显示为黑色和红色的问题,它不能正确渲染图像。
该问题仅存在于 iOS 11.2 版本中。iOS 11.0、11.1 和 11.3 beta 版本没有问题。
我们的代码如下;
有人有想法吗?
ios - 自定义 SCNGeometry 不将漫反射内容显示为纹理
我正在创建一个自定义 SCNGeometry。首先,我将其开发为平面。它会显示,我可以将颜色应用到它的漫反射内容,但如果我尝试应用任何东西,例如 UIImage 或 CALayer,它会显示为白色。
代码:
scenekit - SceneKit PBR - 倍增反照率
我需要在反照率/漫反射上乘以位图。我正在使用 PBR 着色。
例如:在皮肤(反照率/漫反射)上应用纹身(位图),并进行复制,这样您就可以看到纹身覆盖在皮肤上。
问题:这个纹身(位图)应该是第二个反照率/漫反射?还是设置为另一种材质?如果是,什么样的材料?
谢谢!
objective-c - SKVideoNode 不考虑纵横比
我正在将带有 SKVideoNode 的 SKScene 映射到 SCNBox 的一侧。我正在努力使视频的宽高比正确。这是代码:
它忽略了任何纵横比设置,例如适合和填充。它只是将其压扁以适合边界框。将边界框设置得更大似乎没有帮助。即使在相对于视频的固定尺寸下,纵横比也会被忽略。
ios - Scenekit:使用着色器重新着色漫反射纹理
我想写一些着色器(表面/片段/...)来用一些新的颜色重新着色我的漫反射纹理。目前我有这个版本的着色器(我正在尝试实时重新着色纹理):
这是 OpenCV 中的代码(我只是事先重新着色纹理并将其用作新的漫反射纹理):
对于这个测试,我只想减少颜色的 R 分量。结果:
OpenCV(正确)
SceneKit(不正确)
漫反射纹理包含 Alpha 通道。
(由 mnuages 解决) 此外,似乎在重新着色着色器 alpha 通道后被破坏。使用此着色器:
我怎样才能像在openCV中一样重新着色漫反射纹理?
更新: 这是 SceneKit 着色器和 OpenCV 的结果(我已经从图像中删除了所有透明像素):
着色器:
和 OpenCV 代码:
一些更奇怪的事情:我已将我的 OpenCV 代码更改为此以生成新纹理
如果我像这样改变这个纹理:
我收到这样的消息:
使用这个 SceneKit 着色器应该是一样的:
但我收到这个:
有一些白色的条纹,但太细了。
我可以通过将条件更改为 tinted.b > 0.85 来增加它们,但这已经是一个错误,因为 _surface.diffuse 中的颜色与纹理中的颜色不同。似乎 SceneKit 会插入纹理或类似的东西。
更新2:
我已经为这个问题添加了源代码(1.5Mb)。有3个球体:
1 顶部)具有原始纹理
2 左)使用着色器重新着色的纹理(newR = r - 0.2)(浮点数)
3 右)使用 OpenCV 重新着色的纹理(newR = r - 51)(uint8)
他们是不同的!场景不包含任何灯光/环境/...只有 3 个球体。
ios - SceneKit 通过特定索引选择性地为面部着色
我的目标:给定一些 indexi
和 some UIColor
c
,使该索引处的脸变成该颜色。
我的 3D 对象渲染正确。正如预期的那样,它全是白色。然而,那张红脸并没有出现。我看到一丝红色,但看起来 SceneKit 正在尝试在顶点周围着色,而不是那些顶点形成的面。如何强制它只为这些顶点创建的面/多边形着色?
swift - 在 SceneKit 中渲染具有半透明纹理的 3D 模型(头发)?
我正在尝试在 SceneKit 中渲染 3D 模型,但它看起来不正确。例如这个模型(它是一个带有纹理的 SCN 文件,您可以在 Xcode 中重现它):
在 Xcode 场景编辑器中,它呈现如下:
如果我关闭“写入深度”选项,它将如下所示: 但也有一些问题,因为我只看到“最底层”的理发。
我认为这应该是可能的。怎么做才对?
arkit - 如何在 ARKit 中调整米的纹理大小
我需要使用更新几何(地板填充)在平面上平铺纹理,并且我需要缩放纹理以适应以厘米为单位的实际尺寸。它是一块50cm的方形地砖,纹理大小为1024像素。如何将像素转换为米ARKit
?我知道我必须使用SCNMatrix4MakeScale
但SCNMaterial diffuse.contentsTransform
不确定要设置哪些属性才能使其准确。