2017-07-03 2 views
0

J'utilise le code suivant pour rendre une scène dans scenekit et cela fonctionne parfaitement lorsque le fichier dae est chargé à partir du dossier art.scnassests.SCNScene est nul lors du chargement en utilisant `named:`

let scene = SCNScene(named: "art.scnassets/idle.dae") 

Cependant, je souhaite télécharger l'actif et l'appliquer et je reçois une erreur

let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! 
let scene = SCNScene(named: documentsURL.absoluteString+"idle.dae") 

Un fichier nommé idle.dae existe dans le dossier.

Je reçois l'erreur: fatal error: unexpectedly found nil while unwrapping an Optional value

Comment charger l'actif téléchargé et appliquer dynamiquement? Qu'est-ce que je fais mal? Des pointeurs s'il vous plait? Je suis un Noob à la programmation iOS.

+0

quelqu'un a ajouté et supprimé une réponse .. Si vous voulez bien nous laisser la réponse, je vous en serais reconnaissant. Vous avez quitté le code des meilleures pratiques pour gérer et gérer les actifs. –

Répondre

2

À moins que quelque chose n'ait changé pour iOS 11, vous ne pourrez pas télécharger et instancier un fichier DAE lors de l'exécution sur iOS. Ils sont compressés/compilés au moment de la construction en utilisant un utilitaire nommé scntool. Pouvez-vous utiliser un des formats de fichier pris en charge par Model I/O? Voir https://developer.apple.com/videos/play/wwdc2015/602/?time=320 pour la liste originale (Alembic .abc, Polygon .ply Triangles .stl, WaveFront .obj), et https://developer.apple.com/videos/play/wwdc2017/610/ pour une discussion rapide de USD de Pixar (Universal Scene Description). Si vous êtes coincé avec des fichiers DAE, Frederik Jacques a un article au https://the-nerd.be/2014/11/07/dynamically-load-collada-files-in-scenekit-at-runtime/ qui décrit son expérience de l'ingénierie inverse du pipeline de traitement DAE. Sa technique permet de télécharger des fichiers SCN qui ont été traités à partir de fichiers DAE sur un serveur. Voir aussi Load uncompressed collada file using iOS Scene Kit (avec les commentaires d'une source autorisée) et https://forums.developer.apple.com/thread/38010.

+0

Je peux passer à scn. Puis-je télécharger et appliquer les ressources scn en temps réel? –

+1

Vous pouvez télécharger et utiliser les fichiers .SCN en temps réel si vous suivez le pipeline de Frederik Jacques. Vous devrez exécuter 'scntool' sur un Mac pour convertir chaque fichier .DAE au format .SCN. L'utilisation d'un format pris en charge par le modèle E/S ou Pixar USD serait plus simple. –

+0

Si vous avez des ressources pour rapide sur ce s'il vous plaît laissez-les ici :) Merci –