glTF用QuickLookプラグインを作った / magicien 

image QuickLookプラグインの作り方が分かったところで、早速glTFビューアを作ってみた。
GLTFQuickLook - macOS QuickLook plugin for glTF files


インストール方法

Homebrewでインストールする場合

ターミナルで、
brew cask install gltfquicklook
を実行する

手動でインストールする場合

  1. GitHubのReleasesからzipファイル(GLTFQuickLook_vX.X.X)をダウンロードする
  2. zip内の GLTFQuickLook.qlgenerator を /Library/QuickLook (全ユーザ用)か ~/Library/QuickLook(個別ユーザ用)にコピーする
  3. ターミナルで、qlmanage -r コマンドを実行(あるいは、OS再起動)して、QuickLookプラグインのリロードを行う。

使い方

Finderでファイルを選ぶと、プレビュー欄に3Dモデルが表示されるよ!
ファイル選択中にスペースキーを押すと、大きなプレビュー画面が表示されるよ!
※あくまで静止画なので、ドラッグしてもモデルは動かせないよ!
※マウスでモデルを動かせるよ!

開発メモ

QuickLookプラグインでSwiftのフレームワークを使うには、プラグインにSwiftの標準ライブラリを同梱してあげる必要があるようだ。Xcodeで Build Settings > Build Options > Always Embed Swift Standard Libraries を Yes に設定すればOK。
また、追加したフレームワークが、パッケージの Resources というディレクトリに入ってしまうようなので、Build Settings > Linking > Runpath Search Paths に @loader_path/../Resources/ を追加した。

OS標準のscn用QuickLookだと、モデルをグリグリ動かせるんだけど、どうやっているのかなぁ。
scnファイル形式で書き出してQuickLookのAPIに丸投げしたら動いた!
        GLTFSceneSource *source = [[GLTFSceneSource alloc] initWithURL:(__bridge NSURL*)url options:nil];
        SCNScene *scene = [source sceneWithOptions:nil error:nil];

        NSData *scnData = [NSKeyedArchiver archivedDataWithRootObject:scene];
        CFStringRef contentTypeUTI = CFSTR("com.apple.scenekit.scene");
        
        QLPreviewRequestSetDataRepresentation(preview, (__bridge CFDataRef)(scnData), contentTypeUTI, options);

2017/11/19(Sun) 07:20:37