Object Capture + AR: ซื้อเฟอร์นิเจอร์ให้แน่ใจก่อนจ่ายเงิน
ปัญหาคลาสสิกของการซื้อเฟอร์นิเจอร์คือ ดูสวยในโชว์รูมแต่พอเอาไปวางจริงกลับไม่พอดีหรือผิดสัดส่วน Apple Object Capture API (iOS 17+) ให้สแกนเฟอร์นิเจอร์ชิ้นจริงจากโชว์รูมได้โดยตรง ไม่ต้องรอ brand สร้าง 3D model
Object Capture: Photogrammetry บน iPhone
Object Capture ใช้ภาพถ่ายหลายมุม (20–200 รูป) สร้าง 3D mesh ด้วย photogrammetry:
ขั้นตอนในโชว์รูม:
- ถ่ายภาพเฟอร์นิเจอร์รอบ 360° ทุกๆ 15–20° (24–26 รูป) 2. ถ่ายมุมบน (bird-eye) เพิ่ม 8–10 รูป 3. ถ่ายมุมล่างถ้าเข้าถึงได้ 4. รวม 40–60 รูป ขนาด ≥4K สำหรับ detail สูง 5. ใช้ tripod หรือ เดินช้าๆ รอบวัตถุ (iPhone จะ track การเคลื่อนไหว)
Processing บน Mac (ต้องการ Apple Silicon M1+):
swift import RealityKit struct FurnitureScanner { static func createModel(from images: [URL]) async throws -> PhotogrammetrySession.Result { let session = try PhotogrammetrySession( input: images, configuration: { var config = PhotogrammetrySession.Configuration() config.sampleOrdering = .unordered config.featureSensitivity = .high return config }() ) return try await session.process(requests: [ .modelFile(url: URL(fileURLWithPath: "/output/sofa.usdz"), detail: .full) ]) } }
เวลา processing: 5–20 นาที ขึ้นอยู่กับจำนวนภาพและ Mac spec
Model Quality ที่คาดหวัง
| Detail Level | รูปภาพ | File Size | Accuracy | |-------------|--------|-----------|----------| | preview | 20–30 | 5–10 MB | ±5 cm | | reduced | 30–50 | 20–50 MB | ±2 cm | | medium | 50–100 | 50–200 MB | ±1 cm | | full | 100–200 | 200–500 MB | ±5 mm | สำหรับ AR interior design แนะนำ medium detail: accuracy ±1 cm เพียงพอ ไฟล์ขนาดสมเหตุสมผล
AR Placement ด้วย RoomPlan + Object Placement
หลัง process ได้ USDZ model ของโซฟา:
swift import ARKit import RealityKit class ARViewController: UIViewController { var arView = ARView(frame: .zero) var placedFurniture: [ModelEntity] = [] func placeFurniture(usdz: URL, at position: SIMD3<Float>) { let entity = try! Entity.load(contentsOf: usdz) let anchor = AnchorEntity(world: position) anchor.addChild(entity) arView.scene.addAnchor(anchor) placedFurniture.append(entity as! ModelEntity) } func checkDimensions() -> (width: Float, depth: Float, height: Float) { guard let entity = placedFurniture.last else { return (0,0,0) } let bounds = entity.visualBounds(relativeTo: nil) return (bounds.extents.x, bounds.extents.z, bounds.extents.y) } }
Scale Verification และ Color Harmony
ในห้องที่ scan ด้วย RoomPlan: - เดินรอบ เฟอร์นิเจอร์ virtual ดู clearance รอบด้านจริงๆ - วัดระยะ จาก AR model ถึงผนัง ประตู หน้าต่าง - เปลี่ยน material/color ของ USDZ model ใน Reality Composer Pro เพื่อดู color variant ก่อนสั่ง - เปิด people occlusion เพื่อดูว่า AR object ถูก occlude อย่างถูกต้อง
Workflow สำหรับการตกแต่งบ้านไทย
- สแกนห้องด้วย RoomPlan (~5 นาที) 2. ไปโชว์รูม Index Living Mall, IKEA, SB Design Square — สแกนเฟอร์นิเจอร์ที่สนใจ 3. Process USDZ บน MacBook (~10 นาที/ชิ้น) 4. AR preview ทุกชิ้นในห้องจริง ทดสอบ layout หลายแบบ 5. ตัดสินใจซื้อพร้อม confidence สูง ลดการ return เฟอร์นิเจอร์: จาก 23% (industry average) เหลือ ~5%