var parseObj = function (name, objStr, mtlStr, imgStrObj) {
      var modelMap = ht.Default.parseObj(objStr, mtlStr, {
        center: true,
        cube: true,
      
        reverseFlipMtls: '*'
      })

      var array = [],
        model,
        mi
      for (var k in modelMap) {
        model = modelMap[k]
        array.push(model)

        mi = model.image
        model.image = null

        ht.Default.setShape3dModel(k, model)

        if (!mi) continue
        for (var i in imgStrObj) {
          if (mi.indexOf(i) >= 0) {
            model.image = i
          }
        }
      }

      ht.Default.setShape3dModel(name, array)

      var rawS3 = model.rawS3
      var key = 500 / rawS3[0]
      rawS3 = rawS3.map(function (v) {
        return key * v
      })

      return rawS3
    }

    const ShowView = async (zp: File) => {
      var objStr, mtlStr
      var imgStrObj = {}
      let len = 0
      JSZip.loadAsync(zp).then(function (zip) {
        zip.forEach((relativePath: string, file: JSZip.JSZipObject) => {
          len++
          let blobs = false
          if (file.name.indexOf('.obj') > 0 || file.name.indexOf('.mtl') > 0)
            blobs = true

          zip
            .file(file.name)
            .async(blobs ? 'text' : 'base64')
            .then(
              function success(text) {
                len--
                debugger
                if (file.name.indexOf('.obj') > 0) objStr = text
                else if (file.name.indexOf('.mtl') > 0) mtlStr = text
                else
                  ht.Default.setImage(
                    file.name,
                    (imgStrObj[file.name] = 'data:image/png;base64,' + text)
                  )
                if (len <= 0) {
                  dataModel.clear()

                  var rawS3 = parseObj('2121', objStr, mtlStr, imgStrObj)

                  var node = new ht.Node()
                  node.s({
                    shape3d: '2121',
                    '3d.selectable': false
                  })
                  node.s3(rawS3)
                  node.p3(0, rawS3[1] / 2, 0)
                  dataModel.add(node)
                }
              },
              function error(e) {
                len--
                console.log(e)
              }
            )
        })

      

        
      })
    }

 

视频预览 https://live.csdn.net/v/213136

 

posted on 2022-05-31 16:29  金科许俊  阅读(92)  评论(0)    收藏  举报