@realsee/five 5.0.0-alpha.18 → 5.0.0-alpha.181

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 (252) hide show
  1. package/README.md +21 -11
  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/{images/icons.png → icons.png} +0 -0
  6. package/docs/assets/{images/icons@2x.png → icons@2x.png} +0 -0
  7. package/docs/assets/main.js +52 -0
  8. package/docs/assets/search.js +1 -0
  9. package/docs/assets/style.css +1414 -0
  10. package/docs/assets/{images/widgets.png → widgets.png} +0 -0
  11. package/docs/assets/{images/widgets@2x.png → widgets@2x.png} +0 -0
  12. package/docs/classes/five.AnimationFrameLoop.html +15 -0
  13. package/docs/classes/five.BVH.html +10 -0
  14. package/docs/classes/five.BVHIntersect.html +1 -0
  15. package/docs/classes/five.BVHNode.html +7 -0
  16. package/docs/classes/five.BVHVector3.html +1 -0
  17. package/docs/classes/five.Camera.html +11 -0
  18. package/docs/classes/five.Clipper.html +1 -0
  19. package/docs/classes/five.Five.html +328 -0
  20. package/docs/classes/five.InternalWebGLRenderer.html +1 -0
  21. package/docs/classes/five.IntersectMesh.html +1 -0
  22. package/docs/classes/five.Model.html +89 -0
  23. package/docs/classes/five.NetworkSubscribe.html +50 -0
  24. package/docs/classes/five.PBMContainer.html +17 -0
  25. package/docs/classes/five.PBMGroup.html +19 -0
  26. package/docs/classes/five.PBMMaterial.html +27 -0
  27. package/docs/classes/five.PBMMesh.html +7 -0
  28. package/docs/classes/five.PanoCircleMesh.html +7 -0
  29. package/docs/classes/five.PanoCircleMeshCustom.html +7 -0
  30. package/docs/classes/five.PanoCircleMeshSolid.html +7 -0
  31. package/docs/classes/five.Scene.html +3 -0
  32. package/docs/classes/five.Subscribe.html +56 -0
  33. package/docs/classes/five.TextureLoader.html +1 -0
  34. package/docs/classes/five.Tile3D.html +34 -0
  35. package/docs/classes/five.Tile3DModel.html +15 -0
  36. package/docs/classes/five.TileBoundingSphere.html +1 -0
  37. package/docs/classes/five.TileCacheNode.html +1 -0
  38. package/docs/classes/five.TileCubeTextureTarget.html +1 -0
  39. package/docs/classes/five.TileCullingVolume.html +1 -0
  40. package/docs/classes/five.TileOrientedBoundingBox.html +1 -0
  41. package/docs/classes/five.TileRequestScheduler.html +16 -0
  42. package/docs/classes/five.Tileset3D.html +11 -0
  43. package/docs/classes/five.Tileset3DTraverser.html +1 -0
  44. package/docs/classes/five.TilesetCache.html +1 -0
  45. package/docs/classes/five.Work.html +32 -0
  46. package/docs/classes/five.XRButton.html +1 -0
  47. package/docs/classes/gltf_loader.DDSLoader.html +1 -0
  48. package/docs/classes/gltf_loader.DRACOLoader.html +1 -0
  49. package/docs/classes/gltf_loader.GLTFLoader.html +17 -0
  50. package/docs/classes/gltf_loader.GLTFObject.html +7 -0
  51. package/docs/classes/gltf_loader.GLTFParser.html +1 -0
  52. package/docs/classes/gltf_loader.THREEGLTFLoader.html +1 -0
  53. package/docs/classes/line.Line.html +1 -0
  54. package/docs/classes/line.LineGeometry.html +1 -0
  55. package/docs/classes/line.LineMaterial.html +1 -0
  56. package/docs/classes/line.LineSegmentsGeometry.html +1 -0
  57. package/docs/classes/line.THREE_Line2.html +1 -0
  58. package/docs/classes/line.THREE_LineSegments2.html +1 -0
  59. package/docs/classes/react.Store.html +29 -0
  60. package/docs/classes/server.BVH.html +10 -0
  61. package/docs/classes/server.BVHIntersect.html +1 -0
  62. package/docs/classes/server.BVHNode.html +7 -0
  63. package/docs/classes/server.BVHVector3.html +1 -0
  64. package/docs/classes/server.Model.html +70 -0
  65. package/docs/classes/server.PBMContainer.html +7 -0
  66. package/docs/classes/server.PBMGroup.html +9 -0
  67. package/docs/classes/server.PBMMesh.html +7 -0
  68. package/docs/classes/sticker.Sticker.html +32 -0
  69. package/docs/classes/vfx.Airflow.html +1 -0
  70. package/docs/classes/vfx.Flame.html +1 -0
  71. package/docs/classes/vfx.Particle.html +89 -0
  72. package/docs/classes/vfx.SpotLight.html +1 -0
  73. package/docs/index.html +166 -434
  74. package/docs/interfaces/five.AddableObject.html +9 -0
  75. package/docs/interfaces/five.AnimationFrame.html +1 -0
  76. package/docs/interfaces/five.CameraPose.html +1 -0
  77. package/docs/interfaces/five.ClipperParameter.html +1 -0
  78. package/docs/interfaces/five.DepthPanoramaControllerCustomInitArgs.html +28 -0
  79. package/docs/interfaces/five.EventCallback.html +400 -0
  80. package/docs/interfaces/five.FiveInitArgs.html +109 -0
  81. package/docs/interfaces/five.FloorplanControllerCustomInitArgs.html +17 -0
  82. package/docs/interfaces/five.ImageOptions.html +18 -0
  83. package/docs/interfaces/five.ImageURLMappings.html +1 -0
  84. package/docs/interfaces/five.ImageURLOptions.html +15 -0
  85. package/docs/interfaces/five.IntersectMeshInterface.html +3 -0
  86. package/docs/interfaces/five.Intersection.html +7 -0
  87. package/docs/interfaces/five.MapviewControllerCustomInitArgs.html +15 -0
  88. package/docs/interfaces/five.ModelControllerCustomInitArgs.html +20 -0
  89. package/docs/interfaces/five.ModelEventCallback.html +22 -0
  90. package/docs/interfaces/five.MotionKeyframe.html +1 -0
  91. package/docs/interfaces/five.MovePanoOptions.html +42 -0
  92. package/docs/interfaces/five.NetworkOptions.html +9 -0
  93. package/docs/interfaces/five.PBMPanoPicture.html +7 -0
  94. package/docs/interfaces/five.PBMParameters.html +27 -0
  95. package/docs/interfaces/five.PanoCircleMeshCustomOptions.html +1 -0
  96. package/docs/interfaces/five.PanoCircleMeshInterface.html +19 -0
  97. package/docs/interfaces/five.PanoCircleMeshOptions.html +1 -0
  98. package/docs/interfaces/five.PanoCircleMeshSolidOptions.html +1 -0
  99. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +35 -0
  100. package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +20 -0
  101. package/docs/interfaces/five.Pose.html +37 -0
  102. package/docs/interfaces/five.Scissor.html +14 -0
  103. package/docs/interfaces/five.State.html +21 -0
  104. package/docs/interfaces/five.SubscribeMixinType.emit.html +1 -0
  105. package/docs/interfaces/five.SubscribeMixinType.hasListener.html +1 -0
  106. package/docs/interfaces/five.SubscribeMixinType.off.html +1 -0
  107. package/docs/interfaces/five.SubscribeMixinType.on.html +1 -0
  108. package/docs/interfaces/five.SubscribeMixinType.once.html +1 -0
  109. package/docs/interfaces/five.TextureOptions.html +20 -0
  110. package/docs/interfaces/five.Tile3DModelLoaderOptions.html +3 -0
  111. package/docs/interfaces/five.TileBoundingVolume.html +19 -0
  112. package/docs/interfaces/five.TileContent.html +1 -0
  113. package/docs/interfaces/five.TileCubeNode.html +1 -0
  114. package/docs/interfaces/five.TileCubeTree.html +1 -0
  115. package/docs/interfaces/five.Tileset3dOptions.html +1 -0
  116. package/docs/interfaces/five.TilesetJSON.html +1 -0
  117. package/docs/interfaces/five.TilesetJSONNode.html +1 -0
  118. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +9 -0
  119. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +31 -0
  120. package/docs/interfaces/five.WebXRSelectParams.html +1 -0
  121. package/docs/interfaces/five.WorkCubeImage.html +13 -0
  122. package/docs/interfaces/five.WorkImage.html +21 -0
  123. package/docs/interfaces/five.WorkInitial.html +13 -0
  124. package/docs/interfaces/five.WorkModel.html +11 -0
  125. package/docs/interfaces/five.WorkModelTiles.html +3 -0
  126. package/docs/interfaces/five.WorkObserver.html +25 -0
  127. package/docs/interfaces/five.WorkTile.html +1 -0
  128. package/docs/interfaces/five.WorkVideo.html +9 -0
  129. package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +31 -0
  130. package/docs/interfaces/gltf_loader.DDS.html +1 -0
  131. package/docs/interfaces/gltf_loader.GLTF.html +7 -0
  132. package/docs/interfaces/gltf_loader.GLTFReference.html +1 -0
  133. package/docs/interfaces/gltf_loader.THREEGLTF.html +1 -0
  134. package/docs/interfaces/react.FiveActionReactCallbacks.html +52 -0
  135. package/docs/interfaces/react.FiveInjectionTypes.html +181 -0
  136. package/docs/interfaces/react.PropTypeOfFiveFeatures.html +1 -0
  137. package/docs/interfaces/server.Intersection.html +7 -0
  138. package/docs/interfaces/server.ModelEventCallback.html +18 -0
  139. package/docs/interfaces/sticker.IntersectionLike.html +8 -0
  140. package/docs/interfaces/vfx.ParticleArgs.html +75 -0
  141. package/docs/interfaces/vfx.ParticleTweenKeyframe.html +1 -0
  142. package/docs/interfaces/vue.FiveActionVueCallbacks.html +60 -0
  143. package/docs/modules/five.SubscribeMixinType.html +1 -0
  144. package/docs/modules/five.html +479 -3002
  145. package/docs/modules/gltf_loader.html +1 -155
  146. package/docs/modules/line.html +1 -202
  147. package/docs/modules/react.html +130 -1507
  148. package/docs/modules/server.html +18 -526
  149. package/docs/modules/sticker.html +1 -151
  150. package/docs/modules/vfx.html +1 -0
  151. package/docs/modules/vue.html +115 -0
  152. package/docs/modules.html +1 -136
  153. package/exporters/staticify.js +210 -0
  154. package/five/index.d.ts +1416 -285
  155. package/five/index.js +362 -1
  156. package/gltf-loader/index.d.ts +90 -5
  157. package/gltf-loader/index.js +260 -1
  158. package/line/index.d.ts +15 -2
  159. package/line/index.js +260 -1
  160. package/package.json +12 -15
  161. package/react/index.d.ts +73 -72
  162. package/react/index.js +260 -1
  163. package/resource/{basis_transcoder.js → basis/basis_transcoder.js} +0 -0
  164. package/resource/{basis_transcoder.wasm → basis/basis_transcoder.wasm} +0 -0
  165. package/resource/{draco_decoder.js → gltf/draco_decoder.js} +0 -0
  166. package/resource/{draco_decoder.wasm → gltf/draco_decoder.wasm} +0 -0
  167. package/resource/{draco_wasm_wrapper.js → gltf/draco_wasm_wrapper.js} +0 -0
  168. package/scripts/five-staticify.js +26 -0
  169. package/server/index.d.ts +219 -27
  170. package/server/index.js +357 -1
  171. package/sticker/index.d.ts +2 -1
  172. package/sticker/index.js +260 -1
  173. package/templates/quick-start/README.md +1 -1
  174. package/templates/quick-start/package.json +1 -1
  175. package/umd/five-gltf-loader.js +1 -2
  176. package/umd/five-line.js +1 -2
  177. package/umd/five-react.js +1 -2
  178. package/umd/five-sticker.js +1 -2
  179. package/umd/five-vfx.js +1 -0
  180. package/umd/five-vue.js +1 -0
  181. package/umd/five.js +1 -1
  182. package/umd/five.js.LICENSE.txt +58 -118
  183. package/vfx/index.d.ts +264 -0
  184. package/vfx/index.js +260 -0
  185. package/vue/index.d.ts +441 -0
  186. package/vue/index.js +260 -0
  187. package/docs/assets/css/main.css +0 -2660
  188. package/docs/assets/js/main.js +0 -248
  189. package/docs/assets/js/search.js +0 -1
  190. package/docs/classes/five.camera.html +0 -323
  191. package/docs/classes/five.five-1.html +0 -2670
  192. package/docs/classes/five.hashcubetexture.html +0 -252
  193. package/docs/classes/five.internalwebglrenderer.html +0 -212
  194. package/docs/classes/five.model.html +0 -982
  195. package/docs/classes/five.pbmgroup.html +0 -427
  196. package/docs/classes/five.pbmmaterial.html +0 -533
  197. package/docs/classes/five.pbmmesh.html +0 -254
  198. package/docs/classes/five.scene.html +0 -263
  199. package/docs/classes/five.subscribe.html +0 -569
  200. package/docs/classes/gltf_loader.gltfloader.html +0 -412
  201. package/docs/classes/gltf_loader.gltfobject.html +0 -287
  202. package/docs/classes/line.line-1.html +0 -381
  203. package/docs/classes/line.linegeometry.html +0 -524
  204. package/docs/classes/line.linematerial.html +0 -300
  205. package/docs/classes/line.linesegmentsgeometry.html +0 -471
  206. package/docs/classes/react.store.html +0 -605
  207. package/docs/classes/server.model.html +0 -823
  208. package/docs/classes/server.pbmgroup.html +0 -366
  209. package/docs/classes/server.pbmmesh.html +0 -335
  210. package/docs/classes/sticker.sticker-1.html +0 -465
  211. package/docs/interfaces/five.addableobject.html +0 -234
  212. package/docs/interfaces/five.depthpanoramacontrollercustominitargs.html +0 -420
  213. package/docs/interfaces/five.eventcallback.html +0 -2548
  214. package/docs/interfaces/five.fiveinitargs.html +0 -707
  215. package/docs/interfaces/five.floorplancontrollercustominitargs.html +0 -295
  216. package/docs/interfaces/five.imageoptions.html +0 -332
  217. package/docs/interfaces/five.intersection.html +0 -227
  218. package/docs/interfaces/five.intersectmeshinterface.html +0 -188
  219. package/docs/interfaces/five.modelcontrollercustominitargs.html +0 -366
  220. package/docs/interfaces/five.modeleventcallback.html +0 -367
  221. package/docs/interfaces/five.movepanooptions.html +0 -469
  222. package/docs/interfaces/five.panocirclemeshinterface.html +0 -361
  223. package/docs/interfaces/five.panoramacontrollercustominitargs.html +0 -464
  224. package/docs/interfaces/five.panoramalikecontrollercustominitargs.html +0 -364
  225. package/docs/interfaces/five.pbmparameters.html +0 -474
  226. package/docs/interfaces/five.pose.html +0 -270
  227. package/docs/interfaces/five.scissor.html +0 -252
  228. package/docs/interfaces/five.state.html +0 -300
  229. package/docs/interfaces/five.subscribemixintype.emit.html +0 -180
  230. package/docs/interfaces/five.subscribemixintype.haslistener.html +0 -171
  231. package/docs/interfaces/five.subscribemixintype.off.html +0 -198
  232. package/docs/interfaces/five.subscribemixintype.on.html +0 -213
  233. package/docs/interfaces/five.subscribemixintype.once.html +0 -210
  234. package/docs/interfaces/five.topviewcontrollercustominitargs.html +0 -226
  235. package/docs/interfaces/five.vrpanoramacontrollercustominitargs.html +0 -452
  236. package/docs/interfaces/gltf_loader.gltf.html +0 -304
  237. package/docs/interfaces/react.fiveactionreactcallbacks.html +0 -580
  238. package/docs/interfaces/react.fiveinjectiontypes.html +0 -1625
  239. package/docs/interfaces/react.injectfivetoprops.html +0 -280
  240. package/docs/interfaces/server.intersection.html +0 -308
  241. package/docs/interfaces/server.modeleventcallback.html +0 -409
  242. package/docs/interfaces/sticker.intersectionlike.html +0 -223
  243. package/docs/modules/five.subscribemixintype.html +0 -143
  244. package/scripts/export-five-resource/chfs.exe +0 -0
  245. package/scripts/export-five-resource/fileify.js +0 -192
  246. package/scripts/export-five-resource/format-work.js +0 -71
  247. package/scripts/export-five-resource/staticify.js +0 -327
  248. package/scripts/transcode-model/BufferGeometryUtils.js +0 -832
  249. package/scripts/transcode-model/LoaderSupport.js +0 -1545
  250. package/scripts/transcode-model/MTLLoader.js +0 -602
  251. package/scripts/transcode-model/OBJLoader2.js +0 -1470
  252. package/scripts/transcode-model/obj2pbm.js +0 -65
@@ -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
- };