问题标签 [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.

0 投票
0 回答
957 浏览

ios - SceneKit:了解如何为地板材质设置比例?

谁能解释这两个Scale属性在Material InspectorXcode 场景编辑器中是如何工作的?

在此处输入图像描述

从表面上看,第一个似乎代表沿 X 轴的比例,而第二个代表沿 Y 轴的比例。SCNMaterial 类中没有关于 scale 属性的讨论。

此图像来自WWDC 狐狸演示。它用于地板的漫反射材质。它的尺寸是 512x512。

在此处输入图像描述

但是,该演示为此图像使用 1 的比例值。对于另一个地板材质图像(也是 512x512),它使用 128 的比例值。

它不应该使用 2 或 3 的值而不是 1 和 128 来说明更高的设备分辨率(例如,5s 设备上的 2x)?

使用不同的值会产生意想不到的结果。较高的比例值(即 256)产生了更锐利的底,但它也产生了在 64 级别上看不到的“马蹄形”伪影。另外,为什么 2 或 3 的比例因子不够?

考虑到 iPhone 5s 设备上的 2 倍分辨率,两个比例属性都设置为 256。这会产生: 在此处输入图像描述

比例属性设置为 128: 在此处输入图像描述

比例属性设置为 64: 在此处输入图像描述

有人可以解释如何根据材料的图像分辨率设置比例属性吗?

0 投票
0 回答
307 浏览

ios - 几何渲染问题 - SceneKit

我有一组 SceneKit 自定义几何图形。渲染时,在某些视角下,它们看起来好像是透明的(可以透过它们的外表面看到后面的东西,或者可以看到内表面)。它们的材质透明度和封装节点的不透明度都设置正确。此外,它们中的一些相交并且它们的相交是完全可见的。关于可能是什么问题的任何想法?谢谢。

0 投票
1 回答
334 浏览

ios - 如何在 SCNShere 几何体上为 SCNMaterial 使用 web 墨卡托投影图?

我的应用程序中有一个简单的全球视图。以前我们使用 WhirlyGlobe,但选择使用 SceneKit。一切都很好,我们对此很满意,除了我们在 Whirly Globe 中使用了地图图块并且在 SceneKit 中不起作用(据我所知)。我们想在 SCNSphere 几何体上使用该地图(平铺、拆分或作为一个文件)。

我复制了 Apple 在其文档中使用的卫星地图,它看起来不错,但不是我们需要的地图。我们的地图在 web/sphere 墨卡托投影中,在我的球体上的 SceneKit 中看起来很糟糕。

我不知道 Apple 使用的 2x1 投影是什么,所以这些信息可能足以让我找到解决方案。

  • 我现在做的:
    • Equirectangular - 当然是在我发布之后。
    • 也称为 Platte Carre(根据 Hal Mueller 的评论)

我们的地图在 web 墨卡托投影中的导出是 1x1。仅在垂直轴上挤压它是行不通的(SceneKit 无论如何都会自动执行此操作)。

如果需要,我可以使用工具或某种混合工具以编程方式转换文件。

如果需要,我可以提供地图皮肤的拇指。

0 投票
3 回答
593 浏览

scenekit - 如何在 SceneKit 中有效地映射高分辨率 SKScene?

可能相关: 使用高分辨率纹理优化 SceneKit 性能

我正在将 a 映射SKScene到棋盘几何以创建棋盘游戏。场景需要相对较大(2048x1024),这样我才能放大动作并保留漂亮的细节。现在,为了解决这个常见问题,我已经知道了两种方法:

  • 缩小时使用较低分辨率的纹理(即 mipmapping) - 这不是问题,SceneKit对我有用。
  • 平铺场景以获得特写,并且仅显示屏幕上的那些平铺。

现在第二点让我思考。如何平铺 SKScene 并将它们映射到几何体上的不同位置?还有另一种方法可以使这项工作吗?


截图

这是几何: 没有纹理的简单几何图形。

这是以静态图像 (2048x1024) 作为纹理的几何图形: 具有图像纹理的几何图形。

这是以SKScene(2048x1024) 作为纹理的几何图形: 在此处输入图像描述

该场景不包含任何物理实体,只有大约 40 个SKSpriteNodes什么都不做。我需要它能够更改区域的颜色,也许添加一些额外的叠加层等。有没有办法SceneKit完全做到这一点?也许为每个领域创建一个几何图形?


已实施的答案

我现在尝试使用SceneKitonly 来实现相同的场景。每个区域都是一个四边形,使用包含预渲染边界的纹理。不同的混合模式有助于衬托纸张纹理。不幸的是,性能影响大致相同 - 我的结论是,它SpriteKit毕竟不是占用资源,而是节点数与高分辨率纹理相结合(遗憾的是,如果你不使用路径,则需要保持边界清晰) .

仅使用 SceneKit 的解决方案

0 投票
1 回答
859 浏览

ios - 具有半透明图层内容的 SCNMaterial 显示为白色

我正在尝试为我SCNBox的彩色边框和透明边创建一种材质。这是我用于创建材料的代码:

它工作正常,但中心部分是白色而不是透明的。我已经用 SCNMaterial 的透明属性和 transparentModes 尝试了很多实验,但是由于我对 3D 渲染的理解有限,我无法让它工作。我在这里想念什么?

谢谢!

0 投票
1 回答
1690 浏览

ios - SCNMaterial 防止拉伸

我有一个自定义几何四边形,我的纹理图像显示在它上面,但我希望它显示为 Aspect Fill,而不是拉伸或压缩以适应空间。

我将相同的纹理应用到房间的多个墙壁上,所以如果图像是墙纸,它必须看起来正确。

有没有办法使用以下内容并确定它的填充方式?

谢谢

[更新]

0 投票
3 回答
7727 浏览

ios - 将 .jpg 和 .mtl 文件应用于 SceneKit 中的 .obj 文件

设计师已经交付了三个文件:

  • 图片。jpg
  • 某物。mtl
  • 任何。对象

我可以像这样成功地将 .obj 文件加载到我的场景中:

我正在努力将 .jpg 和 .mtl 文件应用于 .obj 文件。我尝试使用以下代码应用图像,但不喜欢:

0 投票
1 回答
1197 浏览

swift3 - Scenekit:如何获取节点的所有材质?

好的,据我了解,可以在模型的编辑器中为 .dae 或在 Xcode 中用作 SCNNode 的任何 3D 模型创建材料:

在此处输入图像描述

最上面的材料会自动应用,一切都很好。我的问题是我想以编程方式在整个游戏中创建的这些材料之间进行切换。

我试图通过以下方式获得一系列这些材料:

但是,这只返回第一个材料。我已经尝试了everybting,但无法找到获取其他材料并切换到它们的方法。现在我正在尝试:

其中 test 是第二种材料,但它发现它为零。如何以编程方式在多种材质之间切换?

0 投票
1 回答
1074 浏览

swift - 将具有透明度的 UIView(来自 xib)添加到 SceneKit

我正在尝试将 UIView 加载到具有半透明背景的 SceneKit 中,但目前,当我降低不透明度时,它只会淡化为白色。我在要加载到 SceneKit 的 .xib 文件中有一个非常简单的 UIView 布局。到目前为止,我可以在 SCNMaterial 中显示 UIView,更改视图内的任何文本字段、图像等都没有问题。但是,我不能让它具有透明度。如果我更改视图的 alpha,它只会淡化为白色。

大部分代码如下:

我留下了各种各样的东西,比如分配blendMode、0.2不透明度的backgroundColor以及整个视图,因为这些都是我尝试过的东西,但仍然得到一个白色背景,其中一些视图元素在白色的顶部非常褪色出去。也试过 blendMode = .alpha 发现没有区别。这里的“self”是 SCNNode 的子类。

有谁知道我怎样才能使这个视图的背景淡化为透明,而不是淡化为白色?或者,将视图加载到 SceneKit 的另一种方法。

0 投票
0 回答
432 浏览

ios - SceneKit 材质中的模糊效果

SCNMaterial是否可以在 SceneKit中实现高斯模糊效果?它应该看起来像磨砂玻璃,类似于UIKit 中UIVisualEffectView的 aUIBlurEffectStyleLight或a 。UIBlurEffectStyleExtraLight