Возможно ли программно загрузить файл.scn и запустить его? - ios


1

В основном мне было интересно, можно ли разместить файл .scn в Интернете, загрузить его и сделать его как SCNNode и поместить в sceneView.

И если да, то какие рамки и функции мне нужно будет звонить, чтобы сделать это

Источник
  •  35
  •  1
  • 9 мар 2020 2020-03-09 04:13:59

1 ответ

2

Я сделал что-то подобное в проекте в прошлом году - C. У меня был zip файл, содержащий файл SCN и другие ресурсы. Я использовал AFNetworkng для загрузки zip файла, а затем я де-сжал его в папку документов приложений с помощью SSZipArchive.

В файле JSON у меня был ID формы для узла, который я хотел отобразить.

Я построил путь к ресурсу файлов SCN. Для краткости я удалил некоторый код.

SCNSceneSource *sceneSource = [SCNSceneSource sceneSourceWithURL:documentsDirectoryURL options:nil]; 

newShapeNode = [sceneSource entryWithIdentifier:shapeID withClass:[SCNNode class]];

[parentNode addChildNode:newShapeNode];

Вот способ загрузки - отредактирован.

- (void) fetchRelease:(Album *) album usingProgressIndicator:(UIProgressView *) progressView completionHandler:(void(^)(NSError *error))completionHandler {
    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:configuration];
    [manager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"XXXXXXXX" password:@"XXXXXXX"];

    NSURL *URL = [NSURL URLWithString:album.url];
    NSURLRequest *request = [NSURLRequest requestWithURL:URL];

    NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
        return [self.documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
    } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
        if (error != nil) {
            completionHandler(error);
        } else {
#ifdef DEBUG
            NSLog(@"File downloaded to: %@", filePath);
#endif
            NSError *error;
            [SSZipArchive unzipFileAtPath:filePath.path toDestination:self.documentsDirectoryURL.path overwrite:YES password:nil error:&error];
            if (error != nil) {
                completionHandler(error);
            } else {
                [self updateAlbumRelease:album];  // update the data model
                completionHandler(nil);
            }
        }
    }];

    if (progressView != nil) {
        [progressView setProgressWithDownloadProgressOfTask:downloadTask animated:YES];
    }
    [downloadTask resume];
}

И вот отредактированный файл подкачки:

platform :ios, 9.1

target SOMEAPPNAME do
pod SVProgressHUD
pod SSZipArchive
pod AFNetworking, ~> 3.0
end
  • 9 мар 2020 2020-03-09 04:14:00