RealityKit –以编程方式将材料添加到ModelEntity

对于RealityKit的文档包括结构:OcclusionMaterialSimpleMaterial,和UnlitMaterial用于添加材料到ModelEntity

或者,您可以在模型中加载带有附加材料的模型。

我想以ModelEntity编程方式添加自定义材料/纹理。如何在不向Reality

Composer或其他3D软件的模型中添加材料的情况下即时实现这一目标?

回答:

  • 简单材质
  • 不发光材料
  • 咬合材料
  • VideoMaterial(查看此帖子以了解如何进行设置)

因此,您可以将以下代码用于一个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中只有4种方法可以创建简单的3D图元:

  • generateBox()
  • generateSphere()
  • generatePlane()
  • generateText()

因此,让我们使用其中之一:

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

SimpleMaterialUnlitMaterial生成我们习惯的所有这五个着色器。

让我们看一下它的样子:

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 – SimpleMaterial(color: . gray,

roughness: .float(0.0),

isMetallic: true)

SCNMaterial.LightingModel.constant – UnlitMaterial(color: .gray)

以上是 RealityKit –以编程方式将材料添加到ModelEntity 的全部内容, 来源链接: utcz.com/qa/409806.html

回到顶部