我正在尝试创建一个简单的应用程序,其中通过ARKit将3D对象放置在场景中。
当我通过Objective-C代码构建SCNNode
对象时,该应用程序可以完美运行。但是,当我尝试放置通过.obj文件加载的SCNNode对象时,这些对象的位置和比例似乎很奇怪。
我从.obj文件创建SCNNode的方法如下:
NSString *path = [[NSBundle mainBundle] pathForResource:@"model" ofType:@"obj"];
NSURL *URL = [NSURL fileURLWithPath:path];
MDLAsset *asset = [[MDLAsset alloc] initWithURL:URL];
SCNNode *node = [asset objectAtIndex:0];
现在的问题是,当我将节点的变换设置为检测到的平面上的特征点时,该对象将放置在远高于其应有的位置。此外,它的规模实在是太大了,通过模型编辑软件查看时,它的长度/宽度应该只有几厘米。
我想念什么?我希望您能更好地理解模型(特别是.objs)。
答案 0 :(得分:2)
1-错误的对象比例很可能是由于不同的3D建模软件使用不同的比例单位这一事实造成的。修复它的简单方法是在SceneKit中重新调整节点大小:
yourNode.scale = SCNVector3(x: 0.5, y: 0.5, z: 0.5)
更准确的选择是在3D建模软件中正确缩放模型并再次导出。
2-您的模型未放置在正确位置的原因是枢轴点未正确居中。可以使用您的3D建模软件或Scenekit来完成此操作,如本文所述: https://stackoverflow.com/a/48979201/3975207