MENU

【SwitUI】顔のトラッキング方法

記事内に商品プロモーションが含まれる場合があります

顔のトラッキングを有効にするために、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()
    }
}
Share

Comment

コメントする

目次