在SceneKit中设置三维对象的位置和比例

问题描述 投票:0回答:1

我正在尝试制作一个简单的应用程序,通过ARKit将3-D对象放置在场景中。

当我通过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)的指示。

scenekit arkit
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.