Как экспортировать OBJ с текстурой (JPG + MTL) из сканирования Arkit LiDAR в iOS?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как экспортировать OBJ с текстурой (JPG + MTL) из сканирования Arkit LiDAR в iOS?

Сообщение Anonymous »

Я использую Arkit с RealityKit для сканирования объектов с использованием LiDAR на iOS. Я могу сгенерировать файл OBJ от Armeshanchors, но мне не хватает экспорта текстуры (JPG + MTL). < /P>
Что у меня есть до сих пор: < /p>
  • Успешно захватывая сетку с использованием armeshanchor. < /li>
    Преобразование сетки в mdlasset и экспорт .obj. < /li>
    Мне нужна помощь в создании. jpg текстура и связывание ее с файлом .mtl. < /li>
    < /ul>
    private func exportScannedObject() {
    guard
    let camera = arView.session.currentFrame?.camera
    else { return }

    func convertToAsset(meshAnchors: [ARMeshAnchor]) -> MDLAsset? {
    guard let device = MTLCreateSystemDefaultDevice() else {return nil}

    let asset = MDLAsset()

    for anchor in meshAnchors {
    let mdlMesh = anchor.geometry.toMDLMesh(device: device, camera: camera, modelMatrix: anchor.transform)

    // Apply a gray material to the mesh
    let material = MDLMaterial(name: "GrayMaterial", scatteringFunction: MDLScatteringFunction())
    material.setProperty(MDLMaterialProperty(name: "baseColor", semantic: .baseColor, float3: SIMD3(0.5, 0.5, 0.5))) // Gray color
    if let submeshes = mdlMesh.submeshes as? [MDLSubmesh] {
    for submesh in submeshes {
    submesh.material = material
    }
    }

    asset.add(mdlMesh)
    }

    return asset
    }

    func export(asset: MDLAsset) throws -> URL {
    let directory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
    let url = directory.appendingPathComponent("scaned.obj")

    if MDLAsset.canExportFileExtension("obj") {
    do {
    try asset.export(to: url)

    return url
    } catch let error {
    fatalError(error.localizedDescription)
    }
    } else {
    fatalError("Can't export USD")
    }
    }

    if let meshAnchors = arView.session.currentFrame?.anchors.compactMap({ $0 as? ARMeshAnchor }),
    let asset = convertToAsset(meshAnchors: meshAnchors) {
    do {
    let url = try export(asset: asset)
    showScanPreview(url)
    } catch {
    print("export error")
    }
    }
    }
    < /code>
    extension ARMeshGeometry {
    func vertex(at index: UInt32) -> SIMD3 {
    assert(vertices.format == MTLVertexFormat.float3, "Expected three floats (twelve bytes) per vertex.")
    let vertexPointer = vertices.buffer.contents().advanced(by: vertices.offset + (vertices.stride * Int(index)))
    let vertex = vertexPointer.assumingMemoryBound(to: SIMD3.self).pointee
    return vertex
    }

    // helps from StackOverflow:
    // https://stackoverflow.com/questions/610 ... with-lidar
    func toMDLMesh(device: MTLDevice, camera: ARCamera, modelMatrix: simd_float4x4) -> MDLMesh {
    func convertVertexLocalToWorld() {
    let verticesPointer = vertices.buffer.contents()

    for vertexIndex in 0..
    What I Need Help With:

    How do I generate the JPG texture from the AR scene?
  • How do I save an MTL file linking the OBJ model to the texture?
  • How can I correctly apply the texture when viewing the OBJ in an external 3D viewer?
I appreciate any guidance, including sample code or resources!
If you have a complete working solution, I’d love to discuss further via private channels.

Подробнее здесь: https://stackoverflow.com/questions/794 ... can-in-ios
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • ОШИБКА: Ошибка сканирования Checkmarx: нет файлов для сканирования в Jenkins во время сканирования CxSAST
    Anonymous » » в форуме JAVA
    0 Ответы
    61 Просмотры
    Последнее сообщение Anonymous
  • ОШИБКА: Ошибка сканирования Checkmarx: нет файлов для сканирования в Jenkins во время сканирования CxSAST
    Anonymous » » в форуме JAVA
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Как загрузить obj-файл с помощью mtl в Mitsuba
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Как загрузить файл obj с помощью MTL в Mitsuba
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Проверьте, есть ли на устройстве iOS LiDAR в Swift
    Anonymous » » в форуме IOS
    0 Ответы
    67 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»