目前,我在SceneKit中使用多个模型时遇到问题。我有一个.dae格式的1MB 3d对象文件。当我尝试使用其中的大量(假设有1000个型号)时,应用程序的内存增加,并且应用程序崩溃。我什至使用了场景工具箱内置函数clone()flattenedClone()来制作模型的副本。我该怎么办?

最佳答案

有很多顶点需要推广。您真的需要一次全部加载它们吗?您可以简化模型吗?

创建SCNLevelOfDetail实例会有所帮助。 WWDC 2014 SceneKit幻灯片示例代码中的AAPLSlideLOD.m中对此进行了说明。

NSMutableArray *levelsOfDetail = [NSMutableArray array];

for (NSUInteger i = 1; i < 5; i++) {

    SCNNode *teapotNode = [self.groundNode childNodeWithName:[NSString stringWithFormat:@"Teapot%lu", (unsigned long)i] recursively:YES];
    SCNGeometry *teapot = teapotNode.geometry;

    // Unshare the material because we will highlight the different levels of detail with different colors in the next step
    teapot.firstMaterial = [teapot.firstMaterial copy];

    // Build the SCNLevelOfDetail instance
    SCNLevelOfDetail *levelOfDetail = [SCNLevelOfDetail levelOfDetailWithGeometry:teapot worldSpaceDistance:distances[i - 1]];
    [levelsOfDetail addObject:levelOfDetail];
}

teapot.geometry.levelsOfDetail = levelsOfDetail;

关于ios - 如何使用大量的3D模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34670045/

10-11 21:50