Post

Replies

Boosts

Views

Activity

Reply to ITMS-90338: Non-public API usage automatic refuse
Same here, an app that has been releasing updates without issues for months. Even 2 days ago, a testflight version successfully uploaded, but today it just failed after simple (non native) changes. TMS-90338: Non-public API usage - The app references non-public selectors in zinspector3: estimatedProgress, initWithFrame:configuration:, isMainFrame, isPassthrough, navigationType, onSuccess:, removeValuesForKeys:completion:, setNavigationDelegate:, setProcessPool:, targetFrame, userContentController, websiteDataStore. Did apple turn on a setting that bans all these out of the blue? Or did someone add a "not" condition in their code and now everything is flagged?
Jun ’22
Reply to SceneUnderstanding missing from SceneKit?
Have you found a way to use occlusion with SceneKit and Lidar meshes? arView.environment.sceneUnderstanding.options.insert(.occlusion) still doesn't exist in SceneKit, does it? Also, here's some code I'm using to get geometry from ARMeshAnchors: @available(iOS 13.4, *) extension SCNGeometry { /** Constructs an SCNGeometry element from an ARMeshAnchor. if setColors, will set colors automatically on each face based on ARMeshClassification above/ public static func fromAnchor(meshAnchor: ARMeshAnchor, setColors: Bool) - SCNGeometry { let meshGeometry = meshAnchor.geometry let vertices = meshGeometry.vertices let normals = meshGeometry.normals let faces = meshGeometry.faces // use the MTL buffer that ARKit gives us let vertexSource = SCNGeometrySource(buffer: vertices.buffer, vertexFormat: vertices.format, semantic: .vertex, vertexCount: vertices.count, dataOffset: vertices.offset, dataStride: vertices.stride) let normalsSource = SCNGeometrySource(buffer: normals.buffer, vertexFormat: normals.format, semantic: .normal, vertexCount: normals.count, dataOffset: normals.offset, dataStride: normals.stride) // Copy bytes as we may use them later let faceData = Data(bytes: faces.buffer.contents(), count: faces.buffer.length) // create the geometry element let geometryElement = SCNGeometryElement(data: faceData, primitiveType: .of(faces.primitiveType), primitiveCount: faces.count, bytesPerIndex: faces.bytesPerIndex) let geometry : SCNGeometry if setColors { // calculate colors for each indivudal face, instead of the entire mesh var colors = [SIMD4Float]() for i in 0..faces.count { colors.append(meshGeometry.classificationOf(faceWithIndex: i).colorVector) } let colorSource = SCNGeometrySource(data: Data(bytes: &colors, count: colors.count * SIMD4_FLOAT_STRIDE), semantic: .color, vectorCount: colors.count, usesFloatComponents: true, componentsPerVector: 4, bytesPerComponent: FLOAT_STRIDE, dataOffset: 0, dataStride: SIMD4_FLOAT_STRIDE ) geometry = SCNGeometry(sources: [vertexSource, normalsSource, colorSource], elements: [geometryElement]) } else { geometry = SCNGeometry(sources: [vertexSource, normalsSource], elements: [geometryElement]) } return geometry; } } let SIMD4_FLOAT_STRIDE = MemoryLayoutSIMD4Float.stride let FLOAT_STRIDE = MemoryLayoutFloat.stride let VECTOR_WHITE : SIMD4Float = SIMD4Float(1.0, 1.0, 1.0, 1.0) let VECTOR_YELLOW: SIMD4Float = SIMD4Float(1.0, 1.0, 0, 1.0) let VECTOR_BLUE: SIMD4Float = SIMD4Float(0, 0, 1.0, 1.0) @available(iOS 13.4, *) extension ARMeshClassification { var description: String { switch self { case .ceiling: return "Ceiling" case .door: return "Door" case .floor: return "Floor" case .seat: return "Seat" case .table: return "Table" case .wall: return "Wall" case .window: return "Window" case .none: return "None" @unknown default: return "Unknown" } } // make more or less same vertical/horizontal colors as planes var color: UIColor { switch self { case .ceiling: return .blue case .door: return .white case .floor: return .blue case .seat: return .white case .table: return .white case .wall: return .yellow case .window: return .white case .none: return .white @unknown default: return .white } } var colorVector: SIMD4Float { switch self { case .ceiling: return VECTOR_BLUE case .door: return VECTOR_WHITE case .floor: return VECTOR_BLUE case .seat: return VECTOR_WHITE case .table: return VECTOR_WHITE case .wall: return VECTOR_YELLOW case .window: return VECTOR_WHITE case .none: return VECTOR_WHITE @unknown default: return VECTOR_WHITE } } }
Mar ’21