RoomPlan

RSS for tag

Create parametric 3D scans of rooms and room-defining objects.

Posts under RoomPlan tag

200 Posts

Post

Replies

Boosts

Views

Activity

Getting device location in ARWorldMap
I am using Roomplan APi to make a 2d floorplan. I am trying to make it possible to scan multiple rooms by scanning one room after the other. Does anybody know if it is possible to get the device location in the ARWorldMap so that it can be saved and the loaded back up when a new room is to be scanned and it will know where it is in the ARWorldMap? I know it can scan the surrounding area to find it location.
1
0
949
Dec ’22
Working group?
Anyone interested in working on a few things together? I have a few questions I'm interested in answering and if there are a couple of folks that would like to do a couple of small collaborative investigations, it would be great to chat.. Current open questions: What is required to import into CAD software like Rhino or Sketchup? What is the dimensional accuracy of the output? Are features tagged relationally? i.e. does a window know which wall it's in? Are there similar libraries that can help accomplish similar things from the outside? Photogrammetry based solutions? Shoot me a note if you'd be interested in discussing!
3
0
940
Dec ’22
Can I use RWorld map together with roomCaptureView?
Does anybody know if I can use the ARWorld map together with roomCaptureView? So that I can scan and save one Room, then save the data from scan, save the ARWorldmap and then make a new roomCaptureView.captureSession to scan the new room? Right know I am first calling:  roomCaptureView?.captureSession.run(configuration: roomCaptureSessionConfig) and then roomCaptureView.captureSession.arSession.run(roomCaptureViewARconfigurationFunc) with the saved ARWorldMap.   @IBAction func saveWorldMapAction(_ sender: Any) {         roomCaptureView.captureSession.arSession.getCurrentWorldMap { worldMap, error in             guard let map = worldMap             else { self.worldMapLabel.text = "error \(error!.localizedDescription) "; return }             do {                 let data = try NSKeyedArchiver.archivedData(withRootObject: map, requiringSecureCoding: true)                 try data.write(to: self.mapSaveURL, options: [.atomic])                 DispatchQueue.main.async {                     self.loadWordMapButton.isHidden = false                     self.loadWordMapButton.isEnabled = true                     self.worldMapLabel.text = "Map Saved "                     print(" map saved")                 }             } catch {                 fatalError("Can't save map: \(error.localizedDescription)")             }         }     } @IBAction func AddNewRoomBtnPressed(_ sender: UIButton) {         sceneViewFloorPlan.alpha = 0         stopSession()         startSession()         oadWordMap() } private func startSession() {         isScanning = true         print("start roomCaptureView")         roomCaptureView?.captureSession.run(configuration: roomCaptureSessionConfig)         setActiveNavBar()     } var defaultConfiguration: ARWorldTrackingConfiguration {     let configuration = ARWorldTrackingConfiguration()     configuration.environmentTexturing = .none     return configuration } func loadWordMap(){     let worldMap: ARWorldMap = {         guard let data = mapDataFromFile             else { fatalError("Map data should already be verified to exist before Load button is enabled.") }         do {             guard let worldMap = try NSKeyedUnarchiver.unarchivedObject(ofClass: ARWorldMap.self, from: data)                 else { fatalError("No ARWorldMap in archive.") }             return worldMap         } catch {             fatalError("Can't unarchive ARWorldMap from file data: \(error)")         }     }()     let configuration = self.defaultConfiguration // this app's standard world tracking settings     configuration.initialWorldMap = worldMap     guard let roomCaptureViewARconfigurationFunc = roomCaptureView.captureSession.arSession.configuration else {         return }     isScanning = true    roomCaptureView.captureSession.arSession.run(roomCaptureViewARconfigurationFunc) setActiveNavBar() }
0
0
801
Nov ’22
How to pause scanning?
I'm using: RoomCaptureView: to scan my room with the device's camera. RoomCaptureViewDelegate, RoomCaptureSessionDelegate: to receive events, data, and process data My wish: I want after scanning for a period of time t, to stop the scanning process (keep the boxes in the real environment, don't draw new boxes, don't have to call the stop() function) Does Roomplan API currently do this, if so, what are the steps? ** As far as I know, there is a RoomCaptureSession available for users to handle their own ArSession, but I don't want to use this.
0
0
635
Nov ’22
RoomPlan: Use the transform and dimensions to generate 4 corner points
I'm trying to use data returned from the RoomCaptureSession delegate to draw four corners of a door in SceneKit. The CapturedRoom.Surface class has Dimensions and Transform members. I was told in the WWDC 2022 RoomPlan Slack lounge: "You can use transform and dimensions parameters to draw lines. The 4 corners can be inferred from those 2 parameters: the first column of the transform is the "right" vector, and second is the "up" vector. The fourth column is the position of the wall/door/opening/window/object Combining those unit vectors with the dimensions vector will give you the corners." So I think this is a basic vector question. I'm not sure what is meant by "Combining those unit vectors with the dimensions vector". I've tried a few things, but I'm not sure how to go about this.
5
1
2.6k
Nov ’22
Is it possible to translate RoomCaptureView user instructions?
I've been working on an app that uses the new RoomPlan API and I'm looking for a way to translate the "Scan Guidance" or User Instructions that are overlayed on the RoomCaptureView when the user is scanning a room. Instructions like "Move device to start" and "Move further away" are in English but I'd like them to be in Dutch in my case. I can't seem to find a way to provide translations to these instructions myself and setting the device region or language doesn't seem to change anything. Is this even possible currently?
1
1
1.3k
Oct ’22
Roomplan - captureSession( didAdd) for surfaces seems to be broken in newest beta
While playing around with the Roomplan example I noticed that in the iOS 16 beta 4 the captureSession(didAdd) is also called with updated surfaces (openings, doors, windows....) in the room parameter, which previously only contained newly added. (I was using the captureSession(didChange) for updating, but that isn't called for surfaces any more). I also noticed a multitude of runtime warnings about existing UUIDs of surfaces while running the standard example on a iPhone 13 pro, downloaded from the WWDC 2022 page https://developer.apple.com/documentation/roomplan/create_a_3d_model_of_an_interior_room_by_guiding_the_user_through_an_ar_experience. (in the form of [ScanUI] Opening scanItem with UUID 2A9AAC74-EB4F-4394-A49A-148E417D95AD already exists)  Objects still work fine (so only the new ones get passed in the didAdd function delegate) I filed a bug report, would be interested if I were the only one noticing this.My workaround is to check each surface identifier with a local dictionary (additional housekeeping to select either add or update surface in the visualiser).
2
0
1.2k
Oct ’22
Do we need to pay for getting Room Plan Feature ?
We are going to integrate Room Plan Feature to our existing application. I didn't find any pricing plan section for Room Plan feature. Is this feature totally free or is it has a pricing plan? If it has pricing plan, can someone share about it ? Room Plan feature is not Beta version right? Can someone advise us? I really appreciate your feedback and help.
1
0
910
Oct ’22
RoomPlan Error in Exporting
I'm getting this error when trying to export the CapturedRoom in RoomPlan API: Thread 1: EXC_BAD_ACCESS (code=1, address=0x0) error: memory read failed for 0x0 This error happens even whenI use the example app given by Apple. So I don't think it's due to any error in my code.
2
1
1.2k
Oct ’22
Recreating RoomPlan from CapturedRoom.walls with SceneKit
I am trying to use RoomPlan to create a rendering of a room without any objects inside. To do this I'm taking the list of walls given by CapturedRoom.walls and creating a series of SCNNodes using the information given. This way I can modify the room at-will in the app. However, the walls are showing up in random places? Not sure where I am going wrong: //roomScan is a CapturedRoom object, scene is an SCNScene for i in 0...(roomScan.walls.endIndex-1) { //Generate new wall geometry let scannedWall = roomScan.walls[i] let length = scannedWall.dimensions.x let width = 0.2 let height = scannedWall.dimensions.y let newWall = SCNBox( width: CGFloat(width), height: CGFloat(height), length: CGFloat(length), chamferRadius: 0 ) newWall.firstMaterial?.diffuse.contents = UIColor.white newWall.firstMaterial?.transparency = 0.5 //Generate new SCNNode let newNode = SCNNode(geometry: newWall) newNode.simdTransform = scannedWall.transform scene.rootNode.addChildNode(newNode) }
2
0
1.6k
Oct ’22
Is it possible to change the Underlying arSession configuration of RoomPlan?
Want to access the depth data while using RoomPlan. Would like to know if its possible to change the underlying arSession Configuration in order to do so?
Replies
0
Boosts
0
Views
668
Activity
Dec ’22
Getting device location in ARWorldMap
I am using Roomplan APi to make a 2d floorplan. I am trying to make it possible to scan multiple rooms by scanning one room after the other. Does anybody know if it is possible to get the device location in the ARWorldMap so that it can be saved and the loaded back up when a new room is to be scanned and it will know where it is in the ARWorldMap? I know it can scan the surrounding area to find it location.
Replies
1
Boosts
0
Views
949
Activity
Dec ’22
How can I determine the compass bearing of walls?
Given a RoomPlan model, how can I determine the exposure or orientation of walls?
Replies
0
Boosts
0
Views
745
Activity
Dec ’22
Will RoomPlan be able to avoid objects like sofas?
Will RoomPlan be able to avoid objects like sofas?
Replies
0
Boosts
0
Views
1.1k
Activity
Dec ’22
Will RoomPlan be able to avoid objects like sofas?
Will RoomPlan be able to avoid objects like sofas?
Replies
0
Boosts
0
Views
1.1k
Activity
Dec ’22
Can RoomPlan identify specifically amongst other features in a room?
Can RoomPlan identify countertops (specifically) amongst other features in a room?
Replies
0
Boosts
0
Views
1.2k
Activity
Dec ’22
Working group?
Anyone interested in working on a few things together? I have a few questions I'm interested in answering and if there are a couple of folks that would like to do a couple of small collaborative investigations, it would be great to chat.. Current open questions: What is required to import into CAD software like Rhino or Sketchup? What is the dimensional accuracy of the output? Are features tagged relationally? i.e. does a window know which wall it's in? Are there similar libraries that can help accomplish similar things from the outside? Photogrammetry based solutions? Shoot me a note if you'd be interested in discussing!
Replies
3
Boosts
0
Views
940
Activity
Dec ’22
Can I use RWorld map together with roomCaptureView?
Does anybody know if I can use the ARWorld map together with roomCaptureView? So that I can scan and save one Room, then save the data from scan, save the ARWorldmap and then make a new roomCaptureView.captureSession to scan the new room? Right know I am first calling:  roomCaptureView?.captureSession.run(configuration: roomCaptureSessionConfig) and then roomCaptureView.captureSession.arSession.run(roomCaptureViewARconfigurationFunc) with the saved ARWorldMap.   @IBAction func saveWorldMapAction(_ sender: Any) {         roomCaptureView.captureSession.arSession.getCurrentWorldMap { worldMap, error in             guard let map = worldMap             else { self.worldMapLabel.text = "error \(error!.localizedDescription) "; return }             do {                 let data = try NSKeyedArchiver.archivedData(withRootObject: map, requiringSecureCoding: true)                 try data.write(to: self.mapSaveURL, options: [.atomic])                 DispatchQueue.main.async {                     self.loadWordMapButton.isHidden = false                     self.loadWordMapButton.isEnabled = true                     self.worldMapLabel.text = "Map Saved "                     print(" map saved")                 }             } catch {                 fatalError("Can't save map: \(error.localizedDescription)")             }         }     } @IBAction func AddNewRoomBtnPressed(_ sender: UIButton) {         sceneViewFloorPlan.alpha = 0         stopSession()         startSession()         oadWordMap() } private func startSession() {         isScanning = true         print("start roomCaptureView")         roomCaptureView?.captureSession.run(configuration: roomCaptureSessionConfig)         setActiveNavBar()     } var defaultConfiguration: ARWorldTrackingConfiguration {     let configuration = ARWorldTrackingConfiguration()     configuration.environmentTexturing = .none     return configuration } func loadWordMap(){     let worldMap: ARWorldMap = {         guard let data = mapDataFromFile             else { fatalError("Map data should already be verified to exist before Load button is enabled.") }         do {             guard let worldMap = try NSKeyedUnarchiver.unarchivedObject(ofClass: ARWorldMap.self, from: data)                 else { fatalError("No ARWorldMap in archive.") }             return worldMap         } catch {             fatalError("Can't unarchive ARWorldMap from file data: \(error)")         }     }()     let configuration = self.defaultConfiguration // this app's standard world tracking settings     configuration.initialWorldMap = worldMap     guard let roomCaptureViewARconfigurationFunc = roomCaptureView.captureSession.arSession.configuration else {         return }     isScanning = true    roomCaptureView.captureSession.arSession.run(roomCaptureViewARconfigurationFunc) setActiveNavBar() }
Replies
0
Boosts
0
Views
801
Activity
Nov ’22
RoomPlan and object color
Hi. We are trying to implement RoomPlan. Is it possible to parse the color of an object? What is the minimum operating system version supported? Thanks
Replies
1
Boosts
0
Views
1k
Activity
Nov ’22
About roomplan implementation
How is RoomPlan implemented in the kit? Which machine learning algorithm and network arch if dl is used? A simple description is appreciated or some related materials.
Replies
1
Boosts
0
Views
1k
Activity
Nov ’22
How to pause scanning?
I'm using: RoomCaptureView: to scan my room with the device's camera. RoomCaptureViewDelegate, RoomCaptureSessionDelegate: to receive events, data, and process data My wish: I want after scanning for a period of time t, to stop the scanning process (keep the boxes in the real environment, don't draw new boxes, don't have to call the stop() function) Does Roomplan API currently do this, if so, what are the steps? ** As far as I know, there is a RoomCaptureSession available for users to handle their own ArSession, but I don't want to use this.
Replies
0
Boosts
0
Views
635
Activity
Nov ’22
How to determine position within a wall where there is a door or window
I see from the docs where I can see edges of things, dimensions of things, but when there is a wall with a door or even a window, is there a way to pull the position from the captured room model or session at all?
Replies
1
Boosts
0
Views
1.1k
Activity
Nov ’22
RoomPlan: Use the transform and dimensions to generate 4 corner points
I'm trying to use data returned from the RoomCaptureSession delegate to draw four corners of a door in SceneKit. The CapturedRoom.Surface class has Dimensions and Transform members. I was told in the WWDC 2022 RoomPlan Slack lounge: "You can use transform and dimensions parameters to draw lines. The 4 corners can be inferred from those 2 parameters: the first column of the transform is the "right" vector, and second is the "up" vector. The fourth column is the position of the wall/door/opening/window/object Combining those unit vectors with the dimensions vector will give you the corners." So I think this is a basic vector question. I'm not sure what is meant by "Combining those unit vectors with the dimensions vector". I've tried a few things, but I'm not sure how to go about this.
Replies
5
Boosts
1
Views
2.6k
Activity
Nov ’22
Is it possible to translate RoomCaptureView user instructions?
I've been working on an app that uses the new RoomPlan API and I'm looking for a way to translate the "Scan Guidance" or User Instructions that are overlayed on the RoomCaptureView when the user is scanning a room. Instructions like "Move device to start" and "Move further away" are in English but I'd like them to be in Dutch in my case. I can't seem to find a way to provide translations to these instructions myself and setting the device region or language doesn't seem to change anything. Is this even possible currently?
Replies
1
Boosts
1
Views
1.3k
Activity
Oct ’22
Can captured data with RoomPlan exported to other formats?
I want to export captured room data to formats like glb/gltf. Are there any ways to do this using swift or other libraries?
Replies
0
Boosts
0
Views
703
Activity
Oct ’22
Roomplan - captureSession( didAdd) for surfaces seems to be broken in newest beta
While playing around with the Roomplan example I noticed that in the iOS 16 beta 4 the captureSession(didAdd) is also called with updated surfaces (openings, doors, windows....) in the room parameter, which previously only contained newly added. (I was using the captureSession(didChange) for updating, but that isn't called for surfaces any more). I also noticed a multitude of runtime warnings about existing UUIDs of surfaces while running the standard example on a iPhone 13 pro, downloaded from the WWDC 2022 page https://developer.apple.com/documentation/roomplan/create_a_3d_model_of_an_interior_room_by_guiding_the_user_through_an_ar_experience. (in the form of [ScanUI] Opening scanItem with UUID 2A9AAC74-EB4F-4394-A49A-148E417D95AD already exists)  Objects still work fine (so only the new ones get passed in the didAdd function delegate) I filed a bug report, would be interested if I were the only one noticing this.My workaround is to check each surface identifier with a local dictionary (additional housekeeping to select either add or update surface in the visualiser).
Replies
2
Boosts
0
Views
1.2k
Activity
Oct ’22
Do we need to pay for getting Room Plan Feature ?
We are going to integrate Room Plan Feature to our existing application. I didn't find any pricing plan section for Room Plan feature. Is this feature totally free or is it has a pricing plan? If it has pricing plan, can someone share about it ? Room Plan feature is not Beta version right? Can someone advise us? I really appreciate your feedback and help.
Replies
1
Boosts
0
Views
910
Activity
Oct ’22
ARKit RoomPlan API Scanning Session Extending or pausing
Has anyone tried, if it's even possible, to pause or extend the scan?
Replies
0
Boosts
0
Views
1.4k
Activity
Oct ’22
RoomPlan Error in Exporting
I'm getting this error when trying to export the CapturedRoom in RoomPlan API: Thread 1: EXC_BAD_ACCESS (code=1, address=0x0) error: memory read failed for 0x0 This error happens even whenI use the example app given by Apple. So I don't think it's due to any error in my code.
Replies
2
Boosts
1
Views
1.2k
Activity
Oct ’22
Recreating RoomPlan from CapturedRoom.walls with SceneKit
I am trying to use RoomPlan to create a rendering of a room without any objects inside. To do this I'm taking the list of walls given by CapturedRoom.walls and creating a series of SCNNodes using the information given. This way I can modify the room at-will in the app. However, the walls are showing up in random places? Not sure where I am going wrong: //roomScan is a CapturedRoom object, scene is an SCNScene for i in 0...(roomScan.walls.endIndex-1) { //Generate new wall geometry let scannedWall = roomScan.walls[i] let length = scannedWall.dimensions.x let width = 0.2 let height = scannedWall.dimensions.y let newWall = SCNBox( width: CGFloat(width), height: CGFloat(height), length: CGFloat(length), chamferRadius: 0 ) newWall.firstMaterial?.diffuse.contents = UIColor.white newWall.firstMaterial?.transparency = 0.5 //Generate new SCNNode let newNode = SCNNode(geometry: newWall) newNode.simdTransform = scannedWall.transform scene.rootNode.addChildNode(newNode) }
Replies
2
Boosts
0
Views
1.6k
Activity
Oct ’22