@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 +110 -72
- package/dist/main.js.map +1 -1
- package/dist/module.js +106 -73
- package/dist/module.js.map +1 -1
- package/package.json +1 -1
- package/types/Utils.d.ts +7 -0
- package/types/Viewer.d.ts +0 -13
- package/types/index.d.ts +1 -0
- package/types/materials/ReflectorMaterial.d.ts +7 -1
package/dist/module.js
CHANGED
|
@@ -3071,7 +3071,7 @@ class Plane extends Mesh {
|
|
|
3071
3071
|
}
|
|
3072
3072
|
|
|
3073
3073
|
class Reflector extends Component {
|
|
3074
|
-
constructor({ textureWidth = 512, textureHeight = 512, clipBias = 0, multisample = 4, layer = 0, normal = new Vector3(0,
|
|
3074
|
+
constructor({ textureWidth = 512, textureHeight = 512, clipBias = 0, multisample = 4, layer = 0, normal = new Vector3(0, 1, 0), mipmap = false } = {}){
|
|
3075
3075
|
super();
|
|
3076
3076
|
const reflectorPlane = new Plane$1();
|
|
3077
3077
|
const reflectorNormal = new Vector3();
|
|
@@ -3345,10 +3345,11 @@ function getShaderMaterial(uniforms, vertexShader, fragmentShader, onInit) {
|
|
|
3345
3345
|
return material;
|
|
3346
3346
|
}
|
|
3347
3347
|
|
|
3348
|
-
const vert_Reflector = `
|
|
3348
|
+
const vert_Reflector = /*glsl*/ `
|
|
3349
3349
|
uniform mat4 textureMatrix;
|
|
3350
3350
|
varying vec4 vUv4;
|
|
3351
3351
|
varying vec2 vUv;
|
|
3352
|
+
varying vec3 vPositionWS;
|
|
3352
3353
|
|
|
3353
3354
|
#ifdef USE_UV1
|
|
3354
3355
|
varying vec2 vUv1;
|
|
@@ -3378,9 +3379,6 @@ void main() {
|
|
|
3378
3379
|
transformed = instanceMatrix * transformed;
|
|
3379
3380
|
#endif
|
|
3380
3381
|
|
|
3381
|
-
vec4 positionWS = modelMatrix * transformed;
|
|
3382
|
-
vec4 mvPosition = viewMatrix * positionWS;
|
|
3383
|
-
|
|
3384
3382
|
vUv = uv;
|
|
3385
3383
|
|
|
3386
3384
|
#ifdef USE_UV1
|
|
@@ -3395,8 +3393,11 @@ void main() {
|
|
|
3395
3393
|
vUv3 = uv2;
|
|
3396
3394
|
#endif
|
|
3397
3395
|
|
|
3398
|
-
|
|
3396
|
+
vec4 positionWS = modelMatrix * transformed;
|
|
3397
|
+
vec4 mvPosition = viewMatrix * positionWS;
|
|
3399
3398
|
|
|
3399
|
+
vUv4 = textureMatrix * positionWS;
|
|
3400
|
+
vPositionWS = positionWS.xyz;
|
|
3400
3401
|
vViewPosition = -mvPosition.xyz;
|
|
3401
3402
|
vNormal = normalize(transformedNormal);
|
|
3402
3403
|
|
|
@@ -3405,7 +3406,7 @@ void main() {
|
|
|
3405
3406
|
#include <logdepthbuf_vertex>
|
|
3406
3407
|
}
|
|
3407
3408
|
`;
|
|
3408
|
-
const frag_Reflector = `
|
|
3409
|
+
const frag_Reflector = /*glsl*/ `
|
|
3409
3410
|
uniform vec3 color;
|
|
3410
3411
|
uniform float alpha;
|
|
3411
3412
|
uniform float roughness;
|
|
@@ -3417,7 +3418,9 @@ uniform sampler2D aoMap;
|
|
|
3417
3418
|
uniform float aoMapIntensity;
|
|
3418
3419
|
uniform sampler2D lightMap;
|
|
3419
3420
|
uniform float lightMapIntensity;
|
|
3420
|
-
uniform sampler2D
|
|
3421
|
+
uniform sampler2D reflectMap;
|
|
3422
|
+
uniform float reflectIntensity;
|
|
3423
|
+
varying vec3 vPositionWS;
|
|
3421
3424
|
|
|
3422
3425
|
varying vec2 vUv;
|
|
3423
3426
|
|
|
@@ -3444,10 +3447,14 @@ varying vec3 vNormal;
|
|
|
3444
3447
|
void main() {
|
|
3445
3448
|
#include <logdepthbuf_fragment>
|
|
3446
3449
|
|
|
3450
|
+
vec3 coord = vUv4.xyz / vUv4.w;
|
|
3451
|
+
vec2 reflectUv = coord.xy;
|
|
3452
|
+
|
|
3453
|
+
#ifdef USE_NORMALMAP
|
|
3447
3454
|
vec4 texelNormal = texture2D(normalMap, UV_NORMAL);
|
|
3448
3455
|
vec3 normal = normalize(vec3(texelNormal.r * 2.0 - 1.0, texelNormal.b, texelNormal.g * 2.0 - 1.0));
|
|
3449
|
-
|
|
3450
|
-
|
|
3456
|
+
reflectUv += coord.z * normal.xz * 0.05;
|
|
3457
|
+
#endif
|
|
3451
3458
|
|
|
3452
3459
|
vec3 geometryNormal = normalize(vNormal);
|
|
3453
3460
|
vec3 geometryViewDir = normalize(vViewPosition);
|
|
@@ -3468,7 +3475,11 @@ void main() {
|
|
|
3468
3475
|
vec3 specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );
|
|
3469
3476
|
float specularF90 = 1.0;
|
|
3470
3477
|
|
|
3471
|
-
float roughnessFactor =
|
|
3478
|
+
float roughnessFactor = roughness;
|
|
3479
|
+
|
|
3480
|
+
#ifdef USE_ROUGHNESSMAP
|
|
3481
|
+
roughnessFactor *= texture2D(roughnessMap, UV_ROUGHNESS).g * roughness;
|
|
3482
|
+
#endif
|
|
3472
3483
|
|
|
3473
3484
|
computeMultiscattering( geometryNormal, geometryViewDir, specularColor, specularF90, roughnessFactor, singleScattering, multiScattering );
|
|
3474
3485
|
|
|
@@ -3476,10 +3487,13 @@ void main() {
|
|
|
3476
3487
|
vec3 diffuse = diffuseColor.rgb * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );
|
|
3477
3488
|
|
|
3478
3489
|
vec3 irradiance = vec3(0.);
|
|
3490
|
+
|
|
3491
|
+
#ifdef USE_LIGHTMAP
|
|
3479
3492
|
irradiance += texture2D(lightMap, UV_LIGHTMAP).rgb * lightMapIntensity;
|
|
3493
|
+
#endif
|
|
3480
3494
|
|
|
3481
3495
|
float lod = roughnessFactor * (1.7 - 0.7 * roughnessFactor) * 6.;
|
|
3482
|
-
vec4 reflectColor = textureLod(
|
|
3496
|
+
vec4 reflectColor = textureLod(reflectMap, reflectUv, lod) * reflectIntensity;
|
|
3483
3497
|
|
|
3484
3498
|
vec3 f_specular = vec3(0.);
|
|
3485
3499
|
vec3 f_diffuse = vec3(0.);
|
|
@@ -3487,9 +3501,13 @@ void main() {
|
|
|
3487
3501
|
f_specular += reflectColor.rgb * (1.0 - roughnessFactor * roughnessFactor) + multiScattering * irradiance;
|
|
3488
3502
|
f_diffuse += diffuse * irradiance;
|
|
3489
3503
|
|
|
3504
|
+
#ifdef USE_AOMAP
|
|
3490
3505
|
float ambientOcclusion = mix(1., texture2D(aoMap, UV_AO).r, aoMapIntensity);
|
|
3506
|
+
|
|
3491
3507
|
float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );
|
|
3492
3508
|
f_specular *= computeSpecularOcclusion(dotNV, ambientOcclusion, roughnessFactor);
|
|
3509
|
+
f_diffuse *= ambientOcclusion;
|
|
3510
|
+
#endif
|
|
3493
3511
|
|
|
3494
3512
|
gl_FragColor = vec4(f_specular + f_diffuse, diffuseColor.a);
|
|
3495
3513
|
|
|
@@ -3528,6 +3546,12 @@ class ReflectorMaterial extends ShaderMaterial {
|
|
|
3528
3546
|
shader.defines[key] = "vUv" + channel;
|
|
3529
3547
|
});
|
|
3530
3548
|
}
|
|
3549
|
+
get color() {
|
|
3550
|
+
return this.uniforms.color.value;
|
|
3551
|
+
}
|
|
3552
|
+
set color(v) {
|
|
3553
|
+
this.uniforms.color.value = v;
|
|
3554
|
+
}
|
|
3531
3555
|
get alpha() {
|
|
3532
3556
|
return this.uniforms.alpha.value;
|
|
3533
3557
|
}
|
|
@@ -3576,6 +3600,18 @@ class ReflectorMaterial extends ShaderMaterial {
|
|
|
3576
3600
|
set lightMap(v) {
|
|
3577
3601
|
this.uniforms.lightMap.value = v;
|
|
3578
3602
|
}
|
|
3603
|
+
get lightMapIntensity() {
|
|
3604
|
+
return this.uniforms.lightMapIntensity.value;
|
|
3605
|
+
}
|
|
3606
|
+
set lightMapIntensity(v) {
|
|
3607
|
+
this.uniforms.lightMapIntensity.value = v;
|
|
3608
|
+
}
|
|
3609
|
+
get reflectIntensity() {
|
|
3610
|
+
return this.uniforms.reflectIntensity.value;
|
|
3611
|
+
}
|
|
3612
|
+
set reflectIntensity(v) {
|
|
3613
|
+
this.uniforms.reflectIntensity.value = v;
|
|
3614
|
+
}
|
|
3579
3615
|
constructor(...args){
|
|
3580
3616
|
super(...args);
|
|
3581
3617
|
this.vertexShader = vert_Reflector;
|
|
@@ -3588,7 +3624,7 @@ class ReflectorMaterial extends ShaderMaterial {
|
|
|
3588
3624
|
};
|
|
3589
3625
|
this.uniforms = {
|
|
3590
3626
|
color: {
|
|
3591
|
-
value: new Color(
|
|
3627
|
+
value: new Color()
|
|
3592
3628
|
},
|
|
3593
3629
|
alpha: {
|
|
3594
3630
|
value: 1
|
|
@@ -3596,9 +3632,12 @@ class ReflectorMaterial extends ShaderMaterial {
|
|
|
3596
3632
|
map: {
|
|
3597
3633
|
value: null
|
|
3598
3634
|
},
|
|
3599
|
-
|
|
3635
|
+
reflectMap: {
|
|
3600
3636
|
value: null
|
|
3601
3637
|
},
|
|
3638
|
+
reflectIntensity: {
|
|
3639
|
+
value: 1
|
|
3640
|
+
},
|
|
3602
3641
|
textureMatrix: {
|
|
3603
3642
|
value: new Matrix4()
|
|
3604
3643
|
},
|
|
@@ -3629,6 +3668,9 @@ class ReflectorMaterial extends ShaderMaterial {
|
|
|
3629
3668
|
};
|
|
3630
3669
|
}
|
|
3631
3670
|
}
|
|
3671
|
+
__decorate([
|
|
3672
|
+
property
|
|
3673
|
+
], ReflectorMaterial.prototype, "color", null);
|
|
3632
3674
|
__decorate([
|
|
3633
3675
|
property({
|
|
3634
3676
|
min: 0,
|
|
@@ -4445,6 +4487,54 @@ function applyProps(target, props) {
|
|
|
4445
4487
|
}
|
|
4446
4488
|
return target;
|
|
4447
4489
|
}
|
|
4490
|
+
function find(node, path) {
|
|
4491
|
+
let child = null;
|
|
4492
|
+
let parts = path.split("/");
|
|
4493
|
+
let children = node.children;
|
|
4494
|
+
for (let part of parts){
|
|
4495
|
+
child = children.find((v)=>v.name === part);
|
|
4496
|
+
if (child) {
|
|
4497
|
+
children = child.children;
|
|
4498
|
+
} else {
|
|
4499
|
+
return null;
|
|
4500
|
+
}
|
|
4501
|
+
}
|
|
4502
|
+
return child;
|
|
4503
|
+
}
|
|
4504
|
+
function getObject(node, filter, group = false) {
|
|
4505
|
+
const queue = [
|
|
4506
|
+
node
|
|
4507
|
+
];
|
|
4508
|
+
const objects = [];
|
|
4509
|
+
while(queue.length !== 0){
|
|
4510
|
+
let object = queue.shift();
|
|
4511
|
+
let target = filter(object);
|
|
4512
|
+
if (target) {
|
|
4513
|
+
objects.push(object);
|
|
4514
|
+
if (!group) {
|
|
4515
|
+
break;
|
|
4516
|
+
}
|
|
4517
|
+
}
|
|
4518
|
+
object.children.forEach((v)=>queue.push(v));
|
|
4519
|
+
}
|
|
4520
|
+
if (group) {
|
|
4521
|
+
return objects;
|
|
4522
|
+
}
|
|
4523
|
+
return objects[0];
|
|
4524
|
+
}
|
|
4525
|
+
function getObjectByName(node, name) {
|
|
4526
|
+
return getObject(node, (v)=>v && v.name === name);
|
|
4527
|
+
}
|
|
4528
|
+
const __emtpyObject = {};
|
|
4529
|
+
function getObjectValue(object, name, group = false) {
|
|
4530
|
+
if (name) {
|
|
4531
|
+
if (group) {
|
|
4532
|
+
return Object.values(object || __emtpyObject).filter((v)=>v.name === name);
|
|
4533
|
+
}
|
|
4534
|
+
return Object.values(object || __emtpyObject).find((v)=>v.name === name);
|
|
4535
|
+
}
|
|
4536
|
+
return Object.values(object);
|
|
4537
|
+
}
|
|
4448
4538
|
|
|
4449
4539
|
class PluginManager {
|
|
4450
4540
|
get viewer() {
|
|
@@ -4560,62 +4650,6 @@ class Viewer extends EventEmitter {
|
|
|
4560
4650
|
], 2));
|
|
4561
4651
|
return geometry;
|
|
4562
4652
|
}
|
|
4563
|
-
static findChild(node, path) {
|
|
4564
|
-
let child = null;
|
|
4565
|
-
let parts = path.split("/");
|
|
4566
|
-
let children = node.children;
|
|
4567
|
-
for (let part of parts){
|
|
4568
|
-
child = children.find((v)=>v.name === part);
|
|
4569
|
-
if (child) {
|
|
4570
|
-
children = child.children;
|
|
4571
|
-
} else {
|
|
4572
|
-
return null;
|
|
4573
|
-
}
|
|
4574
|
-
}
|
|
4575
|
-
return child;
|
|
4576
|
-
}
|
|
4577
|
-
static getChildByName(node, name) {
|
|
4578
|
-
return Viewer.getObject(node, (v)=>v.name === name && v);
|
|
4579
|
-
}
|
|
4580
|
-
static getObject(node, filter, group = false) {
|
|
4581
|
-
const queue = [
|
|
4582
|
-
node
|
|
4583
|
-
];
|
|
4584
|
-
const objects = [];
|
|
4585
|
-
while(queue.length !== 0){
|
|
4586
|
-
let object = queue.shift();
|
|
4587
|
-
let target = filter(object);
|
|
4588
|
-
if (target) {
|
|
4589
|
-
objects.push(object);
|
|
4590
|
-
if (!group) {
|
|
4591
|
-
break;
|
|
4592
|
-
}
|
|
4593
|
-
}
|
|
4594
|
-
object.children.forEach((v)=>queue.push(v));
|
|
4595
|
-
}
|
|
4596
|
-
if (group) {
|
|
4597
|
-
return objects;
|
|
4598
|
-
}
|
|
4599
|
-
return objects[0];
|
|
4600
|
-
}
|
|
4601
|
-
static _getObjectValue(object, name, group = false) {
|
|
4602
|
-
if (name) {
|
|
4603
|
-
if (group) {
|
|
4604
|
-
return Object.values(object || Viewer.__emtpyObject).filter((v)=>v.name === name);
|
|
4605
|
-
}
|
|
4606
|
-
return Object.values(object || Viewer.__emtpyObject).find((v)=>v.name === name);
|
|
4607
|
-
}
|
|
4608
|
-
return Object.values(object);
|
|
4609
|
-
}
|
|
4610
|
-
static getMaterial(node, name, group = false) {
|
|
4611
|
-
return Viewer._getObjectValue(node.userData.materials, name, group);
|
|
4612
|
-
}
|
|
4613
|
-
static getTexture(node, name, group = false) {
|
|
4614
|
-
return Viewer._getObjectValue(node.userData.textures, name, group);
|
|
4615
|
-
}
|
|
4616
|
-
static getMesh(node, name, group = false) {
|
|
4617
|
-
return Viewer._getObjectValue(node.userData.meshes, name, group);
|
|
4618
|
-
}
|
|
4619
4653
|
get root() {
|
|
4620
4654
|
return this._root;
|
|
4621
4655
|
}
|
|
@@ -4817,7 +4851,7 @@ class Viewer extends EventEmitter {
|
|
|
4817
4851
|
this._tweenManager.killTweensOf(target);
|
|
4818
4852
|
}
|
|
4819
4853
|
traverseMaterials(callback) {
|
|
4820
|
-
|
|
4854
|
+
getObject(this._scene, (item)=>{
|
|
4821
4855
|
if (item.material) {
|
|
4822
4856
|
if (Array.isArray(item.material)) item.material.forEach(callback);
|
|
4823
4857
|
else callback(item.material);
|
|
@@ -5063,7 +5097,6 @@ Viewer._shadowCameraKeys = [
|
|
|
5063
5097
|
"near",
|
|
5064
5098
|
"far"
|
|
5065
5099
|
];
|
|
5066
|
-
Viewer.__emtpyObject = {};
|
|
5067
5100
|
Viewer.fullscreenMesh = new Mesh(Viewer.createFullscreenTriangle());
|
|
5068
5101
|
Viewer.fullscreenCamera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);
|
|
5069
5102
|
Viewer._instanceCount = 0;
|
|
@@ -5785,5 +5818,5 @@ function getFilesFromItemList(items, onDone) {
|
|
|
5785
5818
|
}
|
|
5786
5819
|
}
|
|
5787
5820
|
|
|
5788
|
-
export { Animation, AnimationCurve, Box, BoxProjectionPlugin, CinestationBlendDefinition, CinestationBrain, Component, DebugPlugin, DeviceInput, DropFilePlugin, Easing, EnvironmentPlugin, EventEmitter, FInterpConstantTo, FInterpTo, FreelookVirtualCamera, Logger, ObjectInstance, Orientation, PerformanceMonitorPlugin, Perlin, Plane, Plugin, PropertyManager, QInterpConstantTo, QInterpTo, Quat_AngularDistance, Quat_Equals, Quat_exponentialDamp, Quat_quarticDamp, Quat_smoothDamp, Reflector, ReflectorMaterial, ResourceManager, Sphere, SystemInfo, Tween, TweenChain, TweenManager, VInterpConstantTo, VInterpTo, Vec3_smoothDamp, Vector3_NEG_ONE, Vector3_ONE, Vector3_RIGHT, Vector3_UNIT_X, Vector3_UNIT_Y, Vector3_UNIT_Z, Vector3_UP, Vector3_ZERO, Viewer, VirtualCamera, aEXRLoader, aFBXLoader, aGLTFLoader, aHDRLoader, aJSONLoader, aLoader, aTextureLoader, exponentialDamp, frag_BoxfilterBlur, frag_cubeMapToPanorama, frag_panoramaToCubeMap, getClassInstance, getShaderMaterial, mixin, property, quarticDamp, smoothDamp, vert_fullscreen };
|
|
5821
|
+
export { Animation, AnimationCurve, Box, BoxProjectionPlugin, CinestationBlendDefinition, CinestationBrain, Component, DebugPlugin, DeviceInput, DropFilePlugin, Easing, EnvironmentPlugin, EventEmitter, FInterpConstantTo, FInterpTo, FreelookVirtualCamera, Logger, ObjectInstance, Orientation, PerformanceMonitorPlugin, Perlin, Plane, Plugin, PropertyManager, QInterpConstantTo, QInterpTo, Quat_AngularDistance, Quat_Equals, Quat_exponentialDamp, Quat_quarticDamp, Quat_smoothDamp, Reflector, ReflectorMaterial, ResourceManager, Sphere, SystemInfo, Tween, TweenChain, TweenManager, VInterpConstantTo, VInterpTo, Vec3_smoothDamp, Vector3_NEG_ONE, Vector3_ONE, Vector3_RIGHT, Vector3_UNIT_X, Vector3_UNIT_Y, Vector3_UNIT_Z, Vector3_UP, Vector3_ZERO, Viewer, VirtualCamera, aEXRLoader, aFBXLoader, aGLTFLoader, aHDRLoader, aJSONLoader, aLoader, aTextureLoader, applyProps, exponentialDamp, find, frag_BoxfilterBlur, frag_cubeMapToPanorama, frag_panoramaToCubeMap, getClassInstance, getObject, getObjectByName, getObjectValue, getShaderMaterial, mixin, property, quarticDamp, smoothDamp, vert_fullscreen };
|
|
5789
5822
|
//# sourceMappingURL=module.js.map
|