การ นํา ไป สู่ การ สร้าง
Unbout="About" (Ar) ครอบคลุมเนื้อหาดิจิตอลในโลกทางกายภาพ สร้างประสบการณ์โต้ตอบที่ผสมเข้ากับวัตถุเสมือนจริง แพลตฟอร์มของแอปเปิลให้นักพัฒนาแบบชั้นสูง โดยดําเนินการสร้าง API สําหรับ IS บทความนี้ขยายบนพื้นฐาน, นําเสนอ, นําเสนอ, นําเสนอ, นําเสนอ, ปฏิสัมพันธ์ผู้ใช้, ปฏิสัมพันธ์, การเคลื่อนไหว, ฟิสิกส์, และปรับแต่งให้เข้ากับผลงานได้โดยผลสําเร็จ คุณจะมีความเข้าใจในการใช้งานในการสร้างประสบการณ์แบบ Arad และ Faiple Facts
เริ่ม: ตั้งค่าโครงการและข้อจํากัด
เพื่อพัฒนา Apps กับ FictionKit คุณต้องใช้ Xode 13 หรือในภายหลัง อุปกรณ์ ISOS ทางกายภาพที่มี ชิป A9 หรือเครื่องใหม่ (IIMS, SE, 6s และต่อมา; iPPods 5 Gen และนักพัฒนาแอปเปิลสําหรับการทดสอบ บัญชีผู้ใช้ ไอOS ไม่สนับสนุนกล้องหรือข้อมูลเซ็นเซอร์ ดังนั้นการทดสอบจริง ๆ จึงจําเป็นมาก
สร้างโครงการ XCode ใหม่ และเลือก [FLT: 0] ต้นแบบ Falue App [FLT: 1) เลือก SwiUI หรือ UI Kitle ขึ้นกับสิ่งที่คุณชอบ – Fient work work with both. แม่แบบให้ [FLT: 0] และฉากพื้นฐาน (FLT: 0).
อีกทางเลือกหนึ่ง คุณสามารถเพิ่มความจริงเข้าไปในโครงการที่มีอยู่ด้วยตัวเองได้ โดยการนําเข้ากรอบภาพ:
import RealityKit
import ARKit
ทําให้แน่ใจว่า [FLT: 0] INCAMRUSUSDDescription ถูกตั้งค่าใน – ผู้ใช้งาน CHEK สตริง อธิบายว่าทําไมแอปต้องเข้าถึงกล้องของคุณ
2557. สําหรับรายละเอียดเพิ่มเติม โปรดอ้างอิงถึง [FLT: 0] เอกสารของกิตติมศักดิ์ และ. . เอกสาร .
การ เข้าใจ ระบบ การ ร่วม มือ กัน
Fair Kit ใช้สถาปัตยกรรม[FLT: 0] [FLT] [FT] เป็นพื้นฐานในการสร้างฉาก สถาปัตยกรรม (FLT: 0) สถาปัตยกรรม (FLT: 1) เป็นอาคารบรรจุส่วนประกอบ ส่วนประกอบที่นิยามลักษณะ, รูปลักษณ์, ฟิสิกส์, และคุณสมบัติอื่น ๆ ขององค์กร เช่น [FLT: 4] กําหนดลักษณะ 3DM, [FTTLT] จัดวางตําแหน่ง/สัดส่วนส่วน โครงสร้าง (พ.ศ.
การ จัด ทํา ภาพ แบบ ย่อ นี้ ทํา ให้ ง่าย ที่ จะ แต่ง วัตถุ ที่ ซับ ซ้อน คุณ สร้าง ตัว บุคคล, เชื่อม ต่อ ส่วน ประกอบ ต่าง ๆ, และ จัด เรียง เรื่อง เหล่า นั้น ใน ลําดับ ชั้น ฉาก โดย ราก ภาพ เป็น [FLT: 7] (ปกติ แล้ว เป็น [FLT: 8] ซึ่ง เชื่อม โยง เนื้อหา ของ โลกเสมือน กับ ตําแหน่ง ของ อาร์ เอต
การ สร้าง สิ่ง ที่ ยึด ไว้ มั่น และ เพิ่ม เนื้อหา
นี่ คือ วิธี วาง แบบ จําลอง 3 มิติ บน เครื่อง บิน ใด ๆ ที่ รู้ จัก กัน:
// Load a USDZ model
guard let model = try? ModelEntity.load(named: "robot") else { return }
// Create an anchor on any horizontal plane
let anchor = AnchorEntity(plane: .horizontal, classification: .any, minimumBounds: [0.2, 0.2])
// Attach the model to the anchor
anchor.addChild(model)
// Add the anchor to the ARView’s scene
arView.scene.addAnchor(anchor)
นอกจากนี้ คุณยังสามารถสร้างสมอที่ตําแหน่งเฉพาะของโลก โดยใช้ หรือแนบเนื้อหาเพื่อตรวจจับภาพหรือใบหน้า โดยใช้ หรือ.
สร้าง ฉาก ทาง ภูมิศาสตร์ ที่ มี ความ จริง
นอกจากการวางโมเดลง่าย ๆ แล้ว คุณต้องจัดการวงจรวงจรชีวิตแบบอาร์อาร์ ในแอพยูไอคิต เพิ่ม ให้กับตัวควบคุมมุมมองของคุณ:
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
override func viewDidLoad() {
super.viewDidLoad()
arView.session.delegate = self
// Configure session
let config = ARWorldTrackingConfiguration()
config.planeDetection = [.horizontal, .vertical]
arView.session.run(config)
loadContent()
}
func loadContent() {
// Create and add anchors
}
}
สําหรับ สวิฟต์ยูไอ, เปิด สะพาน เข้าในลําดับชั้นสวิฟต์ยูไอ (FLT:15).
ส่วนติดต่อผู้ใช้: รูปแบบการลากและตีลูก
เพื่อ ทํา ให้ AP ของคุณ มี ปฏิกิริยา ต่อ ผู้ ใช้ คุณ ต้อง รับ เสียง แท็บ, ลาก, และ หมุน.
เคาะไปยังตําแหน่งหรือเส้นต่อเนื่อง
เพิ่ม [FLT: 17] ไปยัง [FLT: 18] ในตัวจัดการท่าทาง เรียก เพื่อเรียกตัวองค์กรภายใต้นิ้ว:
arView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTap(_:))))
@objc func handleTap(_ sender: UITapGestureRecognizer) {
let location = sender.location(in: arView)
if let entity = arView.entity(at: location) {
// Scale the entity
var transform = entity.transform
transform.scale *= 1.2
entity.move(to: transform, relativeTo: entity.parent, duration: 0.3, timingFunction: .easeInOut)
} else {
// Place a new object at the tapped location
placeObject(at: location)
}
}
func placeObject(at screenPoint: CGPoint) {
let results = arView.raycast(from: screenPoint, allowing: .estimatedPlane, alignment: .any)
guard let result = results.first else { return }
let anchor = AnchorEntity(world: result.worldTransform)
let box = ModelEntity(mesh: .generateBox(size: 0.1), materials: [SimpleMaterial(color: .blue, isMetallic: false)])
anchor.addChild(box)
arView.scene.addAnchor(anchor)
}
Reracasting กับพื้นผิวจริงโลก เชื่อถือได้มากกว่าการตี offesting เมื่อคุณต้องการวางเนื้อหาบนเครื่องบิน ใช้ สําหรับนี้
ลากและหมุนด้วยเมาส์ลัด
เพื่อ ให้ สามารถ ลาก ลาก ได้ ให้ ติด [FLT: 22] และ ปรับ ตําแหน่ง ของ ตัว เอง ตาม เครื่อง บิน.
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))
arView.addGestureRecognizer(panGesture)
@objc func handlePan(_ sender: UIPanGestureRecognizer) {
let location = sender.location(in: arView)
guard let entity = arView.entity(at: location) else { return }
guard let parent = entity.parent as? HasAnchoring else { return }
// Translate the entity in the anchor’s local plane
let translation = sender.translation(in: arView)
// ... (convert to 3D movement)
}
สําหรับ การ จัด ระเบียบ อย่าง เข้ม แข็ง จง พิจารณา การ ใช้ [FLT: 25] จาก แพ็กเกจ [FFT:26] ของ เรียล ลิต หรือ [FLT: 27] ที่ มี ลักษณะ ท่า ท่า ทาง ใน ไอOS 16+.
ลักษณะ เฉพาะ ที่ ดี กว่า: การ ดู แล เด็ก ๆ, การ เรียน รู้ ทาง ด้าน ฟิสิกส์, และ การ ร่วม มือ กัน
การเคลื่อนไหว
Fair Kit รองรับภาพเคลื่อนไหวแบบร่าง (จากแฟ้ม USDZ) และภาพเคลื่อนไหวแบบถอดความของ USDZ เพื่อกระตุ้นให้แอนิเมชันที่สร้างโดยสร้างภาพเคลื่อนไหวบนโมเดลที่มีทรัพยากรภาพเคลื่อนไหว:
guard let model = try? ModelEntity.load(named: "dancing_character") else { return }
model.playAnimation(model.availableAnimations[0].repeat(duration: .infinity), transitionDuration: 0.5, startsPaused: false)
นอกจากนี้คุณยังสามารถแปลงภาพ, ความทึบแสง, หรือพารามิเตอร์ที่กําหนดเองได้ โดยใช้วิธีการ ที่เห็นก่อนหน้านี้ สําหรับลําดับที่ซับซ้อน, จงใช้ [FLT: 30] หรือ
จําลองฟิสิกส์
แนบ เพื่อช่วยให้แรงโน้มถ่วง, ชนและแรง:
let box = ModelEntity(mesh: .generateBox(size: 0.1), materials: [SimpleMaterial(color: .red, isMetallic: false)])
box.position = [0, 0.5, 0] // above a plane
let physicsBody = PhysicsBodyComponent(
massProperties: .default,
material: .generate(staticFriction: 0.8, dynamicFriction: 0.5, restitution: 0.3),
mode: .dynamic
)
box.components.set(physicsBody)
let collision = CollisionComponent(shapes: [.generateBox(size: [0.1, 0.1, 0.1])])
box.components.set(collision)
// Add box to anchor
anchor.addChild(box)
กล่องจะหล่นลงบนพื้นเครื่องบิน และตอบสนองต่อการชน วัตถุจับที่ยึดได้ (เช่นผนัง) ควรจะมี
วาระการใช้งานแบบรวม
เปิด โอกาส ให้ ร่วม มือ กัน โดย ตั้ง ทาง เลือก ที่ เกี่ยว ข้อง กับ การ ร่วม มือ กัน ของ กลุ่ม:
config.collaborationEnabled = true
arView.session.run(config)
ส่ง [FLT: 36] ไปให้เพื่อนร่วมชั้นผ่านทางเฟรมเวิร์คเครือข่าย (เช่น Multiper Connective) ภาพถ่ายจริงของอุปกรณ์แต่ละชุดยังคงปรับให้ตรงกัน นี่เหมาะกับเกมหลายเล่นหรือการทบทวนการออกแบบร่วมกัน
การ มอง ใน แง่ ดี สําหรับ ประสบการณ์ ที่ นุ่ม นวล
เอพีต้องการอัตราการกระตุ้นสูง (60 เฟรมต่อวินาที) เพื่อหลีกเลี่ยงอาการเมารถ
- [FLT: 0] ใช้โมเดลแบบต่ํา และปรับแต่งแฟ้ม USDZ ให้เหมาะสม ทําให้จุดยอดนับต่ํา และใช้พื้นผิวแบบบีบอัด (KTX หรือ PNG).
- [FLT: 0]. เปรียบเทียบจํานวนบุคคล ในฉาก ใช้ นับดีบั๊
- [FLT: 0] Miminisis วาด โดยการใช้ instanize - แบ่งปันโมเดลเดียวกัน ข้ามหลาย ๆ องค์กร
- [FLT: 0] Adching effecting คุณภาพ โดยมี อุปกรณ์เก่า (FLT:38).
- [FLT: 0] ใช้ การโหลดรุ่น [FLT: 1] เพื่อป้องกันการปิดกั้นเธรดหลัก โหลดรุ่นในคิวหลัง และนําเสนอเมื่อพร้อม.
- [FLT: 0]. manage the Ar Proup Cycle [[FLT: 1) : เรียก เมื่อแอพไปฉากหลัง และเปลี่ยนรูปแบบการประกอบฉากใหม่.
สําหรับ คํา แนะ นํา ที่ ละเอียด โปรด ดู [FLT: 0] ของ แอปเปิล (FLT: 0) จัด พิมพ์ ประสบการณ์ แบบ อิมเมอร์ แอร์ [FLT: 1) และ [FLT] และ ก่อกวน และ ก่อกวน ประสบการณ์ [FLLT:3] ของ คุณ.
ออกแบบส่วนติดต่อผู้ใช้แบบ ARI
จง ทํา ตาม หลัก การ เหล่า นี้:
- [FLT: 0] สืบค้นเมื่อ Ferface position : วิชัวไลซ์ตรวจพบเครื่องบินที่มีตาราง หรือกรอบรอบ เพื่อผู้ใช้จะได้รู้ว่าวางวัตถุไว้ที่ไหน
- [FLT: 0] แฟชั่นควรรู้สึกเป็นธรรมชาติ : ใช้การจัดรูปโดยตรง (การลาก, การจับต้อง) แทนการควบคุมแบบนามธรรม
- [FLT: 0] คําใบ้แบบมองเห็น [FLT: 1]: เน้นองค์ประกอบโต้ตอบ หรือแสดงเส้นขวางเมื่อผู้ใช้ชี้ตําแหน่งเครื่องบินที่ถูกต้อง
- [FLT: 0] แสงไฮเดล: Fality Kit สามารถประเมินแสงจริงและนําไปใช้กับวัตถุเสมือนได้โดยอัตโนมัติ ใช้ เพื่อปรับความเข้มของแสง
- [FLT: 0] atest in สภาพแวดล้อมต่างๆ: ไฟที่แตกต่างกัน พื้นผิว และขนาดห้อง มีผลกระทบต่อ AR. epimation for an level.
การดีบั๊กและทดสอบเออาร์แอป
Realxidivice test (in อังกฤษ). ใช้[FLT: 0] AR Kit Dicking Factives.
- เปิด [FLT: 42] เพื่อแสดงจุดเด่น จุดกําเนิดของโลก และกรอบลวดฟิสิกส์
- ใช้ ปูมบันทึกเพื่อดูว่าตรวจพบพื้นผิวเมื่อไหร่
- เพิ่ม เพื่อติดตามสถานะและข้อผิดพลาด
- ทําการทดสอบในหลายรุ่นอุปกรณ์ (เช่น ไอโฟน 8 vs. ไอโฟน 14 Pro) เพื่อวัดประสิทธิภาพ
สําหรับการทดสอบ UNI อัตโนมัติ คุณสามารถเยาะเย้ยข้อมูล AR แต่การทดสอบด้วยตนเองยังคงจําเป็นสําหรับความถูกต้อง
รูปแบบการวน
ความเป็นจริง kit นามธรรมส่วนใหญ่ของการพัฒนาทาง AR แต่การสร้างประสบการณ์ที่ขัดเงา ต้องให้ความสนใจกับสถาปัตยกรรม, ปฏิสัมพันธ์, การใช้งาน, และการออกแบบ