简介由于业务需要,需要显示3D文件。之前写过一个three.js的方案来渲染3D数据。本来以为可以直接用,但是甲方需要,后来另一家业务用了同样的技术路线online-3d-viewer(就是three.js的二次打包),只好借用他们的项目,但是因为api的不同,卡了一天,记录在这里,如果大家有其他更好的解决方案,欢迎回复。刚开始实践过程中,自己接手的代码感觉可以直接拿来用,但是一开始就出问题了。您原始代码中的许多功能都有问题。感觉那边的工程不知道把代码copy到哪里去。没有根据库的版本修改,很多方法已经不支持了。.这些都是小事。看了源码,找到了对应的替换方法。但是在获取数据的时候出现了问题。在原来的逻辑中,直接通过api获取数据得到一个zip文件。这里有一个问题。他们项目的接口不需要token。公共数据可以直接获取。我需要获得许可才能在我的项目中获取数据。直接使用url会有问题//原代码import*asOVfrom'online-3d-viewer';...constinputEle=useRef(null)consturl=[`/api/public/file/download.zip?fileId=${el.media3D.documents}`]constload3d=()=>{//告诉引擎在哪里可以找到libs文件夹OV.SetExternalLibLocation('build/libs');//使用父元素和一些参数初始化查看器letviewer=newOV.EmbeddedViewer(inputEle.current,{//视角相机:newOV.Camera(newOV.Coord3D(-1.5,-3.0,2.0),newOV.Coord3D(0.0,0.0,0.0),newOV.Coord3D(0.0,0.0,1.0)),//背景色backgroundColor:newOV.Color(255,255,255),defaultColor:newOV.Color(200,200,200),//边框设置edgeSettings:{showEdges:false,edgeColor:newOV.Color(0,0,0),edgeThreshold:1},//背景图片设置environmentMap:[],//onModelLoaded:()=>{//letmodel=viewer.GetModel();////对模型做一些事情//}});//加载提供模型urls的模型DamagedHelmetviewer.LoadModelFromUrls(url);}if(inputEle.current){load3d()}}...
