我直接在Scene图形的usdz文件中设置3d模型的剔除模式和双面属性。但是,一旦真实的渲染,这些属性会自动重置为默认值。有没有办法通过BodyEntity以编程方式访问这些属性,以确保在渲染角色时设置这些属性?
uubf1zoe1#
RealityKit 2.0 for iOS 15中有一个新的枚举,称为FaceCulling:
enum MaterialParameterTypes.FaceCulling
有front、back和none三种情况。您可以在PhysicallyBasedMaterial或SimpleMaterial中使用它。RealityKit中仍然没有doubleSided属性,像SceneKit中流行的属性。
front
back
none
doubleSided
sg3maiej2#
Xcode 13.4.1.的工作解决方案,Swift 5.6.1.
if var material = particleME.model?.materials.first as? PhysicallyBasedMaterial { material.faceCulling = .none // Set transparency (if needed): // material.blending = .transparent(opacity: .init(floatLiteral:0.5)) particleME.model?.materials = [material] }
faceCulling
Entity
ModelEntity
if
注意:我已经通过场景曲线图编辑器设置了transparency,并使用上面的代码将其重置为1.0。如果你已经通过SGE编辑了你的.usdz,那么修改材质数组(像我做的那样)可能会重置你之前的设置。我必须将混合设置为透明才能恢复透明度。我的建议是,当使用RealityKit时,将尽可能多的.usdz或3D文件更改卸载到3D内容创建者,因为除了不起作用的东西外,API还有很多需要改进的地方。其他有用链接:
transparency
.usdz
RealityKit
2条答案
按热度按时间uubf1zoe1#
RealityKit 2.0 for iOS 15中有一个新的枚举,称为FaceCulling:
有
front
、back
和none
三种情况。您可以在PhysicallyBasedMaterial或SimpleMaterial中使用它。RealityKit中仍然没有
doubleSided
属性,像SceneKit中流行的属性。sg3maiej2#
Xcode 13.4.1.的工作解决方案,Swift 5.6.1.
faceCulling
,因为没有“none”选项。Entity
(而不是ModelEntity
)。不要在if
中进行类型转换,因为大多数情况下它会失败。注意:我已经通过场景曲线图编辑器设置了
transparency
,并使用上面的代码将其重置为1.0。如果你已经通过SGE编辑了你的.usdz
,那么修改材质数组(像我做的那样)可能会重置你之前的设置。我必须将混合设置为透明才能恢复透明度。我的建议是,当使用
RealityKit
时,将尽可能多的.usdz
或3D文件更改卸载到3D内容创建者,因为除了不起作用的东西外,API还有很多需要改进的地方。其他有用链接: