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
}
}
}
Post
Replies
Boosts
Views
Activity
How can we fix this from code in WKWebKit?
Any updates? Canvas in WKWebView are unusable.
Any updates? 15.2 is near and this is still broken.
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?
Apple solved the issue, thanks.