@xviewer.js/core 1.0.0-alpha.60 → 1.0.0-alpha.62

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/dist/main.js CHANGED
@@ -3073,7 +3073,7 @@ class Plane extends three.Mesh {
3073
3073
  }
3074
3074
 
3075
3075
  class Reflector extends Component {
3076
- constructor({ textureWidth = 512, textureHeight = 512, clipBias = 0, multisample = 4, layer = 0, normal = new three.Vector3(0, 0, 1), mipmap = false } = {}){
3076
+ constructor({ textureWidth = 512, textureHeight = 512, clipBias = 0, multisample = 4, layer = 0, normal = new three.Vector3(0, 1, 0), mipmap = false } = {}){
3077
3077
  super();
3078
3078
  const reflectorPlane = new three.Plane();
3079
3079
  const reflectorNormal = new three.Vector3();
@@ -3347,10 +3347,11 @@ function getShaderMaterial(uniforms, vertexShader, fragmentShader, onInit) {
3347
3347
  return material;
3348
3348
  }
3349
3349
 
3350
- const vert_Reflector = `
3350
+ const vert_Reflector = /*glsl*/ `
3351
3351
  uniform mat4 textureMatrix;
3352
3352
  varying vec4 vUv4;
3353
3353
  varying vec2 vUv;
3354
+ varying vec3 vPositionWS;
3354
3355
 
3355
3356
  #ifdef USE_UV1
3356
3357
  varying vec2 vUv1;
@@ -3380,9 +3381,6 @@ void main() {
3380
3381
  transformed = instanceMatrix * transformed;
3381
3382
  #endif
3382
3383
 
3383
- vec4 positionWS = modelMatrix * transformed;
3384
- vec4 mvPosition = viewMatrix * positionWS;
3385
-
3386
3384
  vUv = uv;
3387
3385
 
3388
3386
  #ifdef USE_UV1
@@ -3397,8 +3395,11 @@ void main() {
3397
3395
  vUv3 = uv2;
3398
3396
  #endif
3399
3397
 
3400
- vUv4 = textureMatrix * transformed;
3398
+ vec4 positionWS = modelMatrix * transformed;
3399
+ vec4 mvPosition = viewMatrix * positionWS;
3401
3400
 
3401
+ vUv4 = textureMatrix * positionWS;
3402
+ vPositionWS = positionWS.xyz;
3402
3403
  vViewPosition = -mvPosition.xyz;
3403
3404
  vNormal = normalize(transformedNormal);
3404
3405
 
@@ -3407,7 +3408,7 @@ void main() {
3407
3408
  #include <logdepthbuf_vertex>
3408
3409
  }
3409
3410
  `;
3410
- const frag_Reflector = `
3411
+ const frag_Reflector = /*glsl*/ `
3411
3412
  uniform vec3 color;
3412
3413
  uniform float alpha;
3413
3414
  uniform float roughness;
@@ -3419,7 +3420,9 @@ uniform sampler2D aoMap;
3419
3420
  uniform float aoMapIntensity;
3420
3421
  uniform sampler2D lightMap;
3421
3422
  uniform float lightMapIntensity;
3422
- uniform sampler2D tReflect;
3423
+ uniform sampler2D reflectMap;
3424
+ uniform float reflectIntensity;
3425
+ varying vec3 vPositionWS;
3423
3426
 
3424
3427
  varying vec2 vUv;
3425
3428
 
@@ -3446,10 +3449,14 @@ varying vec3 vNormal;
3446
3449
  void main() {
3447
3450
  #include <logdepthbuf_fragment>
3448
3451
 
3452
+ vec3 coord = vUv4.xyz / vUv4.w;
3453
+ vec2 reflectUv = coord.xy;
3454
+
3455
+ #ifdef USE_NORMALMAP
3449
3456
  vec4 texelNormal = texture2D(normalMap, UV_NORMAL);
3450
3457
  vec3 normal = normalize(vec3(texelNormal.r * 2.0 - 1.0, texelNormal.b, texelNormal.g * 2.0 - 1.0));
3451
- vec3 coord = vUv4.xyz / vUv4.w;
3452
- vec2 reflectUv = coord.xy + coord.z * normal.xz * 0.05;
3458
+ reflectUv += coord.z * normal.xz * 0.05;
3459
+ #endif
3453
3460
 
3454
3461
  vec3 geometryNormal = normalize(vNormal);
3455
3462
  vec3 geometryViewDir = normalize(vViewPosition);
@@ -3470,7 +3477,11 @@ void main() {
3470
3477
  vec3 specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );
3471
3478
  float specularF90 = 1.0;
3472
3479
 
3473
- float roughnessFactor = texture2D(roughnessMap, UV_ROUGHNESS).g * roughness;
3480
+ float roughnessFactor = roughness;
3481
+
3482
+ #ifdef USE_ROUGHNESSMAP
3483
+ roughnessFactor *= texture2D(roughnessMap, UV_ROUGHNESS).g * roughness;
3484
+ #endif
3474
3485
 
3475
3486
  computeMultiscattering( geometryNormal, geometryViewDir, specularColor, specularF90, roughnessFactor, singleScattering, multiScattering );
3476
3487
 
@@ -3478,10 +3489,13 @@ void main() {
3478
3489
  vec3 diffuse = diffuseColor.rgb * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );
3479
3490
 
3480
3491
  vec3 irradiance = vec3(0.);
3492
+
3493
+ #ifdef USE_LIGHTMAP
3481
3494
  irradiance += texture2D(lightMap, UV_LIGHTMAP).rgb * lightMapIntensity;
3495
+ #endif
3482
3496
 
3483
3497
  float lod = roughnessFactor * (1.7 - 0.7 * roughnessFactor) * 6.;
3484
- vec4 reflectColor = textureLod(tReflect, reflectUv, lod);
3498
+ vec4 reflectColor = textureLod(reflectMap, reflectUv, lod) * reflectIntensity;
3485
3499
 
3486
3500
  vec3 f_specular = vec3(0.);
3487
3501
  vec3 f_diffuse = vec3(0.);
@@ -3489,9 +3503,13 @@ void main() {
3489
3503
  f_specular += reflectColor.rgb * (1.0 - roughnessFactor * roughnessFactor) + multiScattering * irradiance;
3490
3504
  f_diffuse += diffuse * irradiance;
3491
3505
 
3506
+ #ifdef USE_AOMAP
3492
3507
  float ambientOcclusion = mix(1., texture2D(aoMap, UV_AO).r, aoMapIntensity);
3508
+
3493
3509
  float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );
3494
3510
  f_specular *= computeSpecularOcclusion(dotNV, ambientOcclusion, roughnessFactor);
3511
+ f_diffuse *= ambientOcclusion;
3512
+ #endif
3495
3513
 
3496
3514
  gl_FragColor = vec4(f_specular + f_diffuse, diffuseColor.a);
3497
3515
 
@@ -3530,6 +3548,12 @@ class ReflectorMaterial extends three.ShaderMaterial {
3530
3548
  shader.defines[key] = "vUv" + channel;
3531
3549
  });
3532
3550
  }
3551
+ get color() {
3552
+ return this.uniforms.color.value;
3553
+ }
3554
+ set color(v) {
3555
+ this.uniforms.color.value = v;
3556
+ }
3533
3557
  get alpha() {
3534
3558
  return this.uniforms.alpha.value;
3535
3559
  }
@@ -3578,6 +3602,18 @@ class ReflectorMaterial extends three.ShaderMaterial {
3578
3602
  set lightMap(v) {
3579
3603
  this.uniforms.lightMap.value = v;
3580
3604
  }
3605
+ get lightMapIntensity() {
3606
+ return this.uniforms.lightMapIntensity.value;
3607
+ }
3608
+ set lightMapIntensity(v) {
3609
+ this.uniforms.lightMapIntensity.value = v;
3610
+ }
3611
+ get reflectIntensity() {
3612
+ return this.uniforms.reflectIntensity.value;
3613
+ }
3614
+ set reflectIntensity(v) {
3615
+ this.uniforms.reflectIntensity.value = v;
3616
+ }
3581
3617
  constructor(...args){
3582
3618
  super(...args);
3583
3619
  this.vertexShader = vert_Reflector;
@@ -3590,7 +3626,7 @@ class ReflectorMaterial extends three.ShaderMaterial {
3590
3626
  };
3591
3627
  this.uniforms = {
3592
3628
  color: {
3593
- value: new three.Color(0xffffff)
3629
+ value: new three.Color()
3594
3630
  },
3595
3631
  alpha: {
3596
3632
  value: 1
@@ -3598,9 +3634,12 @@ class ReflectorMaterial extends three.ShaderMaterial {
3598
3634
  map: {
3599
3635
  value: null
3600
3636
  },
3601
- tReflect: {
3637
+ reflectMap: {
3602
3638
  value: null
3603
3639
  },
3640
+ reflectIntensity: {
3641
+ value: 1
3642
+ },
3604
3643
  textureMatrix: {
3605
3644
  value: new three.Matrix4()
3606
3645
  },
@@ -3631,6 +3670,9 @@ class ReflectorMaterial extends three.ShaderMaterial {
3631
3670
  };
3632
3671
  }
3633
3672
  }
3673
+ __decorate([
3674
+ property
3675
+ ], ReflectorMaterial.prototype, "color", null);
3634
3676
  __decorate([
3635
3677
  property({
3636
3678
  min: 0,
@@ -4447,6 +4489,54 @@ function applyProps(target, props) {
4447
4489
  }
4448
4490
  return target;
4449
4491
  }
4492
+ function find(node, path) {
4493
+ let child = null;
4494
+ let parts = path.split("/");
4495
+ let children = node.children;
4496
+ for (let part of parts){
4497
+ child = children.find((v)=>v.name === part);
4498
+ if (child) {
4499
+ children = child.children;
4500
+ } else {
4501
+ return null;
4502
+ }
4503
+ }
4504
+ return child;
4505
+ }
4506
+ function getObject(node, filter, group = false) {
4507
+ const queue = [
4508
+ node
4509
+ ];
4510
+ const objects = [];
4511
+ while(queue.length !== 0){
4512
+ let object = queue.shift();
4513
+ let target = filter(object);
4514
+ if (target) {
4515
+ objects.push(object);
4516
+ if (!group) {
4517
+ break;
4518
+ }
4519
+ }
4520
+ object.children.forEach((v)=>queue.push(v));
4521
+ }
4522
+ if (group) {
4523
+ return objects;
4524
+ }
4525
+ return objects[0];
4526
+ }
4527
+ function getObjectByName(node, name) {
4528
+ return getObject(node, (v)=>v && v.name === name);
4529
+ }
4530
+ const __emtpyObject = {};
4531
+ function getObjectValue(object, name, group = false) {
4532
+ if (name) {
4533
+ if (group) {
4534
+ return Object.values(object || __emtpyObject).filter((v)=>v.name === name);
4535
+ }
4536
+ return Object.values(object || __emtpyObject).find((v)=>v.name === name);
4537
+ }
4538
+ return Object.values(object);
4539
+ }
4450
4540
 
4451
4541
  class PluginManager {
4452
4542
  get viewer() {
@@ -4562,62 +4652,6 @@ class Viewer extends EventEmitter {
4562
4652
  ], 2));
4563
4653
  return geometry;
4564
4654
  }
4565
- static findChild(node, path) {
4566
- let child = null;
4567
- let parts = path.split("/");
4568
- let children = node.children;
4569
- for (let part of parts){
4570
- child = children.find((v)=>v.name === part);
4571
- if (child) {
4572
- children = child.children;
4573
- } else {
4574
- return null;
4575
- }
4576
- }
4577
- return child;
4578
- }
4579
- static getChildByName(node, name) {
4580
- return Viewer.getObject(node, (v)=>v.name === name && v);
4581
- }
4582
- static getObject(node, filter, group = false) {
4583
- const queue = [
4584
- node
4585
- ];
4586
- const objects = [];
4587
- while(queue.length !== 0){
4588
- let object = queue.shift();
4589
- let target = filter(object);
4590
- if (target) {
4591
- objects.push(object);
4592
- if (!group) {
4593
- break;
4594
- }
4595
- }
4596
- object.children.forEach((v)=>queue.push(v));
4597
- }
4598
- if (group) {
4599
- return objects;
4600
- }
4601
- return objects[0];
4602
- }
4603
- static _getObjectValue(object, name, group = false) {
4604
- if (name) {
4605
- if (group) {
4606
- return Object.values(object || Viewer.__emtpyObject).filter((v)=>v.name === name);
4607
- }
4608
- return Object.values(object || Viewer.__emtpyObject).find((v)=>v.name === name);
4609
- }
4610
- return Object.values(object);
4611
- }
4612
- static getMaterial(node, name, group = false) {
4613
- return Viewer._getObjectValue(node.userData.materials, name, group);
4614
- }
4615
- static getTexture(node, name, group = false) {
4616
- return Viewer._getObjectValue(node.userData.textures, name, group);
4617
- }
4618
- static getMesh(node, name, group = false) {
4619
- return Viewer._getObjectValue(node.userData.meshes, name, group);
4620
- }
4621
4655
  get root() {
4622
4656
  return this._root;
4623
4657
  }
@@ -4819,7 +4853,7 @@ class Viewer extends EventEmitter {
4819
4853
  this._tweenManager.killTweensOf(target);
4820
4854
  }
4821
4855
  traverseMaterials(callback) {
4822
- Viewer.getObject(this._scene, (item)=>{
4856
+ getObject(this._scene, (item)=>{
4823
4857
  if (item.material) {
4824
4858
  if (Array.isArray(item.material)) item.material.forEach(callback);
4825
4859
  else callback(item.material);
@@ -5065,7 +5099,6 @@ Viewer._shadowCameraKeys = [
5065
5099
  "near",
5066
5100
  "far"
5067
5101
  ];
5068
- Viewer.__emtpyObject = {};
5069
5102
  Viewer.fullscreenMesh = new three.Mesh(Viewer.createFullscreenTriangle());
5070
5103
  Viewer.fullscreenCamera = new three.OrthographicCamera(-1, 1, 1, -1, 0, 1);
5071
5104
  Viewer._instanceCount = 0;
@@ -5845,11 +5878,16 @@ exports.aHDRLoader = aHDRLoader;
5845
5878
  exports.aJSONLoader = aJSONLoader;
5846
5879
  exports.aLoader = aLoader;
5847
5880
  exports.aTextureLoader = aTextureLoader;
5881
+ exports.applyProps = applyProps;
5848
5882
  exports.exponentialDamp = exponentialDamp;
5883
+ exports.find = find;
5849
5884
  exports.frag_BoxfilterBlur = frag_BoxfilterBlur;
5850
5885
  exports.frag_cubeMapToPanorama = frag_cubeMapToPanorama;
5851
5886
  exports.frag_panoramaToCubeMap = frag_panoramaToCubeMap;
5852
5887
  exports.getClassInstance = getClassInstance;
5888
+ exports.getObject = getObject;
5889
+ exports.getObjectByName = getObjectByName;
5890
+ exports.getObjectValue = getObjectValue;
5853
5891
  exports.getShaderMaterial = getShaderMaterial;
5854
5892
  exports.mixin = mixin;
5855
5893
  exports.property = property;