Posts

Post not yet marked as solved
2 Replies
3k Views
Hello guys,How can I build a Core ML that ranks a list with the images that are most similar to an inputed image?Clarifai.ai has this feature, but I wanted to do it in CoreMLthanks!
Posted Last updated
.
Post not yet marked as solved
0 Replies
1.1k Views
Great session! Will the demo app source code be available? tks
Posted Last updated
.
Post not yet marked as solved
0 Replies
770 Views
Hello USD team, Thanks for the great demo USD and Hydra/Storm demo! Is it possible to build an app with USD Hydra/Storm -> SwiftUI interactions? Ex: a car configurator that has: a car as a USD file animations desired on the USD file. SwiftUI button to opens the doors, another button to play a sound, etc? everything rendered in Hydra/Storm. as the demo app Thanks.
Posted Last updated
.
Post not yet marked as solved
1 Replies
763 Views
On Scenekit, using SCNShapewe can create SCN geometry from SwiftUI 2D shapes/beziers:https://developer.apple.com/documentation/scenekit/scnshape Is there an equivalent in RealityKit? Could we use the generate(from:) for that?https://developer.apple.com/documentation/realitykit/meshresource/3768520-generate https://developer.apple.com/documentation/realitykit/meshresource/3768520-generate
Posted Last updated
.
Post not yet marked as solved
1 Replies
1.1k Views
Hey guys,Goal: export morph targets DMaya -> Dae -> SceneKitAE, with morph targets controllersIn Maya everything works fine, morphs with sliders work as intendedWhen exported to FBX/DAE and opened on Xcode, the morphs targets are there, but it places the entire avatar, instead of scaling the specific node (nose, arm, etc).https://gyazo.com/6f36a90ce5292b85a6f7a21b9a8918f2How can I export from Maya to DAE, keeping morphs for each node? Or any other Maya -> Scenekit?Thanks!
Posted Last updated
.
Post not yet marked as solved
5 Replies
4.8k Views
Using Scenekit UIViewRepresentable (code block 1 bellow), we could add a tap gesture recognizer hit test like With the new SceneView for Scenekit/SwiftUI (code block 2), we add a tap gesture recognizer? I found this API, but its not clear how to use it... https://developer.apple.com/documentation/scenekit/sceneview/3607839-ontapgesture import SwiftUI import SceneKit import UIKit import QuartzCore struct SceneView: UIViewRepresentable {          func makeUIView(context: Context) -> SCNView {         let view = SCNView(frame: .zero)         let scene = SCNScene(named: "ship")!         view.allowsCameraControl = true         view.scene = scene         // add a tap gesture recognizer        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))       	view.addGestureRecognizer(tapGesture)         return view     }        func handleTap(_ gestureRecognize: UIGestureRecognizer) {         // retrieve the SCNView        let view = SCNView(frame: .zero)         // check what nodes are tapped         let p = gestureRecognize.location(in: view)         let hitResults = view.hitTest(p, options: [:])         // check that we clicked on at least one object         if hitResults.count > 0 {             // retrieved the first clicked object             let result = hitResults[0]                   // get material for selected geometry element             let material = result.node.geometry!.materials[(result.geometryIndex)]             // highlight it             SCNTransaction.begin()            SCNTransaction.animationDuration = 0.5             // on completion - unhighlight             SCNTransaction.completionBlock = {                 SCNTransaction.begin()                 SCNTransaction.animationDuration = 0.5                                  material.emission.contents = UIColor.black                                  SCNTransaction.commit()             }                          material.emission.contents = UIColor.green                          SCNTransaction.commit()         }     }          func updateUIView(_ view: SCNView, context: Context) {     }     }         import SwiftUI import SceneKit struct ContentView: View {              var scene = SCNScene(named: "ship.scn")                  var cameraNode: SCNNode? {                 scene?.rootNode.childNode(withName: "camera", recursively: false)         }                  var body: some View {                 SceneView(                         scene: scene,                         pointOfView: cameraNode,                         options: []                                      )                 .allowsHitTesting(/*@START_MENU_TOKEN@*/true/*@END_MENU_TOKEN@*/)         } } struct ContentView_Previews: PreviewProvider {     static var previews: some View {         ContentView()     } }
Posted Last updated
.
Post marked as solved
7 Replies
2.2k Views
I am trying to build scover "Ray Tracing with Metal" on iMac Pro 2017, but got this error: 2020-06-25 14:29:35.233058+0200 MTLRaytracingSample-macOS[3602:145531] Failed to set (contentViewController) user defined inspected property on (NSWindow): Ray tracing isn't supported on this device Xcode 12 Big Sur 11.0 Beta (20A4299v) iMac Pro 2017 3,2 GHz 8-Core Intel Xeon W 32 GB 2666 MHz DDR4 Radeon Pro Vega 56 8 GB What is the required hardware configuration?
Posted Last updated
.
Post not yet marked as solved
1 Replies
1.9k Views
Goal: Rewrite CoreGraphics resizing function from iOS (UIImage) to MacOS (NSImage) Problem: Getting error on this line of code: let bytesPerPixel = cgImage.bitsPerPixel / bitsPerComponent Error: Value of type '(UnsafeMutablePointer?, NSGraphicsContext?, [NSImageRep.HintKey : Any]?) - CGImage?' (aka '(OptionalUnsafeMutablePointer, Optional, OptionalDictionaryNSImageRep.HintKey, Any) - Optional') has no member 'bitsPerPixel' Question: how can I replace "cgImage.bitsPerPixel" for something that works with NSImage? iOS: UIImage extension UIImage { // Resizeing using CoreGraphics func resize(to size:CGSize) - UIImage? { let cgImage = self.cgImage! let destWidth = Int(size.width) let destHeight = Int(size.height) let bitsPerComponent = 8 let bytesPerPixel = cgImage.bitsPerPixel / bitsPerComponent let destBytesPerRow = destWidth * bytesPerPixel let context = CGContext(data: nil, width: destWidth, height: destHeight, bitsPerComponent: bitsPerComponent, bytesPerRow: destBytesPerRow, space: cgImage.colorSpace!, bitmapInfo: cgImage.bitmapInfo.rawValue)! context.interpolationQuality = .high context.draw(cgImage, in: CGRect(origin: CGPoint.zero, size: size)) return context.makeImage().flatMap { UIImage(cgImage: $0) } } } MacOS: NSImage extension NSImage { // Resizeing using CoreGraphics func resize(to size:CGSize) - NSImage? { let cgImage = self.cgImage let destWidth = Int(size.width) let destHeight = Int(size.height) let bitsPerComponent = 8 let bytesPerPixel = cgImage.bitsPerPixel / bitsPerComponent let destBytesPerRow = destWidth * bytesPerPixel let context = CGContext(data: nil, width: destWidth, height: destHeight, bitsPerComponent: bitsPerComponent, bytesPerRow: destBytesPerRow, space: cgImage.colorSpace!, bitmapInfo: cgImage.bitmapInfo.rawValue)! context.interpolationQuality = .high context.draw(cgImage, in: CGRect(origin: CGPoint.zero, size: size)) return context.makeImage().flatMap { NSImage(cgImage: $0) } } }
Posted Last updated
.
Post not yet marked as solved
0 Replies
988 Views
Goal: export multiple images with .fileExporter What I did: Code 1 bellow works fine for MacOS, export multiple files. Problem: When I replace for UIImage, it exports only 1 image Question: How can I export multiple images using .fileExporter in iOS? Code 1 bellow works fine for MacOS, export multiple files. import SwiftUI class AppContext: ObservableObject {     @Published var fileSaveDialogShown = false } @main struct FocalApp: App {   @StateObject var appContext = AppContext()   var body: some Scene {     WindowGroup {       ContentView()         .environmentObject(self.appContext)         .fileExporter(           isPresented: $appContext.fileSaveDialogShown,           documents: [             ImageDocument(image: NSImage(named: "1")),             ImageDocument(image: NSImage(named: "2"))           ],           contentType: .jpeg // Match this to your representation in ImageDocument         ) { url in           print("Saved to", url) // [URL]         }     }   } } import SwiftUI import UniformTypeIdentifiers struct ImageDocument: FileDocument {   static var readableContentTypes: [UTType] { [.jpeg, .png, .tiff] }   var image: NSImage   init(image: NSImage?) {     self.image = image ?? NSImage()   }   init(configuration: ReadConfiguration) throws {     guard let data = configuration.file.regularFileContents,           let image = NSImage(data: data)     else {       throw CocoaError(.fileReadCorruptFile)     }     self.image = image   }   func fileWrapper(configuration: WriteConfiguration) throws - FileWrapper {     // You can replace tiff representation with what you want to export     return FileWrapper(regularFileWithContents: image.tiffRepresentation!)   } } struct ContentView: View {          @EnvironmentObject var appContext: AppContext          var body: some View {         VStack {             Button(action: {                 appContext.fileSaveDialogShown.toggle()             }, label: {                 Text("Button")             })         }         .frame(width: 200, height: 200)     } } When I replace for UIImage, it exports only 1 image import SwiftUI class AppContext: ObservableObject {     @Published var fileSaveDialogShown = false } @main struct FocalApp: App {   @StateObject var appContext = AppContext()   var body: some Scene {     WindowGroup {       ContentView()         .environmentObject(self.appContext)         .fileExporter(           isPresented: $appContext.fileSaveDialogShown,           documents: [             ImageDocument(image: UIImage(named: "1")),             ImageDocument(image: UIImage(named: "2"))           ],           contentType: .jpeg // Match this to your representation in ImageDocument         ) { url in           print("Saved to", url) // [URL]         }     }   } } import SwiftUI import UniformTypeIdentifiers struct ImageDocument: FileDocument {   static var readableContentTypes: [UTType] { [.jpeg, .png, .tiff] }   var image: UIImage   init(image: UIImage?) {     self.image = image ?? UIImage()   }   init(configuration: ReadConfiguration) throws {     guard let data = configuration.file.regularFileContents,           let image = UIImage(data: data)     else {       throw CocoaError(.fileReadCorruptFile)     }     self.image = image   }   func fileWrapper(configuration: WriteConfiguration) throws - FileWrapper {     // You can replace tiff representation with what you want to export     return FileWrapper(regularFileWithContents: image.jpegData(compressionQuality: 1)!)   } } struct ContentView: View {          @EnvironmentObject var appContext: AppContext          var body: some View {         VStack {             Button(action: {                 appContext.fileSaveDialogShown.toggle()             }, label: {                 Text("Button")             })         }         .frame(width: 200, height: 200)     } }
Posted Last updated
.
Post not yet marked as solved
1 Replies
1.5k Views
Goal: export a group of images in SwiftUI What I did: I am using the .fileExporter modifier, with the FileDocument struct. Also open to other approach, like . fileMover modifier for example. Problem: When setting the FileDocument for multiple images struct I am getting am error on func fileWrapper (check code bellow). Question: How can I export multiple images in SwiftUI (could be any method)? //file exporter &#9;&#9;.fileExporter(isPresented: $exportFile, document: ImageDocument( &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;image: UIImage(data: product.cover ?? Data())!, &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;image2:&#9;UIImage(data: product.cover2 ?? Data())!) &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;, &#9;&#9;&#9;&#9;&#9; contentType: .jpeg, onCompletion: { (result) in &#9;&#9;&#9;&#9;&#9;&#9;if case .success = result { &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;print("Success") &#9;&#9;&#9;&#9;&#9;&#9;} else { &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;print("Failure") &#9;&#9;&#9;&#9;&#9;&#9;} &#9;&#9;&#9;&#9;}) //export group of images struct ImageDocument: FileDocument { &#9;&#9; &#9;&#9;static var readableContentTypes: [UTType] { [.jpeg] } &#9;&#9;var image: UIImage &#9;&#9;var image2: UIImage &#9;&#9;init( &#9;&#9;&#9;&#9;image: UIImage?, &#9;&#9;&#9;&#9;image2: UIImage? &#9;&#9;) { &#9;&#9;&#9;&#9; &#9;&#9;&#9;&#9;self.image = image ?? UIImage() &#9;&#9;&#9;&#9;self.image2 = image2 ?? UIImage() &#9;&#9;} &#9;&#9; &#9;&#9;init(configuration: ReadConfiguration) throws { &#9;&#9;&#9;&#9;guard let data = configuration.file.regularFileContents, &#9;&#9;&#9;&#9;&#9;&#9;&#9;let image = UIImage(data: data), &#9;&#9;&#9;&#9;&#9;&#9;&#9;let image2 = UIImage(data: data) &#9;&#9;&#9;&#9;else { &#9;&#9;&#9;&#9;&#9;&#9;throw CocoaError(.fileReadCorruptFile) &#9;&#9;&#9;&#9;} &#9;&#9;&#9;&#9;self.image = image &#9;&#9;&#9;&#9;self.image2 = image2 &#9;&#9;} &#9;&#9;func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper { &#9;&#9;&#9;&#9;return FileWrapper(regularFileWithContents: &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;image.jpegData(compressionQuality: 0.80)!, &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;image2.jpegData(compressionQuality: 0.80)!//<----- getting an "extra argument error here &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;) &#9;&#9;} &#9;&#9; }
Posted Last updated
.
Post not yet marked as solved
3 Replies
2.1k Views
I have added a material to my geometry of SCNNode and now I want to add another material to it and set it to blend mode 'multiply'.I tried a lot but unable to find a way to do this. If we blend the texture asmaterial.lightingModel = .physicallyBasedlet image = UIImage(named: "1.PNG")material.multiply.contents = imagematerial.multiply.contentsTransform = SCNMatrix4MakeScale(10, 10, 0)material.multiply.wrapT = .repeatmaterial.multiply.wrapS = .repeatmaterial.multiply.intensity = 1.0when set to “ physically based”. The multiply doesn’t work....any clue what is wrong?thanks!
Posted Last updated
.
Post not yet marked as solved
3 Replies
886 Views
When building a SceneKit Project, Xcode cannot save .scn files and gives a warning: “The document “ship.scn” could not be saved. “ 1- Create SceneKit project 2- Change anything on ship.scn, like background color for ex 3- build 4- Xcode says “The document “ship.scn” could not be saved.
Posted Last updated
.
Post not yet marked as solved
1 Replies
1.3k Views
Goal: Convert FBX to USD (with Morph Targets)Tried:1 - Reality converterFBX to USD worked, but not Morph Targets.From what I researched, Reality converter is using USDPython 0.62, which doesnt support Morph targets.Would be great if apple update Reality converter to suppport 0.64 with Morph Targets.2- USDPython 0.64USDZconvert command for FBX to USD worked, but not Morph TargetsLooks like the script that supports FBX to USD is usdStageWithFbx.py (inside example folder). I have seen no documentation on how to run this script.Can someone from Apple help out with step by step instructions?Cheers to all!
Posted Last updated
.