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

浙公网安备 33010602011771号