Post

Replies

Boosts

Views

Activity

Moving a Rigged character with Armature Bones Question
Is there a way to move a Rigged Character with its Armature Bones in ARKit/RealityKit? I am trying to do this When I try to move using JointTransform the usdz robot provided in https://developer.apple.com/documentation/arkit/arkit_in_ios/content_anchors/capturing_body_motion_in_3d It gives me the following: I see the documentation on Character Rigging etc. But is the movement through armature bones only available through a third party software. Or can it be done in Reality Kit/Arkit/RealityView? https://developer.apple.com/documentation/arkit/arkit_in_ios/content_anchors/rigging_a_model_for_motion_capture
0
0
995
Jul ’23
visionOS ContactPicker Multiple Selection Issue
In visionOS simulator, a ContactPicker for Multiple contacts selection is shown without the Done button. Can I assume this behavior will be OK on an actual Vision Pro? I could not get a list of contacts to be selected. On iOS, the Done button is shown ok as follows: import ContactsUI import Combine struct ContactPickerView: View { @State private var pickedNumber: String? @StateObject private var coordinator = Coordinator() var body: some View { VStack { Button("Open Contact Picker") { openContactPicker() } .padding() Text(pickedNumber ?? "") .padding() } .onReceive(coordinator.$pickedNumber, perform: { phoneNumber in self.pickedNumber = phoneNumber }) .environmentObject(coordinator) } func openContactPicker() { let contactPicker = CNContactPickerViewController() contactPicker.delegate = coordinator let scenes = UIApplication.shared.connectedScenes let windowScenes = scenes.first as? UIWindowScene let window = windowScenes?.windows.first window?.rootViewController?.present(contactPicker, animated: true, completion: nil) } class Coordinator: NSObject, ObservableObject, CNContactPickerDelegate { @Published var pickedNumber: String? func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts: [CNContact]){ print(contacts) contacts.forEach { contact in for number in contact.phoneNumbers { let phoneNumber = number.value print("number is = \(phoneNumber)") } } } } }
0
0
736
May ’24
TaskExecutor and Swift 6 question
I have the following TaskExecutor code in Swift 6 and is getting the following error: //Error Passing closure as a sending parameter risks causing data races between main actor-isolated code and concurrent execution of the closure. May I know what is the best way to approach this? This is the default code generated by Xcode when creating a Vision Pro App using Metal as the Immersive Renderer. Renderer @MainActor static func startRenderLoop(_ layerRenderer: LayerRenderer, appModel: AppModel) { Task(executorPreference: RendererTaskExecutor.shared) { //Error let renderer = Renderer(layerRenderer, appModel: appModel) await renderer.startARSession() await renderer.renderLoop() } } final class RendererTaskExecutor: TaskExecutor { private let queue = DispatchQueue(label: "RenderThreadQueue", qos: .userInteractive) func enqueue(_ job: UnownedJob) { queue.async { job.runSynchronously(on: self.asUnownedSerialExecutor()) } } func asUnownedSerialExecutor() -> UnownedTaskExecutor { return UnownedTaskExecutor(ordinary: self) } static let shared: RendererTaskExecutor = RendererTaskExecutor() }
1
0
854
Dec ’24