Добавление материала в ModelEntity программно

Документы для RealityKit включают структуры: OcclusionMaterial, SimpleMaterial, а также UnlitMaterial для добавления материалов в ModelEntity,

В качестве альтернативы вы можете загрузить модель с прикрепленным к ней материалом.

Я хочу добавить пользовательский материал / текстуру к ModelEntity программно. Как я могу достичь этого на лету, не добавляя материал к модели в Reality Composer или каком-либо другом программном обеспечении 3D?

1 ответ

Решение

Как вы сказали, на данный момент в RealityKit есть 3 типа материалов: SimpleMaterial, UnlitMaterial а также OcclusionMaterial,

Таким образом, вы можете попробовать следующий код, используя SimpleMaterial класс:

var material = SimpleMaterial()

material.baseColor = try! .texture(.load(named: "image.jpg"))
material.metallic = MaterialScalarParameter(floatLiteral: 0.9)
material.roughness = MaterialScalarParameter(floatLiteral: 0.1)

/*

material.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: [material])

print("\(component.mesh.bounds)")
print("\(component.materials.count)")

PS На данный момент у меня нет возможности протестировать этот код в iOS 13, но я надеюсь, что все в порядке.

Другие вопросы по тегам