.obj 文件未加载所有子网格名称

Posted

技术标签:

【中文标题】.obj 文件未加载所有子网格名称【英文标题】:.obj file is not loading all the child mesh name 【发布时间】:2018-07-10 15:29:14 【问题描述】:

在这里,我将 SceneKit 与 .obj 模型一起使用。我需要一些帮助才能使用 SceneKit.ModelIO 获取部件/子网格名称。

是否可以获得 .obj 的所有网格名称?请检查以下代码。

     // Here Obj url
    let url = "https://s3.ap-south-1.amazonaws.com/p9-platform/DAE/barware_s11624.obj"    
    let asset = MDLAsset(url: url as URL)
    let scene = SCNScene(mdlAsset: asset)
    let mesh = asset.object(at:0) as! MDLMesh
    let vertexBuffer = mesh.vertexBuffers[0]
    let descripter = mesh.vertexDescriptor
    let submeshes = mesh.submeshes

    for index in 0...(submeshes?.count)! - 1

     let submesh0 = submeshes![index] as! MDLSubmesh

     let singleMesh = MDLMesh(vertexBuffer: vertexBuffer, vertexCount: mesh.vertexCount, descriptor: descripter, submeshes:  [submesh0])

     let geometry = SCNGeometry(mdlMesh: singleMesh)

     let Node = SCNNode(geometry: geometry)

     scene.rootNode.addChildNode(Node)
   
   print("scene ===>\(scene.rootNode)")  

   //Print scene Result in Xcode console               
   scene ===><SCNNode: 0x1c41ef300 | 7 children>

   print("object.childNodes==>\(object.childNodes)")

   //Print object.childNodes Result  

这是 Xcode 控制台中的输出。

object.childNodes==>[<SCNNode: 0x1c41e9300 'default' | geometry=<SCNGeometry: 0x1c5339280 'default' | 6 elements> | no child>, <SCNNode: 0x1c41f5a00 | geometry=<SCNGeometry: 0x1c5339320 'Obj1'> | no child>, <SCNNode: 0x1c41f5b00 | geometry=<SCNGeometry: 0x1c53393c0 'Obj2'> | no child>, <SCNNode: 0x1c41f5d00 | geometry=<SCNGeometry: 0x1c5339460 'Obj3'> | no child>, <SCNNode: 0x1c41f5e00 | geometry=<SCNGeometry: 0x1c5339500 'Obj4'> | no child>, <SCNNode: 0x1c41f5f00 | geometry=<SCNGeometry: 0x1c53395a0 'Obj5'> | no child>, <SCNNode: 0x1c01f3c00 | geometry=<SCNGeometry: 0x1c0522260 'Obj6'> | no child>]

我想要同样的输出。

【问题讨论】:

【参考方案1】:

与this question 一样,我的建议是使用Assimp 来加载文件,它应该加载所有数据并让您更好地控制如何处理它。

【讨论】:

以上是关于.obj 文件未加载所有子网格名称的主要内容,如果未能解决你的问题,请参考以下文章

Extjs - 在添加带有商店数据的网格面板时获取“类型错误:名称未定义”

来自与主网格相同数据的子网格

Aggrid vue i18n:更改语言后不刷新网格标题名称未翻译

Three.js 子网格位置总是返回 (0,0,0)

网格未作为惩罚项加载。

作为 flexbox 的子元素的 CSS 网格未按预期运行