在SceneKit中,有许多选项,例如
- 通过
SCNMaterial.(diffuse|emission|ambient|...).contents
使用UIColor的alpha通道 - 使用
SCNMaterial.transparency
(从0.0到1.0的CGFloat) - 使用
SCNMaterial.transparent
(另一个SCN材料属性) - 使用
SCNNode.opacity
(CGFloat从0.0(完全透明)到1.0(完全不透明))
我想知道是否有办法在RealityKit中为ModelEntity设置透明度/不透明度/alpha?
2条答案
按热度按时间ohtdti5x1#
现实工具包1.0
RealityKit 1.0中有一个解决方案允许你控制对象的透明度,你可以使用
baseColor
或SimpleMaterial()
的tintColor
示例属性来实现:它完美地工作在iOS中,甚至与颜色参数:
macOS解决方案(RealityKit 1.0的纹理示例):
或者,如果模型上不需要任何纹理(只需要不透明的颜色),则可以通过
baseColor
示例属性控制透明度:如果您的场景包含两种类型的对象(在Reality Composer中创建和在Xcode中以编程方式创建),并且您为这两种对象指定了相同的材质,则编译的应用程序会显示一些渲染瑕疵(请参见下图)。
这是由于RealityKit的工作不稳定(因为框架现在还太年轻)。我认为在RealityKit的下一个版本中,
missing texture on Reality Composer model
和weird reflection left from sphere
等bug将被消除。现实工具包2.0
在RealityKit 2.0中,AR团队的工程师给了我们一个
.color
属性,而不是.baseColor
和.tintColor
。这两个属性在iOS 15中已弃用。iOS解决方案(RealityKit 2.0的颜色示例)
iOS解决方案(RealityKit 2.0的纹理示例)
可以使用相同的初始化器应用纹理:
特别注意
tint
乘数-如果纹理有透明部分,必须使用0.9999
值。在这里你可以找到如何设置PhysicallyBasedMaterial的透明度。
ds97pgxw2#
我已经找到了几种方法。
1.不带动画最简单的方法是使用
OcclusionMaterial()
:更改现有实体的不透明度:
1.使用动画(您可以根据需要调整这些片段):
希望这对某人有帮助)