0

.obj" " をロードする一般的な方法は、次のSwift/MDLAssetようなコードを使用します。

import ModelIO

var theURL: URL
var theAsset: MDLAsset

theURL = Bundle.main.url(forResource: "cube", withExtension: "obj")!
theAsset = MDLAsset(url: theURL)

これは、アプリのメインbundle( app/Contents/Resources on内macOS) のファイルに対してのみ機能します。しかし、ファイルシステムのどこからでもアプリにファイルを読み取らせたいと考えています。だから私は次のことを試しました

// 1st attempt
    theURL = URL(string: "file:///Users/me/cube.obj")!
    theAsset = MDLAsset(url: theURL)

// 2nd attempt
    theURL = URL(fileURLWithPath: "/Users/me/cube.obj")
    theAsset = MDLAsset(url: theURL)

// 3rd attempt
    theURL = URL(string: "cube.obj", relativeTo: URL(string:"/Users/me/")!)!
    theAsset = MDLAsset(url: theURL)

それらはすべて失敗しました(エラーメッセージが表示されます"Could not open OBJ file")。"cube.obj"これは、ファイルが下にない場合にのみ発生しますapp/Contents/Resources

私の素朴な結論は、それMDLAssetは近視眼的であるように思われるということです-それは一箇所だけを見ているだけです:app/Contents/Resources.

解決策が必要だと確信しています(常にobjファイルをアプリのリソースにコピーする以外に)。

4

1 に答える 1