Добавление материала в ModelEntity программно - PullRequest
1 голос
/ 01 июля 2019

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

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

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

1 Ответ

1 голос
/ 02 июля 2019

Как вы сказали, на данный момент в 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, но я надеюсь, что все в порядке.

...