iic*_*ain 4 augmented-reality swift arkit realitykit reality-composer
RealityKit 的文档包括 structs: OcclusionMaterial, SimpleMaterial, 和UnlitMaterial用于将材料添加到ModelEntity.
或者,您可以加载一个带有材料的模型。
我想以ModelEntity编程方式向 a 添加自定义材料/纹理。如何在不将材质添加到 Reality Composer 或其他一些 3D 软件中的模型的情况下即时实现这一点?
更新时间:2021 年 6 月 8 日。
RealityKit 2.0 和 RealityFoundation 目前有 6 种材质:
因此,您可以在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))
*/
Run Code Online (Sandbox Code Playgroud)
目前 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)
Run Code Online (Sandbox Code Playgroud)
我们知道在 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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3178 次 |
| 最近记录: |