RealityKit 的文档包括结构: OcclusionMaterial
、 SimpleMaterial
和 UnlitMaterial
用于向 ModelEntity
添加 Material 。
或者,您可以加载带有附加 Material 的模型。
我想以编程方式向 ModelEntity
添加自定义 Material /纹理。如何在不将 Material 添加到 Reality Composer 或其他一些 3D 软件中的模型的情况下即时实现这一点?
最佳答案
更新时间:2021 年 6 月 8 日 。
因此,您可以将以下代码与
SimpleMaterial()
类一起使用:@IBOutlet var arView: ARView!
let sceneObjects = try! Experience.loadAllMyObjects()
var simpleMaterial = SimpleMaterial()
simpleMaterial.baseColor = try! MaterialColorParameter.texture(
TextureResource.load(named: "img.jpg"))
simpleMaterial.metallic = MaterialScalarParameter(floatLiteral: 0.9)
simpleMaterial.roughness = MaterialScalarParameter(floatLiteral: 0.1)
simpleMaterial.tintColor = UIColor.yellow
/*
simpleMaterial.baseColor = MaterialColorParameter.color(UIColor(red: 0.7,
green: 0.5,
blue: 0.2,
alpha: 1.0))
*/
目前 RealityKit 2.0 中有 5 种方法来创建 3D 基元:generateBox(...)
generateSphere(...)
generatePlane(...)
generateText(...)
generate(...)
– 从网格描述符列表创建网格资源 所以让我们使用其中之一:
let mesh: MeshResource = .generateBox(size: 2.5)
let component = ModelComponent(mesh: mesh,
materials: [simpleMaterial])
sceneObjects.components.set(component)
arView.scene.anchors.append(sceneObjects)
如何在 RealityKit 中生成 SceneKit 的着色器
我们知道在 SceneKit 中有 5 种不同的着色模型,因此我们可以使用 RealityKit 的
SimpleMaterial
、 PhysicallyBasedMaterial
和 UnlitMaterial
来生成我们已经习惯的所有这五种着色器。让我们看看它的样子:
SCNMaterial.LightingModel.blinn – SimpleMaterial(color: . gray,
roughness: .float(0.5),
isMetallic: false)
SCNMaterial.LightingModel.lambert – SimpleMaterial(color: . gray,
roughness: .float(1.0),
isMetallic: false)
SCNMaterial.LightingModel.phong – SimpleMaterial(color: . gray,
roughness: .float(0.0),
isMetallic: false)
SCNMaterial.LightingModel.physicallyBased – PhysicallyBasedMaterial()
SCNMaterial.LightingModel.constant – UnlitMaterial(color: .gray)
关于swift - RealityKit – 以编程方式向 ModelEntity 添加 Material ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56828648/