@realsee/five 5.0.0-alpha.19 → 5.0.0-alpha.191

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.
Files changed (251) hide show
  1. package/README.md +18 -8
  2. package/docs/.nojekyll +1 -0
  3. package/docs/assets/highlight.css +134 -0
  4. package/docs/assets/icons.css +1043 -0
  5. package/docs/assets/main.js +52 -0
  6. package/docs/assets/search.js +1 -0
  7. package/docs/assets/style.css +1414 -0
  8. package/docs/classes/five.AnimationFrameLoop.html +15 -0
  9. package/docs/classes/five.BVH.html +10 -0
  10. package/docs/classes/five.BVHIntersect.html +1 -0
  11. package/docs/classes/five.BVHNode.html +7 -0
  12. package/docs/classes/five.BVHVector3.html +1 -0
  13. package/docs/classes/five.Camera.html +11 -0
  14. package/docs/classes/five.Clipper.html +1 -0
  15. package/docs/classes/five.Five.html +328 -0
  16. package/docs/classes/five.InternalWebGLRenderer.html +1 -0
  17. package/docs/classes/five.IntersectMesh.html +1 -0
  18. package/docs/classes/five.Model.html +91 -0
  19. package/docs/classes/five.NetworkSubscribe.html +50 -0
  20. package/docs/classes/five.PBMContainer.html +17 -0
  21. package/docs/classes/five.PBMGroup.html +19 -0
  22. package/docs/classes/five.PBMMaterial.html +29 -0
  23. package/docs/classes/five.PBMMesh.html +7 -0
  24. package/docs/classes/five.PanoCircleMesh.html +7 -0
  25. package/docs/classes/five.PanoCircleMeshCustom.html +7 -0
  26. package/docs/classes/five.PanoCircleMeshSolid.html +7 -0
  27. package/docs/classes/five.Scene.html +3 -0
  28. package/docs/classes/five.Subscribe.html +56 -0
  29. package/docs/classes/five.TextureLoader.html +1 -0
  30. package/docs/classes/five.Tile3D.html +34 -0
  31. package/docs/classes/five.Tile3DModel.html +15 -0
  32. package/docs/classes/five.TileBoundingSphere.html +1 -0
  33. package/docs/classes/five.TileCacheNode.html +1 -0
  34. package/docs/classes/five.TileCubeTextureTarget.html +1 -0
  35. package/docs/classes/five.TileCullingVolume.html +1 -0
  36. package/docs/classes/five.TileOrientedBoundingBox.html +1 -0
  37. package/docs/classes/five.TileRequestScheduler.html +16 -0
  38. package/docs/classes/five.Tileset3D.html +11 -0
  39. package/docs/classes/five.Tileset3DTraverser.html +1 -0
  40. package/docs/classes/five.TilesetCache.html +1 -0
  41. package/docs/classes/five.Work.html +32 -0
  42. package/docs/classes/five.XRButton.html +1 -0
  43. package/docs/classes/gltf_loader.DDSLoader.html +1 -0
  44. package/docs/classes/gltf_loader.DRACOLoader.html +1 -0
  45. package/docs/classes/gltf_loader.GLTFLoader.html +17 -0
  46. package/docs/classes/gltf_loader.GLTFObject.html +7 -0
  47. package/docs/classes/gltf_loader.GLTFParser.html +1 -0
  48. package/docs/classes/gltf_loader.THREEGLTFLoader.html +1 -0
  49. package/docs/classes/line.Line.html +1 -0
  50. package/docs/classes/line.LineGeometry.html +1 -0
  51. package/docs/classes/line.LineMaterial.html +1 -0
  52. package/docs/classes/line.LineSegmentsGeometry.html +1 -0
  53. package/docs/classes/line.THREE_Line2.html +1 -0
  54. package/docs/classes/line.THREE_LineSegments2.html +1 -0
  55. package/docs/classes/react.Store.html +29 -0
  56. package/docs/classes/server.BVH.html +10 -0
  57. package/docs/classes/server.BVHIntersect.html +1 -0
  58. package/docs/classes/server.BVHNode.html +7 -0
  59. package/docs/classes/server.BVHVector3.html +1 -0
  60. package/docs/classes/server.Model.html +70 -0
  61. package/docs/classes/server.PBMContainer.html +7 -0
  62. package/docs/classes/server.PBMGroup.html +9 -0
  63. package/docs/classes/server.PBMMesh.html +7 -0
  64. package/docs/classes/sticker.Sticker.html +32 -0
  65. package/docs/classes/vfx.Airflow.html +1 -0
  66. package/docs/classes/vfx.Flame.html +1 -0
  67. package/docs/classes/vfx.Particle.html +89 -0
  68. package/docs/classes/vfx.SpotLight.html +1 -0
  69. package/docs/index.html +166 -434
  70. package/docs/interfaces/five.AddableObject.html +9 -0
  71. package/docs/interfaces/five.AnimationFrame.html +1 -0
  72. package/docs/interfaces/five.CameraPose.html +1 -0
  73. package/docs/interfaces/five.ClipperParameter.html +1 -0
  74. package/docs/interfaces/five.DepthPanoramaControllerCustomInitArgs.html +28 -0
  75. package/docs/interfaces/five.EventCallback.html +400 -0
  76. package/docs/interfaces/five.FiveInitArgs.html +109 -0
  77. package/docs/interfaces/five.FloorplanControllerCustomInitArgs.html +17 -0
  78. package/docs/interfaces/five.ImageOptions.html +18 -0
  79. package/docs/interfaces/five.ImageURLMappings.html +1 -0
  80. package/docs/interfaces/five.ImageURLOptions.html +15 -0
  81. package/docs/interfaces/five.IntersectMeshInterface.html +3 -0
  82. package/docs/interfaces/five.Intersection.html +7 -0
  83. package/docs/interfaces/five.MapviewControllerCustomInitArgs.html +15 -0
  84. package/docs/interfaces/five.ModelControllerCustomInitArgs.html +20 -0
  85. package/docs/interfaces/five.ModelEventCallback.html +22 -0
  86. package/docs/interfaces/five.MotionKeyframe.html +1 -0
  87. package/docs/interfaces/five.MovePanoOptions.html +42 -0
  88. package/docs/interfaces/five.NetworkOptions.html +9 -0
  89. package/docs/interfaces/five.PBMPanoPicture.html +7 -0
  90. package/docs/interfaces/five.PBMParameters.html +29 -0
  91. package/docs/interfaces/five.PanoCircleMeshCustomOptions.html +1 -0
  92. package/docs/interfaces/five.PanoCircleMeshInterface.html +19 -0
  93. package/docs/interfaces/five.PanoCircleMeshOptions.html +1 -0
  94. package/docs/interfaces/five.PanoCircleMeshSolidOptions.html +1 -0
  95. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +35 -0
  96. package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +20 -0
  97. package/docs/interfaces/five.Pose.html +37 -0
  98. package/docs/interfaces/five.Scissor.html +14 -0
  99. package/docs/interfaces/five.State.html +21 -0
  100. package/docs/interfaces/five.SubscribeMixinType.emit.html +1 -0
  101. package/docs/interfaces/five.SubscribeMixinType.hasListener.html +1 -0
  102. package/docs/interfaces/five.SubscribeMixinType.off.html +1 -0
  103. package/docs/interfaces/five.SubscribeMixinType.on.html +1 -0
  104. package/docs/interfaces/five.SubscribeMixinType.once.html +1 -0
  105. package/docs/interfaces/five.TextureOptions.html +20 -0
  106. package/docs/interfaces/five.Tile3DModelLoaderOptions.html +3 -0
  107. package/docs/interfaces/five.TileBoundingVolume.html +19 -0
  108. package/docs/interfaces/five.TileContent.html +1 -0
  109. package/docs/interfaces/five.TileCubeNode.html +1 -0
  110. package/docs/interfaces/five.TileCubeTree.html +1 -0
  111. package/docs/interfaces/five.Tileset3dOptions.html +1 -0
  112. package/docs/interfaces/five.TilesetJSON.html +1 -0
  113. package/docs/interfaces/five.TilesetJSONNode.html +1 -0
  114. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +9 -0
  115. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +31 -0
  116. package/docs/interfaces/five.WebXRSelectParams.html +1 -0
  117. package/docs/interfaces/five.WorkCubeImage.html +13 -0
  118. package/docs/interfaces/five.WorkImage.html +21 -0
  119. package/docs/interfaces/five.WorkInitial.html +13 -0
  120. package/docs/interfaces/five.WorkModel.html +11 -0
  121. package/docs/interfaces/five.WorkModelTiles.html +3 -0
  122. package/docs/interfaces/five.WorkObserver.html +27 -0
  123. package/docs/interfaces/five.WorkTile.html +1 -0
  124. package/docs/interfaces/five.WorkVideo.html +9 -0
  125. package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +31 -0
  126. package/docs/interfaces/gltf_loader.DDS.html +1 -0
  127. package/docs/interfaces/gltf_loader.GLTF.html +7 -0
  128. package/docs/interfaces/gltf_loader.GLTFReference.html +1 -0
  129. package/docs/interfaces/gltf_loader.THREEGLTF.html +1 -0
  130. package/docs/interfaces/react.FiveActionReactCallbacks.html +52 -0
  131. package/docs/interfaces/react.FiveInjectionTypes.html +181 -0
  132. package/docs/interfaces/react.PropTypeOfFiveFeatures.html +1 -0
  133. package/docs/interfaces/server.Intersection.html +7 -0
  134. package/docs/interfaces/server.ModelEventCallback.html +18 -0
  135. package/docs/interfaces/sticker.IntersectionLike.html +8 -0
  136. package/docs/interfaces/vfx.ParticleArgs.html +75 -0
  137. package/docs/interfaces/vfx.ParticleTweenKeyframe.html +1 -0
  138. package/docs/interfaces/vue.FiveActionVueCallbacks.html +60 -0
  139. package/docs/modules/five.SubscribeMixinType.html +1 -0
  140. package/docs/modules/five.html +479 -3002
  141. package/docs/modules/gltf_loader.html +1 -155
  142. package/docs/modules/line.html +1 -202
  143. package/docs/modules/react.html +130 -1507
  144. package/docs/modules/server.html +18 -526
  145. package/docs/modules/sticker.html +1 -151
  146. package/docs/modules/vfx.html +1 -0
  147. package/docs/modules/vue.html +115 -0
  148. package/docs/modules.html +1 -136
  149. package/exporters/staticify.js +210 -0
  150. package/five/index.d.ts +1425 -285
  151. package/five/index.js +362 -1
  152. package/gltf-loader/index.d.ts +90 -5
  153. package/gltf-loader/index.js +260 -1
  154. package/line/index.d.ts +15 -2
  155. package/line/index.js +260 -1
  156. package/package.json +12 -12
  157. package/react/index.d.ts +73 -72
  158. package/react/index.js +260 -1
  159. package/scripts/five-staticify.js +26 -0
  160. package/server/index.d.ts +221 -27
  161. package/server/index.js +357 -1
  162. package/sticker/index.d.ts +2 -1
  163. package/sticker/index.js +260 -1
  164. package/templates/quick-start/package.json +1 -1
  165. package/umd/five-gltf-loader.js +1 -2
  166. package/umd/five-line.js +1 -2
  167. package/umd/five-react.js +1 -2
  168. package/umd/five-sticker.js +1 -2
  169. package/umd/five-vfx.js +1 -0
  170. package/umd/five-vue.js +1 -0
  171. package/umd/five.js +1 -1
  172. package/umd/five.js.LICENSE.txt +58 -118
  173. package/vfx/index.d.ts +264 -0
  174. package/vfx/index.js +260 -0
  175. package/vue/index.d.ts +441 -0
  176. package/vue/index.js +260 -0
  177. package/docs/assets/css/main.css +0 -2660
  178. package/docs/assets/js/main.js +0 -248
  179. package/docs/assets/js/search.js +0 -1
  180. package/docs/classes/five.camera.html +0 -323
  181. package/docs/classes/five.five-1.html +0 -2670
  182. package/docs/classes/five.hashcubetexture.html +0 -252
  183. package/docs/classes/five.internalwebglrenderer.html +0 -212
  184. package/docs/classes/five.model.html +0 -982
  185. package/docs/classes/five.pbmgroup.html +0 -427
  186. package/docs/classes/five.pbmmaterial.html +0 -533
  187. package/docs/classes/five.pbmmesh.html +0 -254
  188. package/docs/classes/five.scene.html +0 -263
  189. package/docs/classes/five.subscribe.html +0 -569
  190. package/docs/classes/gltf_loader.gltfloader.html +0 -412
  191. package/docs/classes/gltf_loader.gltfobject.html +0 -287
  192. package/docs/classes/line.line-1.html +0 -381
  193. package/docs/classes/line.linegeometry.html +0 -524
  194. package/docs/classes/line.linematerial.html +0 -300
  195. package/docs/classes/line.linesegmentsgeometry.html +0 -471
  196. package/docs/classes/react.store.html +0 -605
  197. package/docs/classes/server.model.html +0 -823
  198. package/docs/classes/server.pbmgroup.html +0 -366
  199. package/docs/classes/server.pbmmesh.html +0 -335
  200. package/docs/classes/sticker.sticker-1.html +0 -465
  201. package/docs/interfaces/five.addableobject.html +0 -234
  202. package/docs/interfaces/five.depthpanoramacontrollercustominitargs.html +0 -420
  203. package/docs/interfaces/five.eventcallback.html +0 -2548
  204. package/docs/interfaces/five.fiveinitargs.html +0 -707
  205. package/docs/interfaces/five.floorplancontrollercustominitargs.html +0 -295
  206. package/docs/interfaces/five.imageoptions.html +0 -332
  207. package/docs/interfaces/five.intersection.html +0 -227
  208. package/docs/interfaces/five.intersectmeshinterface.html +0 -188
  209. package/docs/interfaces/five.modelcontrollercustominitargs.html +0 -366
  210. package/docs/interfaces/five.modeleventcallback.html +0 -367
  211. package/docs/interfaces/five.movepanooptions.html +0 -469
  212. package/docs/interfaces/five.panocirclemeshinterface.html +0 -361
  213. package/docs/interfaces/five.panoramacontrollercustominitargs.html +0 -464
  214. package/docs/interfaces/five.panoramalikecontrollercustominitargs.html +0 -364
  215. package/docs/interfaces/five.pbmparameters.html +0 -474
  216. package/docs/interfaces/five.pose.html +0 -270
  217. package/docs/interfaces/five.scissor.html +0 -252
  218. package/docs/interfaces/five.state.html +0 -300
  219. package/docs/interfaces/five.subscribemixintype.emit.html +0 -180
  220. package/docs/interfaces/five.subscribemixintype.haslistener.html +0 -171
  221. package/docs/interfaces/five.subscribemixintype.off.html +0 -198
  222. package/docs/interfaces/five.subscribemixintype.on.html +0 -213
  223. package/docs/interfaces/five.subscribemixintype.once.html +0 -210
  224. package/docs/interfaces/five.topviewcontrollercustominitargs.html +0 -226
  225. package/docs/interfaces/five.vrpanoramacontrollercustominitargs.html +0 -452
  226. package/docs/interfaces/gltf_loader.gltf.html +0 -304
  227. package/docs/interfaces/react.fiveactionreactcallbacks.html +0 -580
  228. package/docs/interfaces/react.fiveinjectiontypes.html +0 -1625
  229. package/docs/interfaces/react.injectfivetoprops.html +0 -280
  230. package/docs/interfaces/server.intersection.html +0 -308
  231. package/docs/interfaces/server.modeleventcallback.html +0 -409
  232. package/docs/interfaces/sticker.intersectionlike.html +0 -223
  233. package/docs/modules/five.subscribemixintype.html +0 -143
  234. package/scripts/export-five-resource/chfs.exe +0 -0
  235. package/scripts/export-five-resource/fileify.js +0 -192
  236. package/scripts/export-five-resource/format-work.js +0 -71
  237. package/scripts/export-five-resource/staticify.js +0 -327
  238. package/scripts/transcode-model/BufferGeometryUtils.js +0 -832
  239. package/scripts/transcode-model/LoaderSupport.js +0 -1545
  240. package/scripts/transcode-model/MTLLoader.js +0 -602
  241. package/scripts/transcode-model/OBJLoader2.js +0 -1470
  242. package/scripts/transcode-model/obj2pbm.js +0 -65
  243. /package/docs/assets/{images/icons.png → icons.png} +0 -0
  244. /package/docs/assets/{images/icons@2x.png → icons@2x.png} +0 -0
  245. /package/docs/assets/{images/widgets.png → widgets.png} +0 -0
  246. /package/docs/assets/{images/widgets@2x.png → widgets@2x.png} +0 -0
  247. /package/resource/{basis_transcoder.js → basis/basis_transcoder.js} +0 -0
  248. /package/resource/{basis_transcoder.wasm → basis/basis_transcoder.wasm} +0 -0
  249. /package/resource/{draco_decoder.js → gltf/draco_decoder.js} +0 -0
  250. /package/resource/{draco_decoder.wasm → gltf/draco_decoder.wasm} +0 -0
  251. /package/resource/{draco_wasm_wrapper.js → gltf/draco_wasm_wrapper.js} +0 -0
@@ -1,602 +0,0 @@
1
- var THREE = require('three')
2
- /**
3
- * Loads a Wavefront .mtl file specifying materials
4
- *
5
- * @author angelxuanchang
6
- */
7
-
8
- THREE.MTLLoader = function ( manager ) {
9
-
10
- this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;
11
-
12
- };
13
-
14
- THREE.MTLLoader.prototype = {
15
-
16
- constructor: THREE.MTLLoader,
17
-
18
- /**
19
- * Loads and parses a MTL asset from a URL.
20
- *
21
- * @param {String} url - URL to the MTL file.
22
- * @param {Function} [onLoad] - Callback invoked with the loaded object.
23
- * @param {Function} [onProgress] - Callback for download progress.
24
- * @param {Function} [onError] - Callback for download errors.
25
- *
26
- * @see setPath setResourcePath
27
- *
28
- * @note In order for relative texture references to resolve correctly
29
- * you must call setResourcePath() explicitly prior to load.
30
- */
31
- load: function ( url, onLoad, onProgress, onError ) {
32
-
33
- var scope = this;
34
-
35
- var path = ( this.path === undefined ) ? THREE.LoaderUtils.extractUrlBase( url ) : this.path;
36
-
37
- var loader = new THREE.FileLoader( this.manager );
38
- loader.setPath( this.path );
39
- loader.load( url, function ( text ) {
40
-
41
- onLoad( scope.parse( text, path ) );
42
-
43
- }, onProgress, onError );
44
-
45
- },
46
-
47
- /**
48
- * Set base path for resolving references.
49
- * If set this path will be prepended to each loaded and found reference.
50
- *
51
- * @see setResourcePath
52
- * @param {String} path
53
- * @return {THREE.MTLLoader}
54
- *
55
- * @example
56
- * mtlLoader.setPath( 'assets/obj/' );
57
- * mtlLoader.load( 'my.mtl', ... );
58
- */
59
- setPath: function ( path ) {
60
-
61
- this.path = path;
62
- return this;
63
-
64
- },
65
-
66
- /**
67
- * Set base path for additional resources like textures.
68
- *
69
- * @see setPath
70
- * @param {String} path
71
- * @return {THREE.MTLLoader}
72
- *
73
- * @example
74
- * mtlLoader.setPath( 'assets/obj/' );
75
- * mtlLoader.setResourcePath( 'assets/textures/' );
76
- * mtlLoader.load( 'my.mtl', ... );
77
- */
78
- setResourcePath: function ( path ) {
79
-
80
- this.resourcePath = path;
81
- return this;
82
-
83
- },
84
-
85
- setTexturePath: function ( path ) {
86
-
87
- console.warn( 'THREE.MTLLoader: .setTexturePath() has been renamed to .setResourcePath().' );
88
- return this.setResourcePath( path );
89
-
90
- },
91
-
92
- setCrossOrigin: function ( value ) {
93
-
94
- this.crossOrigin = value;
95
- return this;
96
-
97
- },
98
-
99
- setMaterialOptions: function ( value ) {
100
-
101
- this.materialOptions = value;
102
- return this;
103
-
104
- },
105
-
106
- /**
107
- * Parses a MTL file.
108
- *
109
- * @param {String} text - Content of MTL file
110
- * @return {THREE.MTLLoader.MaterialCreator}
111
- *
112
- * @see setPath setResourcePath
113
- *
114
- * @note In order for relative texture references to resolve correctly
115
- * you must call setResourcePath() explicitly prior to parse.
116
- */
117
- parse: function ( text, path ) {
118
-
119
- var lines = text.split( '\n' );
120
- var info = {};
121
- var delimiter_pattern = /\s+/;
122
- var materialsInfo = {};
123
-
124
- for ( var i = 0; i < lines.length; i ++ ) {
125
-
126
- var line = lines[ i ];
127
- line = line.trim();
128
-
129
- if ( line.length === 0 || line.charAt( 0 ) === '#' ) {
130
-
131
- // Blank line or comment ignore
132
- continue;
133
-
134
- }
135
-
136
- var pos = line.indexOf( ' ' );
137
-
138
- var key = ( pos >= 0 ) ? line.substring( 0, pos ) : line;
139
- key = key.toLowerCase();
140
-
141
- var value = ( pos >= 0 ) ? line.substring( pos + 1 ) : '';
142
- value = value.trim();
143
-
144
- if ( key === 'newmtl' ) {
145
-
146
- // New material
147
-
148
- info = { name: value };
149
- materialsInfo[ value ] = info;
150
-
151
- } else {
152
-
153
- if ( key === 'ka' || key === 'kd' || key === 'ks' || key ==='ke' ) {
154
-
155
- var ss = value.split( delimiter_pattern, 3 );
156
- info[ key ] = [ parseFloat( ss[ 0 ] ), parseFloat( ss[ 1 ] ), parseFloat( ss[ 2 ] ) ];
157
-
158
- } else {
159
-
160
- info[ key ] = value;
161
-
162
- }
163
-
164
- }
165
-
166
- }
167
-
168
- var materialCreator = new THREE.MTLLoader.MaterialCreator(
169
- this.resourcePath || path,
170
- this.materialOptions,
171
- this.resourceURLHandle
172
- );
173
- materialCreator.setCrossOrigin( this.crossOrigin );
174
- materialCreator.setManager( this.manager );
175
- materialCreator.setMaterials( materialsInfo );
176
- return materialCreator;
177
-
178
- }
179
-
180
- };
181
-
182
- /**
183
- * Create a new THREE-MTLLoader.MaterialCreator
184
- * @param baseUrl - Url relative to which textures are loaded
185
- * @param options - Set of options on how to construct the materials
186
- * side: Which side to apply the material
187
- * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide
188
- * wrap: What type of wrapping to apply for textures
189
- * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping
190
- * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255
191
- * Default: false, assumed to be already normalized
192
- * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's
193
- * Default: false
194
- * @constructor
195
- */
196
-
197
- THREE.MTLLoader.MaterialCreator = function ( baseUrl, options, resourceURLHandle ) {
198
- this.baseUrl = baseUrl || '';
199
- this.options = options;
200
- this.materialsInfo = {};
201
- this.materials = {};
202
- this.materialsArray = [];
203
- this.nameLookup = {};
204
- this.resourceURLHandle = resourceURLHandle;
205
-
206
- this.side = ( this.options && this.options.side ) ? this.options.side : THREE.FrontSide;
207
- this.wrap = ( this.options && this.options.wrap ) ? this.options.wrap : THREE.RepeatWrapping;
208
-
209
- };
210
-
211
- THREE.MTLLoader.MaterialCreator.prototype = {
212
-
213
- constructor: THREE.MTLLoader.MaterialCreator,
214
-
215
- crossOrigin: 'anonymous',
216
-
217
- setCrossOrigin: function ( value ) {
218
-
219
- this.crossOrigin = value;
220
- return this;
221
-
222
- },
223
-
224
- setManager: function ( value ) {
225
-
226
- this.manager = value;
227
-
228
- },
229
-
230
- setMaterials: function ( materialsInfo ) {
231
-
232
- this.materialsInfo = this.convert( materialsInfo );
233
- this.materials = {};
234
- this.materialsArray = [];
235
- this.nameLookup = {};
236
-
237
- },
238
-
239
- convert: function ( materialsInfo ) {
240
-
241
- if ( ! this.options ) return materialsInfo;
242
-
243
- var converted = {};
244
-
245
- for ( var mn in materialsInfo ) {
246
-
247
- // Convert materials info into normalized form based on options
248
-
249
- var mat = materialsInfo[ mn ];
250
-
251
- var covmat = {};
252
-
253
- converted[ mn ] = covmat;
254
-
255
- for ( var prop in mat ) {
256
-
257
- var save = true;
258
- var value = mat[ prop ];
259
- var lprop = prop.toLowerCase();
260
-
261
- switch ( lprop ) {
262
-
263
- case 'kd':
264
- case 'ka':
265
- case 'ks':
266
-
267
- // Diffuse color (color under white light) using RGB values
268
-
269
- if ( this.options && this.options.normalizeRGB ) {
270
-
271
- value = [ value[ 0 ] / 255, value[ 1 ] / 255, value[ 2 ] / 255 ];
272
-
273
- }
274
-
275
- if ( this.options && this.options.ignoreZeroRGBs ) {
276
-
277
- if ( value[ 0 ] === 0 && value[ 1 ] === 0 && value[ 2 ] === 0 ) {
278
-
279
- // ignore
280
-
281
- save = false;
282
-
283
- }
284
-
285
- }
286
-
287
- break;
288
-
289
- default:
290
-
291
- break;
292
-
293
- }
294
-
295
- if ( save ) {
296
-
297
- covmat[ lprop ] = value;
298
-
299
- }
300
-
301
- }
302
-
303
- }
304
-
305
- return converted;
306
-
307
- },
308
-
309
- preload: function () {
310
-
311
- for ( var mn in this.materialsInfo ) {
312
-
313
- this.create( mn );
314
-
315
- }
316
-
317
- },
318
-
319
- getIndex: function ( materialName ) {
320
-
321
- return this.nameLookup[ materialName ];
322
-
323
- },
324
-
325
- getAsArray: function () {
326
-
327
- var index = 0;
328
-
329
- for ( var mn in this.materialsInfo ) {
330
-
331
- this.materialsArray[ index ] = this.create( mn );
332
- this.nameLookup[ mn ] = index;
333
- index ++;
334
-
335
- }
336
-
337
- return this.materialsArray;
338
-
339
- },
340
-
341
- create: function ( materialName ) {
342
-
343
- if ( this.materials[ materialName ] === undefined ) {
344
-
345
- this.createMaterial_( materialName );
346
-
347
- }
348
-
349
- return this.materials[ materialName ];
350
-
351
- },
352
-
353
- createMaterial_: function ( materialName ) {
354
-
355
- // Create material
356
-
357
- var scope = this;
358
- var mat = this.materialsInfo[ materialName ];
359
- var params = {
360
-
361
- name: materialName,
362
- side: this.side
363
-
364
- };
365
-
366
- function resolveURL( baseUrl, url ) {
367
-
368
- if ( typeof url !== 'string' || url === '' )
369
- return '';
370
-
371
- // Absolute URL
372
- if ( /^https?:\/\//i.test( url ) ) return url;
373
-
374
- return baseUrl + url;
375
-
376
- }
377
-
378
- function setMapForType( mapType, value ) {
379
-
380
- if ( params[ mapType ] ) return; // Keep the first encountered texture
381
-
382
- var texParams = scope.getTextureParams( value, params );
383
- var url = resolveURL( scope.baseUrl, texParams.url );
384
-
385
- if (scope.resourceURLHandle) {
386
- url = scope.resourceURLHandle(url);
387
- }
388
- var map;
389
- if (typeof Image === 'undefined') {
390
- map = new THREE.Texture();
391
- map.image = { src: url, currentSrc: url };
392
- } else {
393
- map = scope.loadTexture( url );
394
- }
395
-
396
- map.repeat.copy( texParams.scale );
397
- map.offset.copy( texParams.offset );
398
-
399
- map.wrapS = scope.wrap;
400
- map.wrapT = scope.wrap;
401
-
402
- params[ mapType ] = map;
403
-
404
- }
405
-
406
- for ( var prop in mat ) {
407
-
408
- var value = mat[ prop ];
409
- var n;
410
-
411
- if ( value === '' ) continue;
412
-
413
- switch ( prop.toLowerCase() ) {
414
-
415
- // Ns is material specular exponent
416
-
417
- case 'kd':
418
-
419
- // Diffuse color (color under white light) using RGB values
420
-
421
- params.color = new THREE.Color().fromArray( value );
422
-
423
- break;
424
-
425
- case 'ks':
426
-
427
- // Specular color (color when light is reflected from shiny surface) using RGB values
428
- params.specular = new THREE.Color().fromArray( value );
429
-
430
- break;
431
-
432
- case 'ke':
433
-
434
- // Emissive using RGB values
435
- params.emissive = new THREE.Color().fromArray( value );
436
-
437
- break;
438
-
439
- case 'map_kd':
440
-
441
- // Diffuse texture map
442
- setMapForType( "map", value );
443
- if ( mat.map_kd_repeat ) {
444
- const repeat = Number( mat.map_kd_repeat );
445
- params.map.repeat.set( repeat, repeat );
446
- }
447
-
448
- break;
449
-
450
- case 'map_ks':
451
-
452
- // Specular map
453
-
454
- setMapForType( "specularMap", value );
455
-
456
- break;
457
-
458
- case 'map_ke':
459
-
460
- // Emissive map
461
-
462
- setMapForType( "emissiveMap", value );
463
-
464
- break;
465
-
466
- case 'norm':
467
-
468
- setMapForType( "normalMap", value );
469
-
470
- break;
471
-
472
- case 'map_bump':
473
- case 'bump':
474
-
475
- // Bump texture map
476
-
477
- setMapForType( "bumpMap", value );
478
-
479
- break;
480
-
481
- case 'map_d':
482
-
483
- // Alpha map
484
-
485
- setMapForType( "alphaMap", value );
486
- params.transparent = true;
487
-
488
- break;
489
-
490
- case 'ns':
491
-
492
- // The specular exponent (defines the focus of the specular highlight)
493
- // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000.
494
-
495
- params.shininess = parseFloat( value );
496
-
497
- break;
498
-
499
- case 'd':
500
- n = parseFloat( value );
501
-
502
- if ( n < 1 ) {
503
-
504
- params.opacity = n;
505
- params.transparent = true;
506
-
507
- }
508
-
509
- break;
510
-
511
- case 'tr':
512
- n = parseFloat( value );
513
-
514
- if ( this.options && this.options.invertTrProperty ) n = 1 - n;
515
-
516
- if ( n > 0 ) {
517
-
518
- params.opacity = 1 - n;
519
- params.transparent = true;
520
-
521
- }
522
-
523
- break;
524
-
525
- default:
526
- break;
527
-
528
- }
529
-
530
- }
531
-
532
- this.materials[ materialName ] = new THREE.MeshPhongMaterial( params );
533
- return this.materials[ materialName ];
534
-
535
- },
536
-
537
- getTextureParams: function ( value, matParams ) {
538
-
539
- var texParams = {
540
-
541
- scale: new THREE.Vector2( 1, 1 ),
542
- offset: new THREE.Vector2( 0, 0 )
543
-
544
- };
545
-
546
- var items = value.split( /\s+/ );
547
- var pos;
548
-
549
- pos = items.indexOf( '-bm' );
550
-
551
- if ( pos >= 0 ) {
552
-
553
- matParams.bumpScale = parseFloat( items[ pos + 1 ] );
554
- items.splice( pos, 2 );
555
-
556
- }
557
-
558
- pos = items.indexOf( '-s' );
559
-
560
- if ( pos >= 0 ) {
561
-
562
- texParams.scale.set( parseFloat( items[ pos + 1 ] ), parseFloat( items[ pos + 2 ] ) );
563
- items.splice( pos, 4 ); // we expect 3 parameters here!
564
-
565
- }
566
-
567
- pos = items.indexOf( '-o' );
568
-
569
- if ( pos >= 0 ) {
570
-
571
- texParams.offset.set( parseFloat( items[ pos + 1 ] ), parseFloat( items[ pos + 2 ] ) );
572
- items.splice( pos, 4 ); // we expect 3 parameters here!
573
-
574
- }
575
-
576
- texParams.url = items.join( ' ' ).trim();
577
- return texParams;
578
-
579
- },
580
-
581
- loadTexture: function ( url, mapping, onLoad, onProgress, onError ) {
582
-
583
- var texture;
584
- var loader = null //THREE.Loader.Handlers.get( url );
585
- var manager = ( this.manager !== undefined ) ? this.manager : THREE.DefaultLoadingManager;
586
-
587
- if ( loader === null ) {
588
-
589
- loader = new THREE.TextureLoader( manager );
590
-
591
- }
592
-
593
- if ( loader.setCrossOrigin ) loader.setCrossOrigin( this.crossOrigin );
594
- texture = loader.load( url, onLoad, onProgress, onError );
595
-
596
- if ( mapping !== undefined ) texture.mapping = mapping;
597
-
598
- return texture;
599
-
600
- }
601
-
602
- };