2017-12-06 5 views
4

ich Arkit für meine Anwendung verwende und ich versuche, dynamisch-Dateien von Web-Server lädt .scn zuvon URL .scn Datei zu importieren Szene mit Texturen

Hier ist ein Teil meines Codes

let url = URL(string: "http://192.168.0.31:1234/5a27e09cbad20a7a03ad5d80/box/box.scn") 
    if let objectScene = try? SCNScene(url: url!, options: [.overrideAssetURLs: true]) { 
     print("load success") 
     let node = SCNNode() 
     for childNode in objectScene.rootNode.childNodes { 
      node.addChildNode(childNode) 
     } 

     sceneView.scene.rootNode.addChildNode(node) 
    } else { 
     print("error loading") 
    } 

Hier box.scn enthält Texturen. Und ich habe einen Fehler

konnte nicht geladen werden: C3DImage 0x1c00f6f80 src: file: ///var/containers/Bundle/Application/110F7AB6-00F8-4E5B-B843-46551A23CB7F/ar.app/maps/CMU_Split_Face_Running_200x400_bump.jpg [0.000000x0.000000]

Warum Scenekit versucht, diese Texturen aus der lokalen Datei zu laden? Wie kann ich es beheben?

+0

Wenn Sie setzen .overrideAssetURLs auf TRUE sollten Sie auch .assetDirectoryURLs Laden-Option angeben. Aber warum hast du es auf wahr gesetzt? Der Standardwert ist False, wodurch die Assets relativ zu der URL geladen werden, von der Sie die .scn laden. – Xartec

+0

Es funktioniert auch nicht mit False. Das gleiche Ergebnis! – Gor

+0

@Gor wenn Sie dieses Problem behoben haben, bitte aktualisieren Sie es .. Danke – Raj

Antwort

2

Sie sollten die Datei zusammen mit ihren Texturen herunterladen und dann die Szene laden. Beachten Sie, dass sich die .scn-Datei und die Texturen im selben Verzeichnis befinden sollten, sofern Sie keine Ladeoptionen hinzufügen möchten.

Nach einer .scn Datei mit einer Textur vom Server herunterzuladen, habe ich diesen Code um das Objekt anzuzeigen:

do { 
     let scene = try SCNScene(url: URL(fileURLWithPath: "YourDownloadedScnFilePath") , options: nil) 

     // Set the scene to the view 
     sceneView.scene = scene 
    } catch { 
     print("ERROR loading scene") 
    } 
Verwandte Themen