iOS开发之SceneKit框架--加载多个模型.dae/.scn文件

本文介绍如何使用SceneKit框架中的SCNGeometry和SCNParametricGeometry类创建3D几何体,并演示了如何从场景文件加载多个节点并将其添加到当前场景中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、通过SCNGeometry或子类SCNParametricGeometry创建

  相关链接:iOS开发之SceneKit框架--SCNGeometry.h  

                     iOS开发之SceneKit框架--SCNParametricGeometry.h

 

2、创建多个场景SCNScene读取其子node

    SCNNode *newNode = [SCNNode node];
    newNode.position = SCNVector3Make(0, 5, 0);
    [self.sCNView.scene.rootNode addChildNode:newNode];
    SCNScene *sceneShip = [SCNScene sceneNamed:@"art.scnassets/ship.scn"];
    for (id node in sceneShip.rootNode.childNodes) {
        [newNode addChildNode:node];
    }

 

转载于:https://www.cnblogs.com/xianfeng-zhang/p/9054939.html

### 错误原因分析 当执行 `patchelf --add-needed` 命令时遇到错误提示: ``` patchelf add-needed command failed: not an ELF executable ``` 这表明目标文件不是有效的 ELF 格式可执行文件或共享库。`patchelf` 要求操作对象必须是标准的 ELF 文件,例如动态库(`.so`)或可执行程序。如果尝试对非 ELF 文件(如静态库 `.a`、文本文件或其他格式)执行此操作,就会出现该错误 [^1]。 ### 检查文件类型的方法 可以通过 `file` 命令检查目标文件是否为 ELF 类型: ```bash file liba.so ``` 正常输出应类似于: ``` liba.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=... ``` 如果不是 ELF 格式,则不能使用 `patchelf` 对其进行修改 [^1]。 ### 解决方案 #### 确保目标文件为 ELF 格式的动态库 确认操作的是 `.so` 文件而不是 `.a` 文件。如果是静态库(`.a`),则无法直接添加运行时依赖库,因为它们在链接阶段被合并进最终的可执行文件中 [^1]。 若确实需要将某个库作为运行时依赖引入,应确保主库是动态库(`.so`)并重新构建它时加入对应依赖。 #### 使用正确的编译方式生成 ELF 动态库 如果尚未正确生成 `.so` 文件,可以使用如下命令重新编译生成: ```bash gcc -shared -fPIC -o liba.so source.c ``` 这样会生成符合 ELF 标准的共享库文件,可用于后续 `patchelf` 操作 [^1]。 #### 验证 patchelf 操作是否成功 在完成 `--add-needed` 操作后,可以使用 `readelf` 检查 `.dynamic` 段是否新增了依赖项: ```bash readelf -d liba.so | grep NEEDED ``` 预期输出应包含新增的 `libb.so` 条目,表示依赖关系已正确写入 。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值