顔のトラッキングを有効にするために、ARFaceTrackingConfiguration
を使用してARセッションを構成します。
let configuration = ARFaceTrackingConfiguration() // Face Trackingの設定を作成
arView.session.run(configuration) // Face Trackingの設定でセッションを開始
// 顔に表示する3Dモデルを作成
let mesh = MeshResource.generateBox(size: 0.1, cornerRadius: 0.01)
let material = SimpleMaterial(color: .red, roughness: 0.1, isMetallic: false)
let modelEntity = ModelEntity(mesh: mesh, materials: [material])
let anchor = AnchorEntity(.face) // 顔の位置にアンカーを作成
anchor.addChild(modelEntity) // 3Dモデルを顔のアンカーに追加
arView.scene.addAnchor(anchor) // 顔のアンカーをARViewのシーンに追加
目次
コピペで動くサンプルコード
import SwiftUI
import RealityKit
import ARKit
struct ContentView: View {
var body: some View {
ARFaceTrackingContainer().edgesIgnoringSafeArea(.all)
}
}
struct ARFaceTrackingContainer: UIViewRepresentable {
// ARViewを作成するためのメソッド
func makeUIView(context: Context) -> ARView {
// ARViewをゼロサイズのフレームで作成
let arView = ARView(frame: .zero)
// Face Trackingの設定を作成
let configuration = ARFaceTrackingConfiguration()
// Face Trackingの設定でセッションを開始
arView.session.run(configuration)
// 顔に表示する3Dモデルを作成
let mesh = MeshResource.generateBox(size: 0.15, cornerRadius: 0.01)
let material = SimpleMaterial(color: .red, roughness: 0.1, isMetallic: false)
let modelEntity = ModelEntity(mesh: mesh, materials: [material])
// 顔の位置にアンカーを作成
let anchor = AnchorEntity(.face)
// 3Dモデルを顔のアンカーに追加
anchor.addChild(modelEntity)
// 顔のアンカーをARViewのシーンに追加
arView.scene.addAnchor(anchor)
// 設定されたARViewを返す
return arView
}
// ARViewを更新するメソッド
func updateUIView(_ uiView: ARView, context: Context) {}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Comment