问题标签 [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.
ios - SceneKit:了解如何为地板材质设置比例?
谁能解释这两个Scale
属性在Material Inspector
Xcode 场景编辑器中是如何工作的?
从表面上看,第一个似乎代表沿 X 轴的比例,而第二个代表沿 Y 轴的比例。SCNMaterial 类中没有关于 scale 属性的讨论。
此图像来自WWDC 狐狸演示。它用于地板的漫反射材质。它的尺寸是 512x512。
但是,该演示为此图像使用 1 的比例值。对于另一个地板材质图像(也是 512x512),它使用 128 的比例值。
它不应该使用 2 或 3 的值而不是 1 和 128 来说明更高的设备分辨率(例如,5s 设备上的 2x)?
使用不同的值会产生意想不到的结果。较高的比例值(即 256)产生了更锐利的底,但它也产生了在 64 级别上看不到的“马蹄形”伪影。另外,为什么 2 或 3 的比例因子不够?
考虑到 iPhone 5s 设备上的 2 倍分辨率,两个比例属性都设置为 256。这会产生:
有人可以解释如何根据材料的图像分辨率设置比例属性吗?
ios - 几何渲染问题 - SceneKit
我有一组 SceneKit 自定义几何图形。渲染时,在某些视角下,它们看起来好像是透明的(可以透过它们的外表面看到后面的东西,或者可以看到内表面)。它们的材质透明度和封装节点的不透明度都设置正确。此外,它们中的一些相交并且它们的相交是完全可见的。关于可能是什么问题的任何想法?谢谢。
ios - 如何在 SCNShere 几何体上为 SCNMaterial 使用 web 墨卡托投影图?
我的应用程序中有一个简单的全球视图。以前我们使用 WhirlyGlobe,但选择使用 SceneKit。一切都很好,我们对此很满意,除了我们在 Whirly Globe 中使用了地图图块并且在 SceneKit 中不起作用(据我所知)。我们想在 SCNSphere 几何体上使用该地图(平铺、拆分或作为一个文件)。
我复制了 Apple 在其文档中使用的卫星地图,它看起来不错,但不是我们需要的地图。我们的地图在 web/sphere 墨卡托投影中,在我的球体上的 SceneKit 中看起来很糟糕。
我不知道 Apple 使用的 2x1 投影是什么,所以这些信息可能足以让我找到解决方案。
- 我现在做的:
- Equirectangular - 当然是在我发布之后。
- 也称为 Platte Carre(根据 Hal Mueller 的评论)
我们的地图在 web 墨卡托投影中的导出是 1x1。仅在垂直轴上挤压它是行不通的(SceneKit 无论如何都会自动执行此操作)。
如果需要,我可以使用工具或某种混合工具以编程方式转换文件。
如果需要,我可以提供地图皮肤的拇指。
scenekit - 如何在 SceneKit 中有效地映射高分辨率 SKScene?
可能相关: 使用高分辨率纹理优化 SceneKit 性能
我正在将 a 映射SKScene
到棋盘几何以创建棋盘游戏。场景需要相对较大(2048x1024),这样我才能放大动作并保留漂亮的细节。现在,为了解决这个常见问题,我已经知道了两种方法:
- 缩小时使用较低分辨率的纹理(即 mipmapping) - 这不是问题,
SceneKit
对我有用。 - 平铺场景以获得特写,并且仅显示屏幕上的那些平铺。
现在第二点让我思考。如何平铺 SKScene 并将它们映射到几何体上的不同位置?还有另一种方法可以使这项工作吗?
截图
这是以静态图像 (2048x1024) 作为纹理的几何图形:
这是以SKScene
(2048x1024) 作为纹理的几何图形:
该场景不包含任何物理实体,只有大约 40 个SKSpriteNodes
什么都不做。我需要它能够更改区域的颜色,也许添加一些额外的叠加层等。有没有办法SceneKit
完全做到这一点?也许为每个领域创建一个几何图形?
已实施的答案
我现在尝试使用SceneKit
only 来实现相同的场景。每个区域都是一个四边形,使用包含预渲染边界的纹理。不同的混合模式有助于衬托纸张纹理。不幸的是,性能影响大致相同 - 我的结论是,它SpriteKit
毕竟不是占用资源,而是节点数与高分辨率纹理相结合(遗憾的是,如果你不使用路径,则需要保持边界清晰) .
ios - 具有半透明图层内容的 SCNMaterial 显示为白色
我正在尝试为我SCNBox
的彩色边框和透明边创建一种材质。这是我用于创建材料的代码:
它工作正常,但中心部分是白色而不是透明的。我已经用 SCNMaterial 的透明属性和 transparentModes 尝试了很多实验,但是由于我对 3D 渲染的理解有限,我无法让它工作。我在这里想念什么?
谢谢!
ios - SCNMaterial 防止拉伸
我有一个自定义几何四边形,我的纹理图像显示在它上面,但我希望它显示为 Aspect Fill,而不是拉伸或压缩以适应空间。
我将相同的纹理应用到房间的多个墙壁上,所以如果图像是墙纸,它必须看起来正确。
有没有办法使用以下内容并确定它的填充方式?
谢谢
[更新]
ios - 将 .jpg 和 .mtl 文件应用于 SceneKit 中的 .obj 文件
设计师已经交付了三个文件:
- 图片。jpg
- 某物。mtl
- 任何。对象
我可以像这样成功地将 .obj 文件加载到我的场景中:
我正在努力将 .jpg 和 .mtl 文件应用于 .obj 文件。我尝试使用以下代码应用图像,但不喜欢:
swift - 将具有透明度的 UIView(来自 xib)添加到 SceneKit
我正在尝试将 UIView 加载到具有半透明背景的 SceneKit 中,但目前,当我降低不透明度时,它只会淡化为白色。我在要加载到 SceneKit 的 .xib 文件中有一个非常简单的 UIView 布局。到目前为止,我可以在 SCNMaterial 中显示 UIView,更改视图内的任何文本字段、图像等都没有问题。但是,我不能让它具有透明度。如果我更改视图的 alpha,它只会淡化为白色。
大部分代码如下:
我留下了各种各样的东西,比如分配blendMode、0.2不透明度的backgroundColor以及整个视图,因为这些都是我尝试过的东西,但仍然得到一个白色背景,其中一些视图元素在白色的顶部非常褪色出去。也试过 blendMode = .alpha 发现没有区别。这里的“self”是 SCNNode 的子类。
有谁知道我怎样才能使这个视图的背景淡化为透明,而不是淡化为白色?或者,将视图加载到 SceneKit 的另一种方法。
ios - SceneKit 材质中的模糊效果
SCNMaterial
是否可以在 SceneKit中实现高斯模糊效果?它应该看起来像磨砂玻璃,类似于UIKit 中UIVisualEffectView
的 aUIBlurEffectStyleLight
或a 。UIBlurEffectStyleExtraLight