RealityKit - Transparansi Alfa Material
Aug 20 2020
Apakah mungkin memiliki transparansi alfa dengan tekstur?
Saya memiliki file png yang berisi RGBA 8 bit, tetapi untuk beberapa alasan, bagian yang seharusnya transparan hanya berwarna hitam.
Saya menetapkan materi seperti ini:
private func setupLightMeshes(_ scene: Entity) {
let lightEntity = scene.findEntity(named: "LightWindow_Plane")!
var lightMaterial = UnlitMaterial()
lightMaterial.baseColor = try! MaterialColorParameter.texture(
TextureResource.load(named: "light.png")) // this is 8bpc RGBA
var modelComponent = lightEntity.components[ModelComponent] as! ModelComponent
modelComponent = ModelComponent(mesh: modelComponent.mesh, materials: [lightMaterial])
lightEntity.components.set(modelComponent)
}
Jawaban
1 AndyFedoroff Aug 24 2020 at 20:18
.tintColor
adalah pengali untuk .baseColor
Jika Anda memiliki .png
file dengan alpha ( RGB
* A
) yang telah digandakan sebelumnya . yang perlu Anda lakukan adalah menggunakan tintColor
properti instance dengan alpha sama dengan 0.9999
.
material.tintColor = UIColor(white: 1.0, alpha: 0.9999)
Beginilah tampilannya dalam kode sebenarnya:
fileprivate func material() -> UnlitMaterial {
var material = UnlitMaterial()
material.baseColor = try! .texture(.load(named: "transparent.png"))
material.tintColor = UIColor(white: 1.0, alpha: 0.9999)
return material
}
override func viewDidLoad() {
super.viewDidLoad()
let sphere: MeshResource = .generateSphere(radius: 0.5)
let entity = ModelEntity(mesh: sphere,
materials: [material()])
let anchor = AnchorEntity()
anchor.orientation = simd_quatf(angle: .pi, axis: [0, 1, 0])
anchor.addChild(entity)
arView.scene.anchors.append(anchor)
}
PS
Bagi saya, ini seperti bug di RealityKit. Saya tidak tahu mengapa metode .load(named: "file.png")
tidak berfungsi seperti yang diharapkan.
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'