作为后续行动:
将模型导入SceneKit时,我想添加.MTL 纹理和.OBJ 文件
使用这样的代码:
let scene = SCNScene(named: "rose.obj")
但是我拥有的纹理文件存储在DOCUMENTS目录(iOS)中。
如何在Objective-C中调用这个函数?
作为后续行动:
将模型导入SceneKit时,我想添加.MTL 纹理和.OBJ 文件
使用这样的代码:
let scene = SCNScene(named: "rose.obj")
但是我拥有的纹理文件存储在DOCUMENTS目录(iOS)中。
如何在Objective-C中调用这个函数?
要在 Xcode 中使用带纹理的 OBJ 场景,您需要包含三个文件.obj
:.mtl
和.jpg
. 要加载.obj
具有相应纹理的场景,所有三个捆绑文件必须位于同一Documents目录中。以下是使用 Objective-C 应用程序时代码的外观:
#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
SCNView *sceneView = (SCNView *)self.view;
NSArray<NSURL *> *urls = [NSFileManager.defaultManager
URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask];
NSURL *sceneInDocumentsDirectory = [urls[0]
URLByAppendingPathComponent:@"file.obj"];
SCNScene *scene = [SCNScene sceneWithURL:sceneInDocumentsDirectory
options:Nil
error:Nil];
sceneView.scene = scene;
sceneView.allowsCameraControl = YES;
sceneView.autoenablesDefaultLighting = YES;
sceneView.backgroundColor = [UIColor blackColor];
NSLog(@"%@", sceneInDocumentsDirectory);
}
@end
如您所知,.mtl
文件是基于 ASCII 定义材料的.obj
文件。
这是它的样子:
newmtl phong1SG
illum 4
Kd 0.00 0.00 0.00
Ka 0.00 0.00 0.00
Tf 1.00 1.00 1.00
map_Kd texture.jpeg
Ni 1.00
Ks 0.50 0.50 0.50
Ns 18.00