@takram/three-geospatial 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/build/index.cjs +1 -1
- package/build/index.cjs.map +1 -1
- package/build/index.js +1311 -1309
- package/build/index.js.map +1 -1
- package/build/r3f.cjs +1 -1
- package/build/r3f.cjs.map +1 -1
- package/build/r3f.js +33 -50
- package/build/r3f.js.map +1 -1
- package/build/shaders.cjs.map +1 -1
- package/build/shaders.js.map +1 -1
- package/build/shared.cjs +1 -1
- package/build/shared.cjs.map +1 -1
- package/build/shared.js +116 -97
- package/build/shared.js.map +1 -1
- package/package.json +2 -3
- package/src/DataTextureLoader.ts +134 -0
- package/src/EXR3DTextureLoader.ts +66 -0
- package/src/{EXR3DLoader.ts → EXRTextureLoader.ts} +25 -12
- package/src/Ellipsoid.ts +23 -4
- package/src/STBNLoader.ts +28 -13
- package/src/TilingScheme.ts +1 -1
- package/src/TypedArrayLoader.ts +11 -21
- package/src/capabilities.ts +5 -0
- package/src/constants.ts +1 -0
- package/src/decorators.ts +0 -1
- package/src/defineShorthand.ts +1 -1
- package/src/index.ts +5 -3
- package/src/r3f/EastNorthUpFrame.tsx +14 -11
- package/src/r3f/EllipsoidMesh.tsx +16 -15
- package/src/r3f/index.ts +1 -1
- package/src/r3f/types.ts +1 -1
- package/src/typedArrayParsers.ts +1 -1
- package/src/types.ts +3 -1
- package/types/DataTextureLoader.d.ts +27 -0
- package/types/EXR3DTextureLoader.d.ts +11 -0
- package/types/EXRTextureLoader.d.ts +10 -0
- package/types/Ellipsoid.d.ts +1 -0
- package/types/STBNLoader.d.ts +5 -1
- package/types/TypedArrayLoader.d.ts +4 -6
- package/types/capabilities.d.ts +2 -0
- package/types/index.d.ts +5 -3
- package/types/r3f/EastNorthUpFrame.d.ts +4 -3
- package/types/r3f/EllipsoidMesh.d.ts +2 -1
- package/types/r3f/index.d.ts +1 -1
- package/types/types.d.ts +2 -1
- package/src/DataLoader.ts +0 -164
- package/src/Texture3DLoader.ts +0 -81
- package/types/DataLoader.d.ts +0 -29
- package/types/EXR3DLoader.d.ts +0 -6
- package/types/Texture3DLoader.d.ts +0 -4
package/build/shared.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"shared.js","sources":["../src/helpers/projectOnEllipsoidSurface.ts","../src/Ellipsoid.ts","../src/EllipsoidGeometry.ts","../src/Geodetic.ts"],"sourcesContent":null,"names":["vectorScratch","Vector3","projectOnEllipsoidSurface","position","reciprocalRadiiSquared","result","options","x","y","z","rx","ry","rz","x2","y2","z2","normSquared","ratio","intersection","gradient","lambda","correction","sx","sy","sz","error","sx2","sy2","sz2","sx3","sy3","sz3","vectorScratch1","vectorScratch2","vectorScratch3","_Ellipsoid","east","north","up","Matrix4","ray","reciprocalRadii","p","d","p2","d2","pd","discriminant","Q","t1","t2","t","surfacePosition","radius","xySquared","normal","Ellipsoid","EllipsoidGeometry","BufferGeometry","radii","longitudeSegments","latitudeSegments","elementCount","vertex","vertices","normals","uvs","grid","indices","vertexIndex","uvIndex","rowIndex","rowIndices","v","phi","uOffset","u","theta","a","b","c","BufferAttribute","source","_Geodetic","longitude","latitude","height","other","value","projection","ellipsoid","radiiSquared","cosLatitude","array","offset","Geodetic"],"mappings":";AAEA,MAAMA,wBAAkCC,EAAQ;AASzC,SAASC,EACdC,GACAC,GACAC,IAAS,IAAIJ,KACbK,GACqB;AACrB,QAAM,EAAE,GAAAC,GAAG,GAAAC,GAAG,GAAAC,EAAM,IAAAN,GACdO,IAAKN,EAAuB,GAC5BO,IAAKP,EAAuB,GAC5BQ,IAAKR,EAAuB,GAC5BS,IAAKN,IAAIA,IAAIG,GACbI,IAAKN,IAAIA,IAAIG,GACbI,IAAKN,IAAIA,IAAIG,GAGbI,IAAcH,IAAKC,IAAKC,GACxBE,IAAQ,KAAK,KAAK,IAAID,CAAW;AAGvC,MAAI,CAAC,OAAO,SAASC,CAAK;AACjB;AAKT,QAAMC,IAAelB,EAAc,KAAKG,CAAQ,EAAE,eAAec,CAAK;AAClE,MAAAD,MAAeV,KAAA,gBAAAA,EAAS,oBAAmB;AACtC,WAAAD,EAAO,KAAKa,CAAY;AAKjC,QAAMC,IAAWD,EACd,SAASd,CAAsB,EAC/B,eAAe,CAAC;AAGf,MAAAgB,KAAW,IAAIH,KAASd,EAAS,YAAagB,EAAS,OAAW,IAAA,IAElEE,IAAa,GACbC,GACAC,GACAC,GACAC;AACD,KAAA;AACS,IAAAL,KAAAC,GACLC,IAAA,KAAK,IAAIF,IAASV,IAClBa,IAAA,KAAK,IAAIH,IAAST,IAClBa,IAAA,KAAK,IAAIJ,IAASR;AACvB,UAAMc,IAAMJ,IAAKA,GACXK,IAAMJ,IAAKA,GACXK,IAAMJ,IAAKA,GACXK,IAAMH,IAAMJ,GACZQ,IAAMH,IAAMJ,GACZQ,IAAMH,IAAMJ;AAClB,IAAAC,IAAQZ,IAAKa,IAAMZ,IAAKa,IAAMZ,IAAKa,IAAM,GAC5BP,IAAAI,MAAUZ,IAAKgB,IAAMnB,IAAKI,IAAKgB,IAAMnB,IAAKI,IAAKgB,IAAMnB,KAAM;AAAA,EACjE,SAAA,KAAK,IAAIa,CAAK,IAAI;AAE3B,SAAOpB,EAAO,IAAIE,IAAIe,GAAId,IAAIe,GAAId,IAAIe,CAAE;AAC1C;AChEA,MAAMQ,wBAAmC/B,EAAQ,GAC3CgC,wBAAmChC,EAAQ,GAC3CiC,wBAAmCjC,EAAQ,GAEpCkC,IAAN,MAAMA,EAAU;AAAA,EASrB,YAAY5B,GAAWC,GAAWC,GAAW;AAC3C,SAAK,QAAQ,IAAIR,EAAQM,GAAGC,GAAGC,CAAC;AAAA,EAAA;AAAA,EAGlC,IAAI,gBAAwB;AACnB,WAAA,KAAK,IAAI,KAAK,MAAM,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM,CAAC;AAAA,EAAA;AAAA,EAG1D,IAAI,gBAAwB;AACnB,WAAA,KAAK,IAAI,KAAK,MAAM,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM,CAAC;AAAA,EAAA;AAAA,EAG1D,gBAAgBJ,IAAS,IAAIJ,KAAoB;AAC/C,UAAM,EAAE,GAAAM,GAAG,GAAAC,GAAG,GAAAC,MAAM,KAAK;AACzB,WAAOJ,EAAO,IAAI,IAAIE,GAAG,IAAIC,GAAG,IAAIC,CAAC;AAAA,EAAA;AAAA,EAGvC,uBAAuBJ,IAAS,IAAIJ,KAAoB;AACtD,UAAM,EAAE,GAAAM,GAAG,GAAAC,GAAG,GAAAC,MAAM,KAAK;AAClB,WAAAJ,EAAO,IAAI,IAAIE,KAAK,GAAG,IAAIC,KAAK,GAAG,IAAIC,KAAK,CAAC;AAAA,EAAA;AAAA,EAGtD,iBACEN,GACAE,IAAS,IAAIJ,EAAA,GACbK,GACqB;AACd,WAAAJ;AAAA,MACLC;AAAA,MACA,KAAK,uBAAuB;AAAA,MAC5BE;AAAA,MACAC;AAAA,IACF;AAAA,EAAA;AAAA,EAGF,iBAAiBH,GAAmBE,IAAS,IAAIJ,KAAoB;AAC5D,WAAAI,EACJ,gBAAgB,KAAK,uBAAuB2B,CAAc,GAAG7B,CAAQ,EACrE,UAAU;AAAA,EAAA;AAAA,EAGf,sBACEA,GACAiC,IAAO,IAAInC,EAAQ,GACnBoC,IAAQ,IAAIpC,EAAQ,GACpBqC,IAAK,IAAIrC,KACH;AACD,SAAA,iBAAiBE,GAAUmC,CAAE,GAC7BF,EAAA,IAAI,CAACjC,EAAS,GAAGA,EAAS,GAAG,CAAC,EAAE,UAAU,GAC/CkC,EAAM,aAAaC,GAAIF,CAAI,EAAE,UAAU;AAAA,EAAA;AAAA,EAGzC,oBAAoBjC,GAAmBE,IAAS,IAAIkC,KAAoB;AACtE,UAAMH,IAAOJ,GACPK,IAAQJ,GACRK,IAAKJ;AACX,gBAAK,sBAAsB/B,GAAUiC,GAAMC,GAAOC,CAAE,GAC7CjC,EAAO,UAAU+B,GAAMC,GAAOC,CAAE,EAAE,YAAYnC,CAAQ;AAAA,EAAA;AAAA,EAG/D,gBAAgBqC,GAAUnC,IAAS,IAAIJ,KAAgC;AAC/D,UAAAwC,IAAkB,KAAK,gBAAgBT,CAAc,GACrDU,IAAIT,EAAe,KAAKQ,CAAe,EAAE,SAASD,EAAI,MAAM,GAC5DG,IAAIT,EAAe,KAAKO,CAAe,EAAE,SAASD,EAAI,SAAS,GAC/DI,IAAKF,EAAE,SAAS,GAChBG,IAAKF,EAAE,SAAS,GAChBG,IAAKJ,EAAE,IAAIC,CAAC,GACZI,IAAeD,KAAM,IAAID,KAAMD,IAAK;AAC1C,QAAIA,MAAO;AACF,aAAAvC,EAAO,KAAKmC,EAAI,MAAM;AAE/B,QAAII,IAAK,GAAG;AACN,UAAAE,KAAM,KAAKC,IAAe;AAC5B;AAEI,YAAAC,IAAI,KAAK,KAAKD,CAAY,GAC1BE,KAAM,CAACH,IAAKE,KAAKH,GACjBK,KAAM,CAACJ,IAAKE,KAAKH;AACvB,aAAOL,EAAI,GAAG,KAAK,IAAIS,GAAIC,CAAE,GAAG7C,CAAM;AAAA,IAAA;AAExC,QAAIuC,IAAK,GAAG;AACV,YAAMG,IAAeD,KAAM,IAAID,KAAMD,IAAK,IACpCI,IAAI,KAAK,KAAKD,CAAY,GAC1BI,KAAK,CAACL,IAAKE,KAAKH;AACf,aAAAL,EAAI,GAAGW,GAAG9C,CAAM;AAAA,IAAA;AAEzB,QAAIyC,IAAK;AACP,aAAON,EAAI,GAAG,CAACM,IAAKD,GAAIxC,CAAM;AAAA,EAChC;AAAA,EAIF,0BACE+C,GACAC,GACAhD,IAAS,IAAIJ,KACJ;AACH,UAAAqD,IAAY,KAAK,MAAM,KAAK,GAC5BC,IAASvB,EACZ;AAAA,MACCoB,EAAgB,IAAIE;AAAA,MACpBF,EAAgB,IAAIE;AAAA,MACpBF,EAAgB,IAAI,KAAK,MAAM,KAAK;AAAA,MAErC,UAAU;AACN,WAAA/C,EAAO,KAAKkD,EAAO,eAAe,CAACF,CAAM,EAAE,IAAID,CAAe,CAAC;AAAA,EAAA;AAE1E;AAnHEjB,EAAgB,QAA0B,oBAAAA;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AACF;AALK,IAAMqB,IAANrB;ACHA,MAAMsB,UAA0BC,EAAe;AAAA,EAKpD,YACEC,IAAQ,IAAI1D,EAAQ,GAAG,GAAG,CAAC,GAC3B2D,IAAoB,IACpBC,IAAmB,IACnB;AACM,UAAA,GATR,KAAS,OAAO,qBAUd,KAAK,aAAa;AAAA,MAChB,OAAAF;AAAA,MACA,mBAAAC;AAAA,MACA,kBAAAC;AAAA,IACF,GAEAD,IAAoB,KAAK,IAAI,GAAG,KAAK,MAAMA,CAAiB,CAAC,GAC7DC,IAAmB,KAAK,IAAI,GAAG,KAAK,MAAMA,CAAgB,CAAC;AAErD,UAAAC,KAAgBF,IAAoB,MAAMC,IAAmB,IAC7DE,IAAS,IAAI9D,EAAQ,GACrBsD,IAAS,IAAItD,EAAQ,GACrB+D,IAAW,IAAI,aAAaF,IAAe,CAAC,GAC5CG,IAAU,IAAI,aAAaH,IAAe,CAAC,GAC3CI,IAAM,IAAI,aAAaJ,IAAe,CAAC,GACvCK,IAAmB,CAAC,GACpBC,IAAoB,CAAC;AAIrB,aAAA5D,IAAI,GAAG6D,IAAc,GAAGC,IAAU,GAAGC,IAAW,GACpD/D,KAAKqD,GACL,EAAErD,GACF;AACA,YAAMgE,IAAa,CAAC,GACdC,IAAIjE,IAAIqD,GACRa,IAAMD,IAAI,KAAK;AAGrB,UAAIE,IAAU;AACd,MAAInE,MAAM,IACRmE,IAAU,MAAMf,IACPpD,MAAMqD,MACfc,IAAU,OAAOf;AAIb,eAAArD,IAAI,GACRA,KAAKqD,GACL,EAAErD,GAAG8D,KAAe,GAAGC,KAAW,GAAG,EAAEC,GACvC;AACA,cAAMK,IAAIrE,IAAIqD,GACRiB,IAAQD,IAAI,KAAK,KAAK;AACrB,QAAAb,EAAA,IAAIJ,EAAM,IAAI,KAAK,IAAIkB,CAAK,IAAI,KAAK,IAAIH,CAAG,GAC5CX,EAAA,IAAIJ,EAAM,IAAI,KAAK,IAAIkB,CAAK,IAAI,KAAK,IAAIH,CAAG,GACnDX,EAAO,IAAIJ,EAAM,IAAI,KAAK,IAAIe,CAAG,GACxBV,EAAAK,CAAW,IAAIN,EAAO,GACtBC,EAAAK,IAAc,CAAC,IAAIN,EAAO,GAC1BC,EAAAK,IAAc,CAAC,IAAIN,EAAO,GAC5BR,EAAA,KAAKQ,CAAM,EAAE,UAAU,GACtBE,EAAAI,CAAW,IAAId,EAAO,GACtBU,EAAAI,IAAc,CAAC,IAAId,EAAO,GAC1BU,EAAAI,IAAc,CAAC,IAAId,EAAO,GAC9BW,EAAAI,CAAO,IAAIM,IAAID,GACfT,EAAAI,IAAU,CAAC,IAAI,IAAIG,GACvBD,EAAW,KAAKD,CAAQ;AAAA,MAAA;AAE1B,MAAAJ,EAAK,KAAKK,CAAU;AAAA,IAAA;AAItB,aAAShE,IAAI,GAAGA,IAAIqD,GAAkB,EAAErD;AACtC,eAASD,IAAI,GAAGA,IAAIqD,GAAmB,EAAErD,GAAG;AAC1C,cAAMuE,IAAIX,EAAK3D,CAAC,EAAED,IAAI,CAAC,GACjBwE,IAAIZ,EAAK3D,CAAC,EAAED,CAAC,GACbyE,IAAIb,EAAK3D,IAAI,CAAC,EAAED,CAAC,GACjBoC,IAAIwB,EAAK3D,IAAI,CAAC,EAAED,IAAI,CAAC;AAC3B,QAAIC,MAAM,KACA4D,EAAA,KAAKU,GAAGC,GAAGpC,CAAC,GAElBnC,MAAMqD,IAAmB,KACnBO,EAAA,KAAKW,GAAGC,GAAGrC,CAAC;AAAA,MACtB;AAIJ,SAAK,SAASyB,CAAO,GACrB,KAAK,aAAa,YAAY,IAAIa,EAAgBjB,GAAU,CAAC,CAAC,GAC9D,KAAK,aAAa,UAAU,IAAIiB,EAAgBhB,GAAS,CAAC,CAAC,GAC3D,KAAK,aAAa,MAAM,IAAIgB,EAAgBf,GAAK,CAAC,CAAC;AAAA,EAAA;AAAA,EAGrD,KAAKgB,GAAiC;AACpC,iBAAM,KAAKA,CAAM,GACjB,KAAK,aAAa,EAAE,GAAGA,EAAO,WAAW,GAClC;AAAA,EAAA;AAEX;AC1FA,MAAMlD,wBAAmC/B,EAAQ,GAC3CgC,wBAAmChC,EAAQ,GAEpCkF,IAAN,MAAMA,EAAS;AAAA,EAMpB,YACSC,IAAY,GACZC,IAAW,GACXC,IAAS,GAChB;AAHO,SAAA,YAAAF,GACA,KAAA,WAAAC,GACA,KAAA,SAAAC;AAAA,EAAA;AAAA,EAGT,IAAIF,GAAmBC,GAAkBC,GAAuB;AAC9D,gBAAK,YAAYF,GACjB,KAAK,WAAWC,GACZC,KAAU,SACZ,KAAK,SAASA,IAET;AAAA,EAAA;AAAA,EAGT,QAAkB;AAChB,WAAO,IAAIH,EAAS,KAAK,WAAW,KAAK,UAAU,KAAK,MAAM;AAAA,EAAA;AAAA,EAGhE,KAAKI,GAA2B;AAC9B,gBAAK,YAAYA,EAAM,WACvB,KAAK,WAAWA,EAAM,UACtB,KAAK,SAASA,EAAM,QACb;AAAA,EAAA;AAAA,EAGT,OAAOA,GAA8B;AAEjC,WAAAA,EAAM,cAAc,KAAK,aACzBA,EAAM,aAAa,KAAK,YACxBA,EAAM,WAAW,KAAK;AAAA,EAAA;AAAA,EAI1B,aAAaC,GAAqB;AAChC,gBAAK,YAAYA,GACV;AAAA,EAAA;AAAA,EAGT,YAAYA,GAAqB;AAC/B,gBAAK,WAAWA,GACT;AAAA,EAAA;AAAA,EAGT,UAAUA,GAAqB;AAC7B,gBAAK,SAASA,GACP;AAAA,EAAA;AAAA,EAGT,YAAkB;AACZ,WAAA,KAAK,YAAYL,EAAS,kBACvB,KAAA,aAAa,KAAK,KAAK,IAEvB;AAAA,EAAA;AAAA;AAAA;AAAA,EAKT,YACEhF,GACAG,GAGM;AAEA,UAAAF,MADYE,KAAA,gBAAAA,EAAS,cAAakD,EAAU,OAEtC,uBAAuBxB,CAAc,GAC3CyD,IAAavF;AAAA,MACjBC;AAAA,MACAC;AAAA,MACA6B;AAAA,MACA3B;AAAA,IACF;AACA,QAAImF,KAAc;AAChB,YAAM,IAAI;AAAA,QACR,oDAAoDtF,EAAS,SAAS;AAAA,MACxE;AAEF,UAAMoD,IAASvB,EACZ,gBAAgByD,GAAYrF,CAAsB,EAClD,UAAU;AACb,SAAK,YAAY,KAAK,MAAMmD,EAAO,GAAGA,EAAO,CAAC,GAC9C,KAAK,WAAW,KAAK,KAAKA,EAAO,CAAC;AAClC,UAAM+B,IAAStD,EAAe,WAAW7B,GAAUsF,CAAU;AACxD,gBAAA,SAAS,KAAK,KAAKH,EAAO,IAAInF,CAAQ,CAAC,IAAImF,EAAO,OAAO,GACvD;AAAA,EAAA;AAAA;AAAA;AAAA,EAKT,OACEjF,IAAS,IAAIJ,EAAA,GACbK,GAGS;AACH,UAAAoF,KAAYpF,KAAA,gBAAAA,EAAS,cAAakD,EAAU,OAC5CmC,IAAe3D,EAAe;AAAA,MAClC0D,EAAU;AAAA,MACVA,EAAU;AAAA,IACZ,GACME,IAAc,KAAK,IAAI,KAAK,QAAQ,GACpCrC,IAAStB,EACZ;AAAA,MACC2D,IAAc,KAAK,IAAI,KAAK,SAAS;AAAA,MACrCA,IAAc,KAAK,IAAI,KAAK,SAAS;AAAA,MACrC,KAAK,IAAI,KAAK,QAAQ;AAAA,MAEvB,UAAU;AACN,WAAAvF,EAAA,gBAAgBsF,GAAcpC,CAAM,GACpClD,EACJ,aAAa,KAAK,KAAKkD,EAAO,IAAIlD,CAAM,CAAC,CAAC,EAC1C,IAAIkD,EAAO,eAAe,KAAK,MAAM,CAAC;AAAA,EAAA;AAAA,EAG3C,UAAUsC,GAA0BC,IAAS,GAAS;AAC/C,gBAAA,YAAYD,EAAMC,CAAM,GACxB,KAAA,WAAWD,EAAMC,IAAS,CAAC,GAC3B,KAAA,SAASD,EAAMC,IAAS,CAAC,GACvB;AAAA,EAAA;AAAA,EAGT,QAAQD,IAAkB,IAAIC,IAAS,GAAa;AAC5C,WAAAD,EAAAC,CAAM,IAAI,KAAK,WACfD,EAAAC,IAAS,CAAC,IAAI,KAAK,UACnBD,EAAAC,IAAS,CAAC,IAAI,KAAK,QAClBD;AAAA,EAAA;AAAA,EAGT,EAAE,OAAO,QAAQ,IAAuB;AACtC,UAAM,KAAK,WACX,MAAM,KAAK,UACX,MAAM,KAAK;AAAA,EAAA;AAEf;AA3IkBV,EAAA,gBAAgB,CAAC,KAAK,IACtCA,EAAgB,gBAAgB,KAAK,IACrBA,EAAA,eAAe,CAAC,KAAK,KAAK,GAC1BA,EAAA,eAAe,KAAK,KAAK;AAJpC,IAAMY,IAANZ;"}
|
1
|
+
{"version":3,"file":"shared.js","sources":["../node_modules/.pnpm/tiny-invariant@1.3.3/node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../src/helpers/projectOnEllipsoidSurface.ts","../src/Ellipsoid.ts","../src/EllipsoidGeometry.ts","../src/Geodetic.ts"],"sourcesContent":null,"names":["isProduction","prefix","invariant","condition","message","value","vectorScratch","Vector3","projectOnEllipsoidSurface","position","reciprocalRadiiSquared","result","options","x","y","z","rx","ry","rz","x2","y2","z2","normSquared","ratio","intersection","gradient","lambda","correction","sx","sy","sz","error","sx2","sy2","sz2","sx3","sy3","sz3","vectorScratch1","vectorScratch2","vectorScratch3","_Ellipsoid","east","north","up","Matrix4","ray","reciprocalRadii","p","d","p2","d2","pd","discriminant","Q","t1","t2","t","surfacePosition","radius","a2","b2","normal","direction","v","q","Ellipsoid","EllipsoidGeometry","BufferGeometry","radii","longitudeSegments","latitudeSegments","elementCount","vertex","vertices","normals","uvs","grid","indices","vertexIndex","uvIndex","rowIndex","rowIndices","phi","uOffset","u","theta","a","b","c","BufferAttribute","source","_Geodetic","longitude","latitude","height","other","projection","ellipsoid","radiiSquared","cosLatitude","array","offset","Geodetic"],"mappings":"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","x_google_ignoreList":[0]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@takram/three-geospatial",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.3.0",
|
4
4
|
"description": "Provides fundamental functions for rendering GIS data in Three.js and R3F",
|
5
5
|
"keywords": [
|
6
6
|
"three",
|
@@ -49,8 +49,7 @@
|
|
49
49
|
],
|
50
50
|
"dependencies": {
|
51
51
|
"@petamoriken/float16": "^3.9.1",
|
52
|
-
"
|
53
|
-
"three-stdlib": "2.35.14",
|
52
|
+
"three-stdlib": "2.36.0",
|
54
53
|
"tiny-invariant": "^1.3.3",
|
55
54
|
"type-fest": "^4.33.0"
|
56
55
|
},
|
@@ -0,0 +1,134 @@
|
|
1
|
+
import {
|
2
|
+
ByteType,
|
3
|
+
FloatType,
|
4
|
+
HalfFloatType,
|
5
|
+
IntType,
|
6
|
+
LinearFilter,
|
7
|
+
Loader,
|
8
|
+
RGBAFormat,
|
9
|
+
ShortType,
|
10
|
+
UnsignedByteType,
|
11
|
+
UnsignedIntType,
|
12
|
+
UnsignedShortType,
|
13
|
+
type ColorSpace,
|
14
|
+
type Data3DTexture,
|
15
|
+
type DataTexture,
|
16
|
+
type LoadingManager,
|
17
|
+
type MagnificationTextureFilter,
|
18
|
+
type Mapping,
|
19
|
+
type MinificationTextureFilter,
|
20
|
+
type PixelFormat,
|
21
|
+
type TextureDataType,
|
22
|
+
type Wrapping
|
23
|
+
} from 'three'
|
24
|
+
import invariant from 'tiny-invariant'
|
25
|
+
import type { Class } from 'type-fest'
|
26
|
+
|
27
|
+
import { Float16Array, type TypedArray } from './typedArray'
|
28
|
+
import { TypedArrayLoader } from './TypedArrayLoader'
|
29
|
+
import type { TypedArrayParser } from './typedArrayParsers'
|
30
|
+
|
31
|
+
function getTextureDataType(array: TypedArray): TextureDataType {
|
32
|
+
// prettier-ignore
|
33
|
+
const type = (
|
34
|
+
array instanceof Int8Array ? ByteType :
|
35
|
+
array instanceof Uint8Array ? UnsignedByteType :
|
36
|
+
array instanceof Uint8ClampedArray ? UnsignedByteType :
|
37
|
+
array instanceof Int16Array ? ShortType :
|
38
|
+
array instanceof Uint16Array ? UnsignedShortType :
|
39
|
+
array instanceof Int32Array ? IntType :
|
40
|
+
array instanceof Uint32Array ? UnsignedIntType :
|
41
|
+
array instanceof Float16Array ? HalfFloatType :
|
42
|
+
array instanceof Float32Array ? FloatType :
|
43
|
+
array instanceof Float64Array ? FloatType :
|
44
|
+
null
|
45
|
+
)
|
46
|
+
invariant(type != null)
|
47
|
+
return type
|
48
|
+
}
|
49
|
+
|
50
|
+
export interface DataTextureLoaderOptions {
|
51
|
+
width?: number
|
52
|
+
height?: number
|
53
|
+
depth?: number
|
54
|
+
mapping?: Mapping
|
55
|
+
wrapS?: Wrapping
|
56
|
+
wrapT?: Wrapping
|
57
|
+
wrapR?: Wrapping
|
58
|
+
magFilter?: MagnificationTextureFilter
|
59
|
+
minFilter?: MinificationTextureFilter
|
60
|
+
format?: PixelFormat
|
61
|
+
type?: TextureDataType
|
62
|
+
anisotropy?: number
|
63
|
+
colorSpace?: ColorSpace
|
64
|
+
manager?: LoadingManager
|
65
|
+
}
|
66
|
+
|
67
|
+
export class DataTextureLoader<
|
68
|
+
T extends DataTexture | Data3DTexture = DataTexture | Data3DTexture,
|
69
|
+
U extends TypedArray = TypedArray
|
70
|
+
> extends Loader<T> {
|
71
|
+
textureClass: Class<T>
|
72
|
+
parser: TypedArrayParser<U>
|
73
|
+
options: DataTextureLoaderOptions
|
74
|
+
|
75
|
+
constructor(
|
76
|
+
textureClass: Class<T>,
|
77
|
+
parser: TypedArrayParser<U>,
|
78
|
+
options: DataTextureLoaderOptions = {},
|
79
|
+
manager?: LoadingManager
|
80
|
+
) {
|
81
|
+
super(manager)
|
82
|
+
this.textureClass = textureClass
|
83
|
+
this.parser = parser
|
84
|
+
this.options = {
|
85
|
+
format: RGBAFormat,
|
86
|
+
minFilter: LinearFilter,
|
87
|
+
magFilter: LinearFilter,
|
88
|
+
...options
|
89
|
+
}
|
90
|
+
}
|
91
|
+
|
92
|
+
override load(
|
93
|
+
url: string,
|
94
|
+
onLoad?: (data: T) => void,
|
95
|
+
onProgress?: (event: ProgressEvent) => void,
|
96
|
+
onError?: (error: unknown) => void
|
97
|
+
): T {
|
98
|
+
// eslint-disable-next-line new-cap
|
99
|
+
const texture = new this.textureClass()
|
100
|
+
|
101
|
+
const loader = new TypedArrayLoader(this.parser, this.manager)
|
102
|
+
loader.setRequestHeader(this.requestHeader)
|
103
|
+
loader.setPath(this.path)
|
104
|
+
loader.setWithCredentials(this.withCredentials)
|
105
|
+
loader.load(
|
106
|
+
url,
|
107
|
+
array => {
|
108
|
+
texture.image.data =
|
109
|
+
array instanceof Float16Array ? new Uint16Array(array.buffer) : array
|
110
|
+
const { width, height, depth, ...options } = this.options
|
111
|
+
if (width != null) {
|
112
|
+
texture.image.width = width
|
113
|
+
}
|
114
|
+
if (height != null) {
|
115
|
+
texture.image.height = height
|
116
|
+
}
|
117
|
+
if ('depth' in texture.image && depth != null) {
|
118
|
+
texture.image.depth = depth
|
119
|
+
}
|
120
|
+
|
121
|
+
// Populate the default texture type for the array type.
|
122
|
+
texture.type = getTextureDataType(array)
|
123
|
+
|
124
|
+
Object.assign(texture, options)
|
125
|
+
texture.needsUpdate = true
|
126
|
+
onLoad?.(texture)
|
127
|
+
},
|
128
|
+
onProgress,
|
129
|
+
onError
|
130
|
+
)
|
131
|
+
|
132
|
+
return texture
|
133
|
+
}
|
134
|
+
}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
import { Data3DTexture, Loader, type LoadingManager } from 'three'
|
2
|
+
import { EXRLoader } from 'three-stdlib'
|
3
|
+
|
4
|
+
export interface EXR3DTextureLoaderOptions {
|
5
|
+
width?: number
|
6
|
+
height?: number
|
7
|
+
depth?: number
|
8
|
+
}
|
9
|
+
|
10
|
+
export class EXR3DTextureLoader extends Loader<Data3DTexture> {
|
11
|
+
options: EXR3DTextureLoaderOptions
|
12
|
+
|
13
|
+
constructor(
|
14
|
+
options: EXR3DTextureLoaderOptions = {},
|
15
|
+
manager?: LoadingManager
|
16
|
+
) {
|
17
|
+
super(manager)
|
18
|
+
this.options = options
|
19
|
+
}
|
20
|
+
|
21
|
+
override load(
|
22
|
+
url: string,
|
23
|
+
onLoad?: (data: Data3DTexture) => void,
|
24
|
+
onProgress?: (event: ProgressEvent) => void,
|
25
|
+
onError?: (error: unknown) => void
|
26
|
+
): Data3DTexture {
|
27
|
+
const { width, height, depth } = this.options
|
28
|
+
const texture = new Data3DTexture(null, width, height, depth)
|
29
|
+
|
30
|
+
const loader = new EXRLoader(this.manager)
|
31
|
+
loader.setRequestHeader(this.requestHeader)
|
32
|
+
loader.setPath(this.path)
|
33
|
+
loader.setWithCredentials(this.withCredentials)
|
34
|
+
loader.load(
|
35
|
+
url,
|
36
|
+
exr => {
|
37
|
+
const { image } = exr
|
38
|
+
texture.image = {
|
39
|
+
data: image.data,
|
40
|
+
width: width ?? image.width,
|
41
|
+
height: height ?? image.height,
|
42
|
+
depth: depth ?? Math.sqrt(image.height)
|
43
|
+
}
|
44
|
+
texture.type = exr.type
|
45
|
+
texture.format = exr.format
|
46
|
+
texture.colorSpace = exr.colorSpace
|
47
|
+
texture.needsUpdate = true
|
48
|
+
|
49
|
+
try {
|
50
|
+
onLoad?.(texture)
|
51
|
+
} catch (error) {
|
52
|
+
if (onError != null) {
|
53
|
+
onError(error)
|
54
|
+
} else {
|
55
|
+
console.error(error)
|
56
|
+
}
|
57
|
+
this.manager.itemError(url)
|
58
|
+
}
|
59
|
+
},
|
60
|
+
onProgress,
|
61
|
+
onError
|
62
|
+
)
|
63
|
+
|
64
|
+
return texture
|
65
|
+
}
|
66
|
+
}
|
@@ -1,20 +1,28 @@
|
|
1
|
-
import {
|
1
|
+
import { DataTexture, Loader, type LoadingManager } from 'three'
|
2
2
|
import { EXRLoader } from 'three-stdlib'
|
3
3
|
|
4
|
-
export
|
5
|
-
|
4
|
+
export interface EXRTextureLoaderOptions {
|
5
|
+
width?: number
|
6
|
+
height?: number
|
7
|
+
}
|
8
|
+
|
9
|
+
export class EXRTextureLoader extends Loader<DataTexture> {
|
10
|
+
options: EXRTextureLoaderOptions
|
6
11
|
|
7
|
-
|
8
|
-
|
9
|
-
|
12
|
+
constructor(options: EXRTextureLoaderOptions = {}, manager?: LoadingManager) {
|
13
|
+
super(manager)
|
14
|
+
this.options = options
|
10
15
|
}
|
11
16
|
|
12
17
|
override load(
|
13
18
|
url: string,
|
14
|
-
onLoad
|
19
|
+
onLoad?: (data: DataTexture) => void,
|
15
20
|
onProgress?: (event: ProgressEvent) => void,
|
16
21
|
onError?: (error: unknown) => void
|
17
|
-
):
|
22
|
+
): DataTexture {
|
23
|
+
const { width, height } = this.options
|
24
|
+
const texture = new DataTexture(null, width, height)
|
25
|
+
|
18
26
|
const loader = new EXRLoader(this.manager)
|
19
27
|
loader.setRequestHeader(this.requestHeader)
|
20
28
|
loader.setPath(this.path)
|
@@ -22,16 +30,19 @@ export class EXR3DLoader extends Loader<Data3DTexture> {
|
|
22
30
|
loader.load(
|
23
31
|
url,
|
24
32
|
exr => {
|
25
|
-
const {
|
26
|
-
|
27
|
-
|
33
|
+
const { image } = exr
|
34
|
+
texture.image = {
|
35
|
+
data: image.data,
|
36
|
+
width: width ?? image.width,
|
37
|
+
height: height ?? image.height
|
38
|
+
}
|
28
39
|
texture.type = exr.type
|
29
40
|
texture.format = exr.format
|
30
41
|
texture.colorSpace = exr.colorSpace
|
31
42
|
texture.needsUpdate = true
|
32
43
|
|
33
44
|
try {
|
34
|
-
onLoad(texture)
|
45
|
+
onLoad?.(texture)
|
35
46
|
} catch (error) {
|
36
47
|
if (onError != null) {
|
37
48
|
onError(error)
|
@@ -44,5 +55,7 @@ export class EXR3DLoader extends Loader<Data3DTexture> {
|
|
44
55
|
onProgress,
|
45
56
|
onError
|
46
57
|
)
|
58
|
+
|
59
|
+
return texture
|
47
60
|
}
|
48
61
|
}
|
package/src/Ellipsoid.ts
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import { Matrix4, Vector3, type Ray } from 'three'
|
2
|
+
import invariant from 'tiny-invariant'
|
2
3
|
|
3
4
|
import {
|
4
5
|
projectOnEllipsoidSurface,
|
@@ -115,14 +116,32 @@ export class Ellipsoid {
|
|
115
116
|
radius: number,
|
116
117
|
result = new Vector3()
|
117
118
|
): Vector3 {
|
118
|
-
|
119
|
+
invariant(this.radii.x === this.radii.y)
|
120
|
+
const a2 = this.radii.x ** 2
|
121
|
+
const b2 = this.radii.z ** 2
|
119
122
|
const normal = vectorScratch1
|
120
123
|
.set(
|
121
|
-
surfacePosition.x /
|
122
|
-
surfacePosition.y /
|
123
|
-
surfacePosition.z /
|
124
|
+
surfacePosition.x / a2,
|
125
|
+
surfacePosition.y / a2,
|
126
|
+
surfacePosition.z / b2
|
124
127
|
)
|
125
128
|
.normalize()
|
126
129
|
return result.copy(normal.multiplyScalar(-radius).add(surfacePosition))
|
127
130
|
}
|
131
|
+
|
132
|
+
getNormalAtHorizon(
|
133
|
+
position: Vector3,
|
134
|
+
direction: Vector3,
|
135
|
+
result = new Vector3()
|
136
|
+
): Vector3 {
|
137
|
+
invariant(this.radii.x === this.radii.y)
|
138
|
+
const a2 = this.radii.x ** 2
|
139
|
+
const b2 = this.radii.z ** 2
|
140
|
+
const p = position
|
141
|
+
const v = direction
|
142
|
+
let t = (p.x * v.x + p.y * v.y) / a2 + (p.z * v.z) / b2
|
143
|
+
t /= (p.x ** 2 + p.y ** 2) / a2 + p.z ** 2 / b2
|
144
|
+
const q = vectorScratch1.copy(v).multiplyScalar(-t).add(position)
|
145
|
+
return result.set(q.x / a2, q.y / a2, q.z / b2).normalize()
|
146
|
+
}
|
128
147
|
}
|
package/src/STBNLoader.ts
CHANGED
@@ -1,21 +1,36 @@
|
|
1
|
-
import {
|
1
|
+
import {
|
2
|
+
Data3DTexture,
|
3
|
+
NearestFilter,
|
4
|
+
RedFormat,
|
5
|
+
RepeatWrapping,
|
6
|
+
type LoadingManager
|
7
|
+
} from 'three'
|
2
8
|
|
3
9
|
import {
|
4
10
|
STBN_TEXTURE_DEPTH,
|
5
11
|
STBN_TEXTURE_HEIGHT,
|
6
12
|
STBN_TEXTURE_WIDTH
|
7
13
|
} from './constants'
|
8
|
-
import {
|
14
|
+
import { DataTextureLoader } from './DataTextureLoader'
|
9
15
|
import { parseUint8Array } from './typedArrayParsers'
|
10
16
|
|
11
|
-
export
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
export class STBNLoader extends DataTextureLoader<Data3DTexture> {
|
18
|
+
constructor(manager?: LoadingManager) {
|
19
|
+
super(
|
20
|
+
Data3DTexture,
|
21
|
+
parseUint8Array,
|
22
|
+
{
|
23
|
+
format: RedFormat,
|
24
|
+
minFilter: NearestFilter,
|
25
|
+
magFilter: NearestFilter,
|
26
|
+
wrapS: RepeatWrapping,
|
27
|
+
wrapT: RepeatWrapping,
|
28
|
+
wrapR: RepeatWrapping,
|
29
|
+
width: STBN_TEXTURE_WIDTH,
|
30
|
+
height: STBN_TEXTURE_HEIGHT,
|
31
|
+
depth: STBN_TEXTURE_DEPTH
|
32
|
+
},
|
33
|
+
manager
|
34
|
+
)
|
35
|
+
}
|
36
|
+
}
|
package/src/TilingScheme.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Vector2 } from 'three'
|
2
2
|
|
3
|
-
import {
|
3
|
+
import type { GeodeticLike } from './Geodetic'
|
4
4
|
import { Rectangle, type RectangleLike } from './Rectangle'
|
5
5
|
import { TileCoordinate, type TileCoordinateLike } from './TileCoordinate'
|
6
6
|
|
package/src/TypedArrayLoader.ts
CHANGED
@@ -1,12 +1,16 @@
|
|
1
|
-
import { Loader } from 'three'
|
2
|
-
import { type Class } from 'type-fest'
|
1
|
+
import { Loader, type LoadingManager } from 'three'
|
3
2
|
|
4
3
|
import { ArrayBufferLoader } from './ArrayBufferLoader'
|
5
|
-
import {
|
6
|
-
import {
|
4
|
+
import type { TypedArray } from './typedArray'
|
5
|
+
import type { TypedArrayParser } from './typedArrayParsers'
|
7
6
|
|
8
|
-
export
|
9
|
-
|
7
|
+
export class TypedArrayLoader<T extends TypedArray> extends Loader<T> {
|
8
|
+
parser: TypedArrayParser<T>
|
9
|
+
|
10
|
+
constructor(parser: TypedArrayParser<T>, manager?: LoadingManager) {
|
11
|
+
super(manager)
|
12
|
+
this.parser = parser
|
13
|
+
}
|
10
14
|
|
11
15
|
override load(
|
12
16
|
url: string,
|
@@ -22,7 +26,7 @@ export abstract class TypedArrayLoader<T extends TypedArray> extends Loader<T> {
|
|
22
26
|
url,
|
23
27
|
arrayBuffer => {
|
24
28
|
try {
|
25
|
-
onLoad(this.
|
29
|
+
onLoad(this.parser(arrayBuffer))
|
26
30
|
} catch (error) {
|
27
31
|
if (onError != null) {
|
28
32
|
onError(error)
|
@@ -37,17 +41,3 @@ export abstract class TypedArrayLoader<T extends TypedArray> extends Loader<T> {
|
|
37
41
|
)
|
38
42
|
}
|
39
43
|
}
|
40
|
-
|
41
|
-
export function createTypedArrayLoaderClass<T extends TypedArray>(
|
42
|
-
parser: TypedArrayParser<T>
|
43
|
-
): Class<TypedArrayLoader<T>> {
|
44
|
-
return class extends TypedArrayLoader<T> {
|
45
|
-
readonly parseTypedArray = parser
|
46
|
-
}
|
47
|
-
}
|
48
|
-
|
49
|
-
export function createTypedArrayLoader<T extends TypedArray>(
|
50
|
-
parser: TypedArrayParser<T>
|
51
|
-
): TypedArrayLoader<T> {
|
52
|
-
return new (createTypedArrayLoaderClass(parser))()
|
53
|
-
}
|
package/src/constants.ts
CHANGED
@@ -2,5 +2,6 @@ export const STBN_TEXTURE_WIDTH = 128
|
|
2
2
|
export const STBN_TEXTURE_HEIGHT = 128
|
3
3
|
export const STBN_TEXTURE_DEPTH = 64
|
4
4
|
|
5
|
+
// Reference to the latest assets.
|
5
6
|
const ref = '9627216cc50057994c98a2118f3c4a23765d43b9'
|
6
7
|
export const DEFAULT_STBN_URL = `https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/${ref}/packages/core/assets/stbn.bin`
|
package/src/decorators.ts
CHANGED
package/src/defineShorthand.ts
CHANGED
package/src/index.ts
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
export * from './ArrayBufferLoader'
|
2
2
|
export * from './assertions'
|
3
3
|
export * from './bufferGeometry'
|
4
|
+
export * from './capabilities'
|
4
5
|
export * from './constants'
|
5
|
-
export * from './
|
6
|
+
export * from './DataTextureLoader'
|
6
7
|
export * from './decorators'
|
7
8
|
export * from './defineShorthand'
|
8
9
|
export * from './Ellipsoid'
|
9
10
|
export * from './EllipsoidGeometry'
|
10
|
-
export * from './
|
11
|
+
export * from './EXR3DTextureLoader'
|
12
|
+
export * from './EXRTextureLoader'
|
11
13
|
export * from './Geodetic'
|
12
14
|
export * from './math'
|
13
15
|
export * from './PointOfView'
|
@@ -19,5 +21,5 @@ export * from './TilingScheme'
|
|
19
21
|
export * from './typedArray'
|
20
22
|
export * from './TypedArrayLoader'
|
21
23
|
export * from './typedArrayParsers'
|
22
|
-
export * from './types'
|
24
|
+
export type * from './types'
|
23
25
|
export * from './unrollLoops'
|
@@ -1,6 +1,7 @@
|
|
1
|
-
import {
|
1
|
+
import type { ElementProps } from '@react-three/fiber'
|
2
|
+
import { useEffect, useMemo, type FC, type ReactNode } from 'react'
|
2
3
|
import { Group, Matrix4, Vector3 } from 'three'
|
3
|
-
import {
|
4
|
+
import type { SetOptional } from 'type-fest'
|
4
5
|
|
5
6
|
import { Ellipsoid } from '../Ellipsoid'
|
6
7
|
import { Geodetic, type GeodeticLike } from '../Geodetic'
|
@@ -26,18 +27,20 @@ class EastNorthUpFrameGroup extends Group {
|
|
26
27
|
}
|
27
28
|
|
28
29
|
export interface EastNorthUpFrameProps
|
29
|
-
extends
|
30
|
+
extends ElementProps<typeof EastNorthUpFrameGroup, EastNorthUpFrameGroup>,
|
31
|
+
SetOptional<GeodeticLike, 'height'> {
|
30
32
|
ellipsoid?: Ellipsoid
|
31
33
|
children?: ReactNode
|
32
34
|
}
|
33
35
|
|
34
|
-
export const EastNorthUpFrame =
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
36
|
+
export const EastNorthUpFrame: FC<EastNorthUpFrameProps> = ({
|
37
|
+
ref: forwardedRef,
|
38
|
+
longitude,
|
39
|
+
latitude,
|
40
|
+
height = 0,
|
41
|
+
ellipsoid = Ellipsoid.WGS84,
|
42
|
+
children
|
43
|
+
}) => {
|
41
44
|
const group = useMemo(() => new EastNorthUpFrameGroup(), [])
|
42
45
|
|
43
46
|
useEffect(() => {
|
@@ -49,4 +52,4 @@ export const EastNorthUpFrame = /*#__PURE__*/ forwardRef<
|
|
49
52
|
{children}
|
50
53
|
</primitive>
|
51
54
|
)
|
52
|
-
}
|
55
|
+
}
|