@anov/3d-ability 0.0.72 → 0.0.75
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/business/MaterialSwitch/MaterialSwitchSystem.js +15 -2
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
- package/dist/business/MaterialSwitch/inject.js +1 -0
- package/dist/business/MaterialSwitch/inject.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +5 -1
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
- package/package.json +1 -1
|
@@ -13,7 +13,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
13
13
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
14
14
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
15
15
|
import { Box3, Color, Group, MeshBasicMaterial, Object3D, Vector3, gsap } from '@anov/3d-core';
|
|
16
|
-
import {
|
|
16
|
+
import { injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToRealFade } from "./inject";
|
|
17
17
|
/**
|
|
18
18
|
* 材质切换系统
|
|
19
19
|
*/
|
|
@@ -61,10 +61,12 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
|
|
|
61
61
|
this.uniforms.isFresnelFadeIn.value = false;
|
|
62
62
|
this.uniforms.isPureFadeIn.value = false;
|
|
63
63
|
this.uniforms.isFrameFadeIn.value = false;
|
|
64
|
+
var oldObject = new Group();
|
|
64
65
|
var finalObject = new Group();
|
|
65
66
|
var frameObject = new Group();
|
|
66
67
|
var pureObject = new Group();
|
|
67
68
|
var realObject = new Group();
|
|
69
|
+
this.add(oldObject);
|
|
68
70
|
this.add(finalObject);
|
|
69
71
|
this.add(frameObject);
|
|
70
72
|
this.add(pureObject);
|
|
@@ -73,6 +75,7 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
|
|
|
73
75
|
this.objectMap.set('Pure', pureObject);
|
|
74
76
|
this.objectMap.set('Frame', frameObject);
|
|
75
77
|
this.objectMap.set('Real', realObject);
|
|
78
|
+
this.objectMap.set('Old', oldObject);
|
|
76
79
|
}
|
|
77
80
|
|
|
78
81
|
/**
|
|
@@ -99,6 +102,10 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
|
|
|
99
102
|
duration: 2.0,
|
|
100
103
|
ease: 'linear',
|
|
101
104
|
onComplete: function onComplete() {
|
|
105
|
+
if (type === 'Real') {
|
|
106
|
+
_this2.objectMap.get('Old').visible = true;
|
|
107
|
+
_this2.objectMap.get('Real').visible = false;
|
|
108
|
+
}
|
|
102
109
|
_this2.dispatchEvent({
|
|
103
110
|
type: 'onStyleChanged',
|
|
104
111
|
style: type
|
|
@@ -115,7 +122,13 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
|
|
|
115
122
|
}, {
|
|
116
123
|
key: "addObject",
|
|
117
124
|
value: function addObject(object) {
|
|
125
|
+
if (this.type === 'Real') {
|
|
126
|
+
this.objectMap.get('Old').visible = true;
|
|
127
|
+
this.objectMap.get('Real').visible = false;
|
|
128
|
+
}
|
|
118
129
|
this.objects.push(object);
|
|
130
|
+
var oldObject = object.clone();
|
|
131
|
+
this.objectMap.get('Old').add(oldObject);
|
|
119
132
|
var realObject = object.clone();
|
|
120
133
|
this.generateRealObject(realObject);
|
|
121
134
|
this.objectMap.get('Real').add(realObject);
|
|
@@ -130,7 +143,6 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
|
|
|
130
143
|
this.objectMap.get('Frame').add(frameObject);
|
|
131
144
|
object.traverse(function (child) {
|
|
132
145
|
if (child.type === 'Mesh') {
|
|
133
|
-
disposeMaterial(child.material);
|
|
134
146
|
var newMaterial = new MeshBasicMaterial({
|
|
135
147
|
color: new Color('#fff'),
|
|
136
148
|
transparent: true,
|
|
@@ -141,6 +153,7 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
|
|
|
141
153
|
child.material = newMaterial;
|
|
142
154
|
}
|
|
143
155
|
});
|
|
156
|
+
object.userData.old = oldObject;
|
|
144
157
|
this.uniforms.maxSize.value = this.getMaxSize();
|
|
145
158
|
}
|
|
146
159
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Box3","Color","Group","MeshBasicMaterial","Object3D","Vector3","gsap","disposeMaterial","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToRealFade","MaterialSwitchSystem","_Object3D","_inherits","_super","_createSuper","objects","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","progress","value","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","Map","generate","_createClass","key","uniforms","finalObject","frameObject","pureObject","realObject","add","objectMap","set","switchType","type","_this$frame","_this2","frame","kill","forEach","object","visible","get","concat","to","duration","ease","onComplete","dispatchEvent","style","addObject","push","clone","generateRealObject","generateFinalObject","generatePureObject","generateFrameObject","traverse","child","material","newMaterial","color","transparent","depthTest","depthWrite","opacity","getMaxSize","removeObject","splice","indexOf","cloneGroup","children","userData","entityParams","id","remove","box3","setFromObject","size","getSize","Math","max","x","z"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import { Box3, Color, Group, MeshBasicMaterial, Object3D, Vector3, gsap } from '@anov/3d-core'\nimport { disposeMaterial, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToRealFade } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = 'Real'\n\n private objects: Object3D[] = []\n private frame: gsap.core.Tween | null = null\n private box3 = new Box3()\n\n public uniforms = {\n progress: { value: 0.0 },\n isFresnelFadeIn: { value: false },\n isRealFadeIn: { value: false },\n isPureFadeIn: { value: false },\n isFrameFadeIn: { value: false },\n maxSize: { value: 0 },\n }\n\n private objectMap = new Map<string, Object3D>()\n\n constructor(objects: Object3D[]) {\n super()\n\n this.objects = objects\n this.generate()\n }\n\n private generate() {\n this.uniforms.progress.value = 1.0\n\n this.uniforms.isRealFadeIn.value = true\n this.uniforms.isFresnelFadeIn.value = false\n this.uniforms.isPureFadeIn.value = false\n this.uniforms.isFrameFadeIn.value = false\n\n const finalObject = new Group()\n const frameObject = new Group()\n const pureObject = new Group()\n const realObject = new Group()\n\n this.add(finalObject)\n this.add(frameObject)\n this.add(pureObject)\n this.add(realObject)\n\n this.objectMap.set('Fresnel', finalObject)\n this.objectMap.set('Pure', pureObject)\n this.objectMap.set('Frame', frameObject)\n this.objectMap.set('Real', realObject)\n }\n\n /**\n * switch type\n * @param type\n */\n public switchType(type: MaterialSwitchType) {\n if (this.type === type)\n return\n\n this.frame?.kill()\n\n this.objectMap.forEach((object) => {\n object.visible = false\n })\n\n this.objectMap.get(type).visible = true\n this.objectMap.get(this.type).visible = true\n\n this.uniforms.progress.value = 0.0\n this.uniforms[`is${this.type}FadeIn`].value = false\n this.uniforms[`is${type}FadeIn`].value = true\n\n this.frame = gsap.to(this.uniforms.progress, {\n value: 1.0,\n duration: 2.0,\n ease: 'linear',\n onComplete: () => {\n this.dispatchEvent({\n type: 'onStyleChanged',\n style: type,\n })\n },\n })\n\n this.type = type\n }\n\n /**\n * add object\n * @param object\n */\n public addObject(object: Object3D) {\n this.objects.push(object)\n\n const realObject = object.clone()\n this.generateRealObject(realObject)\n this.objectMap.get('Real').add(realObject)\n\n const finalObject = object.clone()\n this.generateFinalObject(finalObject)\n this.objectMap.get('Fresnel').add(finalObject)\n\n const pureObject = object.clone()\n this.generatePureObject(pureObject)\n this.objectMap.get('Pure').add(pureObject)\n\n const frameObject = object.clone()\n this.generateFrameObject(frameObject)\n this.objectMap.get('Frame').add(frameObject)\n\n object.traverse((child: any) => {\n if (child.type === 'Mesh') {\n disposeMaterial(child.material)\n const newMaterial = new MeshBasicMaterial({ color: new Color('#fff'), transparent: true, depthTest: false, depthWrite: false, opacity: 0 })\n child.material = newMaterial\n }\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n /**\n * remove object\n * @param object\n */\n public removeObject(object: Object3D) {\n this.objects.splice(this.objects.indexOf(object), 1)\n\n this.objectMap.forEach((cloneGroup) => {\n cloneGroup.children.forEach((child) => {\n if (child.userData.entityParams.id === object.userData.entityParams.id)\n cloneGroup.remove(child)\n })\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n /**\n * get max size\n * @param object\n * @returns\n */\n private getMaxSize() {\n this.box3.setFromObject(this.objectMap.get('Real'))\n const size = this.box3.getSize(new Vector3())\n const maxSize = Math.max(size.x, size.z)\n return maxSize\n }\n\n /**\n * generate final object\n * @param object\n */\n private generateFinalObject(object: Object3D) {\n injectToFinirMaterial(object, this.uniforms)\n }\n\n /**\n * generate real object\n * @param object\n */\n private generateRealObject(object: Object3D) {\n injectToRealFade(object, this.uniforms)\n }\n\n /**\n * generate pure object\n * @param object\n */\n private generatePureObject(object: Object3D) {\n injectToBaseWrite(object, this.uniforms)\n }\n\n /**\n * generate frame object\n * @param object\n */\n private generateFrameObject(object: Object3D) {\n injectToFrameFade(object, this.uniforms)\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Box3","Color","Group","MeshBasicMaterial","Object3D","Vector3","gsap","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToRealFade","MaterialSwitchSystem","_Object3D","_inherits","_super","_createSuper","objects","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","progress","value","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","Map","generate","_createClass","key","uniforms","oldObject","finalObject","frameObject","pureObject","realObject","add","objectMap","set","switchType","type","_this$frame","_this2","frame","kill","forEach","object","visible","get","concat","to","duration","ease","onComplete","dispatchEvent","style","addObject","push","clone","generateRealObject","generateFinalObject","generatePureObject","generateFrameObject","traverse","child","newMaterial","color","transparent","depthTest","depthWrite","opacity","material","userData","old","getMaxSize","removeObject","splice","indexOf","cloneGroup","children","entityParams","id","remove","box3","setFromObject","size","getSize","Math","max","x","z"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import { Box3, Color, Group, MeshBasicMaterial, Object3D, Vector3, gsap } from '@anov/3d-core'\nimport { disposeMaterial, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToRealFade } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = 'Real'\n\n private objects: Object3D[] = []\n private frame: gsap.core.Tween | null = null\n private box3 = new Box3()\n\n public uniforms = {\n progress: { value: 0.0 },\n isFresnelFadeIn: { value: false },\n isRealFadeIn: { value: false },\n isPureFadeIn: { value: false },\n isFrameFadeIn: { value: false },\n maxSize: { value: 0 },\n }\n\n private objectMap = new Map<string, Object3D>()\n\n constructor(objects: Object3D[]) {\n super()\n\n this.objects = objects\n this.generate()\n }\n\n private generate() {\n this.uniforms.progress.value = 1.0\n\n this.uniforms.isRealFadeIn.value = true\n this.uniforms.isFresnelFadeIn.value = false\n this.uniforms.isPureFadeIn.value = false\n this.uniforms.isFrameFadeIn.value = false\n\n const oldObject = new Group()\n const finalObject = new Group()\n const frameObject = new Group()\n const pureObject = new Group()\n const realObject = new Group()\n\n this.add(oldObject)\n this.add(finalObject)\n this.add(frameObject)\n this.add(pureObject)\n this.add(realObject)\n\n this.objectMap.set('Fresnel', finalObject)\n this.objectMap.set('Pure', pureObject)\n this.objectMap.set('Frame', frameObject)\n this.objectMap.set('Real', realObject)\n this.objectMap.set('Old', oldObject)\n }\n\n /**\n * switch type\n * @param type\n */\n public switchType(type: MaterialSwitchType) {\n if (this.type === type)\n return\n\n this.frame?.kill()\n\n this.objectMap.forEach((object) => {\n object.visible = false\n })\n\n this.objectMap.get(type).visible = true\n this.objectMap.get(this.type).visible = true\n\n this.uniforms.progress.value = 0.0\n this.uniforms[`is${this.type}FadeIn`].value = false\n this.uniforms[`is${type}FadeIn`].value = true\n\n this.frame = gsap.to(this.uniforms.progress, {\n value: 1.0,\n duration: 2.0,\n ease: 'linear',\n onComplete: () => {\n if (type === 'Real') {\n this.objectMap.get('Old').visible = true\n this.objectMap.get('Real').visible = false\n }\n\n this.dispatchEvent({\n type: 'onStyleChanged',\n style: type,\n })\n },\n })\n\n this.type = type\n }\n\n /**\n * add object\n * @param object\n */\n public addObject(object: Object3D) {\n if (this.type === 'Real') {\n this.objectMap.get('Old').visible = true\n this.objectMap.get('Real').visible = false\n }\n\n this.objects.push(object)\n\n const oldObject = object.clone()\n this.objectMap.get('Old').add(oldObject)\n\n const realObject = object.clone()\n this.generateRealObject(realObject)\n this.objectMap.get('Real').add(realObject)\n\n const finalObject = object.clone()\n this.generateFinalObject(finalObject)\n this.objectMap.get('Fresnel').add(finalObject)\n\n const pureObject = object.clone()\n this.generatePureObject(pureObject)\n this.objectMap.get('Pure').add(pureObject)\n\n const frameObject = object.clone()\n this.generateFrameObject(frameObject)\n this.objectMap.get('Frame').add(frameObject)\n\n object.traverse((child: any) => {\n if (child.type === 'Mesh') {\n const newMaterial = new MeshBasicMaterial({ color: new Color('#fff'), transparent: true, depthTest: false, depthWrite: false, opacity: 0 })\n child.material = newMaterial\n }\n })\n\n object.userData.old = oldObject\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n /**\n * remove object\n * @param object\n */\n public removeObject(object: Object3D) {\n this.objects.splice(this.objects.indexOf(object), 1)\n\n this.objectMap.forEach((cloneGroup) => {\n cloneGroup.children.forEach((child) => {\n if (child.userData.entityParams.id === object.userData.entityParams.id)\n cloneGroup.remove(child)\n })\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n /**\n * get max size\n * @param object\n * @returns\n */\n private getMaxSize() {\n this.box3.setFromObject(this.objectMap.get('Real'))\n const size = this.box3.getSize(new Vector3())\n const maxSize = Math.max(size.x, size.z)\n return maxSize\n }\n\n /**\n * generate final object\n * @param object\n */\n private generateFinalObject(object: Object3D) {\n injectToFinirMaterial(object, this.uniforms)\n }\n\n /**\n * generate real object\n * @param object\n */\n private generateRealObject(object: Object3D) {\n injectToRealFade(object, this.uniforms)\n }\n\n /**\n * generate pure object\n * @param object\n */\n private generatePureObject(object: Object3D) {\n injectToBaseWrite(object, this.uniforms)\n }\n\n /**\n * generate frame object\n * @param object\n */\n private generateFrameObject(object: Object3D) {\n injectToFrameFade(object, this.uniforms)\n }\n}\n"],"mappings":"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"}
|
|
@@ -27,6 +27,7 @@ export var disposeMaterial = function disposeMaterial(material) {
|
|
|
27
27
|
export var injectToFrameFade = function injectToFrameFade(object, uniforms) {
|
|
28
28
|
object.traverse(function (child) {
|
|
29
29
|
if (child.isMesh) {
|
|
30
|
+
child.material = child.material.clone();
|
|
30
31
|
child.material.side = 2;
|
|
31
32
|
child.material.transparent = true;
|
|
32
33
|
child.material.depthTest = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AdditiveBlending","Color","MeshStandardMaterial","frag","frag_pre","ver","ver_pre","fragFinal","verFinal","disposeMaterial","material","map","dispose","lightMap","bumpMap","normalMap","specularMap","envMap","emissiveMap","injectToFrameFade","object","uniforms","traverse","child","isMesh","side","transparent","depthTest","depthWrite","blending","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","onBeforeCompile","shader","_objectSpread","progress","addOpacity","value","objSize","maxSize","isFadeIn","isFrameFadeIn","vertexShader","fragmentShader","injectToRealFade","newMaterial","clone","isRealFadeIn","replace","needsUpdate","customProgramCacheKey","concat","injectToBaseWrite","color","isPureFadeIn","rimColor","rimPower","injectToFinirMaterial","isFresnelFadeIn"],"sources":["../../../src/business/MaterialSwitch/inject.ts"],"sourcesContent":["import { AdditiveBlending, Color, MeshStandardMaterial, type Object3D } from '@anov/3d-core'\nimport { frag, frag_pre, ver, ver_pre } from './realFade'\nimport { frag as fragFinal, ver as verFinal } from './finalFade'\n\nexport const disposeMaterial = (material) => {\n if (material.map)\n material.map.dispose()\n if (material.lightMap)\n material.lightMap.dispose()\n if (material.bumpMap)\n material.bumpMap.dispose()\n if (material.normalMap)\n material.normalMap.dispose()\n if (material.specularMap)\n material.specularMap.dispose()\n if (material.envMap)\n material.envMap.dispose()\n if (material.emissiveMap)\n material.emissiveMap.dispose()\n material.dispose()\n}\n\n/**\n * inject to final fade\n * @param object\n * @param maxSize\n * @param uniforms\n */\nexport const injectToFrameFade = (object: Object3D, uniforms: { maxSize: { value: number }; progress: { value: number }; isFrameFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n child.material.side = 2\n child.material.transparent = true\n child.material.depthTest = false\n child.material.depthWrite = true\n child.material.blending = AdditiveBlending\n\n child.material.polygonOffset = true\n child.material.polygonOffsetFactor = 0\n child.material.polygonOffsetUnits = 0\n\n child.material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n addOpacity: { value: 0.7 },\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFrameFadeIn,\n }\n shader.vertexShader = verFinal\n shader.fragmentShader = fragFinal\n }\n }\n })\n}\n\n/**\n * inject to real fade\n * @param object\n * @param uniforms\n */\nexport const injectToRealFade = (object: Object3D, uniforms: { maxSize: { value: number }; progress: { value: number }; isRealFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n const newMaterial = child.material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 1\n newMaterial.polygonOffsetUnits = 1\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isRealFadeIn,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n }\n })\n}\n\n/**\n * inject to base write\n * @param object\n * @param uniforms\n */\nexport const injectToBaseWrite = (object: Object3D, uniforms: { maxSize: { value: number }; progress: { value: number }; isPureFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n disposeMaterial(child.material)\n const newMaterial = new MeshStandardMaterial({ color: new Color('#fff') })\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 2\n newMaterial.polygonOffsetUnits = 2\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isPureFadeIn,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#fff') }\n shader.uniforms.rimPower = { value: 0.7 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n }\n })\n}\n\n/**\n * inject to finir material\n * @param object\n * @param uniforms\n */\nexport const injectToFinirMaterial = (object: Object3D, uniforms: { maxSize: { value: number }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n disposeMaterial(child.material)\n const newMaterial = new MeshStandardMaterial({ color: new Color('#000') })\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 3\n newMaterial.polygonOffsetUnits = 3\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#2364B7') }\n shader.uniforms.rimPower = { value: 0.7 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n }\n })\n}\n"],"mappings":";;;;;;AAAA,SAASA,gBAAgB,EAAEC,KAAK,EAAEC,oBAAoB,QAAuB,eAAe;AAC5F,SAASC,IAAI,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,OAAO;AACrC,SAASH,IAAI,IAAII,SAAS,EAAEF,GAAG,IAAIG,QAAQ;AAE3C,OAAO,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,QAAQ,EAAK;EAC3C,IAAIA,QAAQ,CAACC,GAAG,EACdD,QAAQ,CAACC,GAAG,CAACC,OAAO,CAAC,CAAC;EACxB,IAAIF,QAAQ,CAACG,QAAQ,EACnBH,QAAQ,CAACG,QAAQ,CAACD,OAAO,CAAC,CAAC;EAC7B,IAAIF,QAAQ,CAACI,OAAO,EAClBJ,QAAQ,CAACI,OAAO,CAACF,OAAO,CAAC,CAAC;EAC5B,IAAIF,QAAQ,CAACK,SAAS,EACpBL,QAAQ,CAACK,SAAS,CAACH,OAAO,CAAC,CAAC;EAC9B,IAAIF,QAAQ,CAACM,WAAW,EACtBN,QAAQ,CAACM,WAAW,CAACJ,OAAO,CAAC,CAAC;EAChC,IAAIF,QAAQ,CAACO,MAAM,EACjBP,QAAQ,CAACO,MAAM,CAACL,OAAO,CAAC,CAAC;EAC3B,IAAIF,QAAQ,CAACQ,WAAW,EACtBR,QAAQ,CAACQ,WAAW,CAACN,OAAO,CAAC,CAAC;EAChCF,QAAQ,CAACE,OAAO,CAAC,CAAC;AACpB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMO,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,MAAgB,EAAEC,QAAwG,EAAK;EAC/JD,MAAM,CAACE,QAAQ,CAAC,UAACC,KAAU,EAAK;IAC9B,IAAIA,KAAK,CAACC,MAAM,EAAE;MAChBD,KAAK,CAACb,QAAQ,CAACe,IAAI,GAAG,CAAC;MACvBF,KAAK,CAACb,QAAQ,CAACgB,WAAW,GAAG,IAAI;MACjCH,KAAK,CAACb,QAAQ,CAACiB,SAAS,GAAG,KAAK;MAChCJ,KAAK,CAACb,QAAQ,CAACkB,UAAU,GAAG,IAAI;MAChCL,KAAK,CAACb,QAAQ,CAACmB,QAAQ,GAAG7B,gBAAgB;MAE1CuB,KAAK,CAACb,QAAQ,CAACoB,aAAa,GAAG,IAAI;MACnCP,KAAK,CAACb,QAAQ,CAACqB,mBAAmB,GAAG,CAAC;MACtCR,KAAK,CAACb,QAAQ,CAACsB,kBAAkB,GAAG,CAAC;MAErCT,KAAK,CAACb,QAAQ,CAACuB,eAAe,GAAG,UAACC,MAAM,EAAK;QAC3CA,MAAM,CAACb,QAAQ,GAAAc,aAAA,CAAAA,aAAA,KACVD,MAAM,CAACb,QAAQ;UAClBe,QAAQ,EAAEf,QAAQ,CAACe,QAAQ;UAC3BC,UAAU,EAAE;YAAEC,KAAK,EAAE;UAAI,CAAC;UAC1BC,OAAO,EAAElB,QAAQ,CAACmB,OAAO;UACzBC,QAAQ,EAAEpB,QAAQ,CAACqB;QAAa,EACjC;QACDR,MAAM,CAACS,YAAY,GAAGnC,QAAQ;QAC9B0B,MAAM,CAACU,cAAc,GAAGrC,SAAS;MACnC,CAAC;IACH;EACF,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMsC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIzB,MAAgB,EAAEC,QAAuG,EAAK;EAC7JD,MAAM,CAACE,QAAQ,CAAC,UAACC,KAAU,EAAK;IAC9B,IAAIA,KAAK,CAACC,MAAM,EAAE;MAChB,IAAMsB,WAAW,GAAGvB,KAAK,CAACb,QAAQ,CAACqC,KAAK,CAAC,CAAC;MAC1CD,WAAW,CAACpB,WAAW,GAAG,IAAI;MAC9BoB,WAAW,CAACnB,SAAS,GAAG,IAAI;MAC5BmB,WAAW,CAAClB,UAAU,GAAG,IAAI;MAC7BkB,WAAW,CAAChB,aAAa,GAAG,IAAI;MAChCgB,WAAW,CAACf,mBAAmB,GAAG,CAAC;MACnCe,WAAW,CAACd,kBAAkB,GAAG,CAAC;MAElCc,WAAW,CAACb,eAAe,GAAG,UAACC,MAAM,EAAK;QACxCA,MAAM,CAACb,QAAQ,GAAAc,aAAA,CAAAA,aAAA,KACVD,MAAM,CAACb,QAAQ;UAClBe,QAAQ,EAAEf,QAAQ,CAACe,QAAQ;UAC3BG,OAAO,EAAElB,QAAQ,CAACmB,OAAO;UACzBC,QAAQ,EAAEpB,QAAQ,CAAC2B;QAAY,EAChC;QAEDd,MAAM,CAACS,YAAY,GAAGrC,OAAO,GAAG4B,MAAM,CAACS,YAAY;QACnDT,MAAM,CAACS,YAAY,GAAGT,MAAM,CAACS,YAAY,CAACM,OAAO,CAC/C,yBAAyB,EAAE5C,GAC7B,CAAC;QACD6B,MAAM,CAACU,cAAc,GAAGxC,QAAQ,GAAG8B,MAAM,CAACU,cAAc;QACxDV,MAAM,CAACU,cAAc,GAAGV,MAAM,CAACU,cAAc,CAACK,OAAO,CACnD,yBAAyB,EAAE9C,IAC7B,CAAC;MACH,CAAC;MAED2C,WAAW,CAACI,WAAW,GAAG,IAAI;MAC9BJ,WAAW,CAACK,qBAAqB,GAAG;QAAA,UAAAC,MAAA,CAAS/C,GAAG,OAAA+C,MAAA,CAAIjD,IAAI;MAAA,CAAE;MAE1DoB,KAAK,CAACb,QAAQ,GAAGoC,WAAW;IAC9B;EACF,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMO,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIjC,MAAgB,EAAEC,QAAuG,EAAK;EAC9JD,MAAM,CAACE,QAAQ,CAAC,UAACC,KAAU,EAAK;IAC9B,IAAIA,KAAK,CAACC,MAAM,EAAE;MAChBf,eAAe,CAACc,KAAK,CAACb,QAAQ,CAAC;MAC/B,IAAMoC,WAAW,GAAG,IAAI5C,oBAAoB,CAAC;QAAEoD,KAAK,EAAE,IAAIrD,KAAK,CAAC,MAAM;MAAE,CAAC,CAAC;MAC1E6C,WAAW,CAACpB,WAAW,GAAG,IAAI;MAC9BoB,WAAW,CAACnB,SAAS,GAAG,IAAI;MAC5BmB,WAAW,CAAClB,UAAU,GAAG,IAAI;MAC7BkB,WAAW,CAAChB,aAAa,GAAG,IAAI;MAChCgB,WAAW,CAACf,mBAAmB,GAAG,CAAC;MACnCe,WAAW,CAACd,kBAAkB,GAAG,CAAC;MAElCc,WAAW,CAACb,eAAe,GAAG,UAACC,MAAM,EAAK;QACxCA,MAAM,CAACb,QAAQ,GAAAc,aAAA,CAAAA,aAAA,KACVD,MAAM,CAACb,QAAQ;UAClBe,QAAQ,EAAEf,QAAQ,CAACe,QAAQ;UAC3BG,OAAO,EAAElB,QAAQ,CAACmB,OAAO;UACzBC,QAAQ,EAAEpB,QAAQ,CAACkC;QAAY,EAChC;QAEDrB,MAAM,CAACS,YAAY,GAAGrC,OAAO,GAAG4B,MAAM,CAACS,YAAY;QACnDT,MAAM,CAACS,YAAY,GAAGT,MAAM,CAACS,YAAY,CAACM,OAAO,CAC/C,yBAAyB,EAAE5C,GAC7B,CAAC;QACD6B,MAAM,CAACU,cAAc,GAAGxC,QAAQ,GAAG8B,MAAM,CAACU,cAAc;QACxDV,MAAM,CAACU,cAAc,GAAGV,MAAM,CAACU,cAAc,CAACK,OAAO,CACnD,yBAAyB,EAAE9C,IAC7B,CAAC;QAED+B,MAAM,CAACb,QAAQ,CAACmC,QAAQ,GAAG;UAAElB,KAAK,EAAE,IAAIrC,KAAK,CAAC,MAAM;QAAE,CAAC;QACvDiC,MAAM,CAACb,QAAQ,CAACoC,QAAQ,GAAG;UAAEnB,KAAK,EAAE;QAAI,CAAC;QAEzCJ,MAAM,CAACU,cAAc,GAAG,oGAAAQ,MAAA,CAGlBlB,MAAM,CAACU,cAAc,CAACK,OAAO,CACjC,+BAA+B,EAC/B,mCAAmC,GACjC,oEAAoE,GACpE,8CACJ,CAAC,iBACE;MACL,CAAC;MAEDH,WAAW,CAACI,WAAW,GAAG,IAAI;MAC9BJ,WAAW,CAACK,qBAAqB,GAAG;QAAA,UAAAC,MAAA,CAAS/C,GAAG,OAAA+C,MAAA,CAAIjD,IAAI;MAAA,CAAE;MAE1DoB,KAAK,CAACb,QAAQ,GAAGoC,WAAW;IAC9B;EACF,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMY,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAItC,MAAgB,EAAEC,QAA0G,EAAK;EACrKD,MAAM,CAACE,QAAQ,CAAC,UAACC,KAAU,EAAK;IAC9B,IAAIA,KAAK,CAACC,MAAM,EAAE;MAChBf,eAAe,CAACc,KAAK,CAACb,QAAQ,CAAC;MAC/B,IAAMoC,WAAW,GAAG,IAAI5C,oBAAoB,CAAC;QAAEoD,KAAK,EAAE,IAAIrD,KAAK,CAAC,MAAM;MAAE,CAAC,CAAC;MAC1E6C,WAAW,CAACpB,WAAW,GAAG,IAAI;MAC9BoB,WAAW,CAACnB,SAAS,GAAG,IAAI;MAC5BmB,WAAW,CAAClB,UAAU,GAAG,IAAI;MAC7BkB,WAAW,CAAChB,aAAa,GAAG,IAAI;MAChCgB,WAAW,CAACf,mBAAmB,GAAG,CAAC;MACnCe,WAAW,CAACd,kBAAkB,GAAG,CAAC;MAElCc,WAAW,CAACb,eAAe,GAAG,UAACC,MAAM,EAAK;QACxCA,MAAM,CAACb,QAAQ,GAAAc,aAAA,CAAAA,aAAA,KACVD,MAAM,CAACb,QAAQ;UAClBe,QAAQ,EAAEf,QAAQ,CAACe,QAAQ;UAC3BG,OAAO,EAAElB,QAAQ,CAACmB,OAAO;UACzBC,QAAQ,EAAEpB,QAAQ,CAACsC;QAAe,EACnC;QAEDzB,MAAM,CAACS,YAAY,GAAGrC,OAAO,GAAG4B,MAAM,CAACS,YAAY;QACnDT,MAAM,CAACS,YAAY,GAAGT,MAAM,CAACS,YAAY,CAACM,OAAO,CAC/C,yBAAyB,EAAE5C,GAC7B,CAAC;QACD6B,MAAM,CAACU,cAAc,GAAGxC,QAAQ,GAAG8B,MAAM,CAACU,cAAc;QACxDV,MAAM,CAACU,cAAc,GAAGV,MAAM,CAACU,cAAc,CAACK,OAAO,CACnD,yBAAyB,EAAE9C,IAC7B,CAAC;QAED+B,MAAM,CAACb,QAAQ,CAACmC,QAAQ,GAAG;UAAElB,KAAK,EAAE,IAAIrC,KAAK,CAAC,SAAS;QAAE,CAAC;QAC1DiC,MAAM,CAACb,QAAQ,CAACoC,QAAQ,GAAG;UAAEnB,KAAK,EAAE;QAAI,CAAC;QAEzCJ,MAAM,CAACU,cAAc,GAAG,oGAAAQ,MAAA,CAGlBlB,MAAM,CAACU,cAAc,CAACK,OAAO,CACjC,+BAA+B,EAC/B,mCAAmC,GACjC,oEAAoE,GACpE,8CACJ,CAAC,iBACE;MACL,CAAC;MAEDH,WAAW,CAACI,WAAW,GAAG,IAAI;MAC9BJ,WAAW,CAACK,qBAAqB,GAAG;QAAA,UAAAC,MAAA,CAAS/C,GAAG,OAAA+C,MAAA,CAAIjD,IAAI;MAAA,CAAE;MAE1DoB,KAAK,CAACb,QAAQ,GAAGoC,WAAW;IAC9B;EACF,CAAC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"names":["AdditiveBlending","Color","MeshStandardMaterial","frag","frag_pre","ver","ver_pre","fragFinal","verFinal","disposeMaterial","material","map","dispose","lightMap","bumpMap","normalMap","specularMap","envMap","emissiveMap","injectToFrameFade","object","uniforms","traverse","child","isMesh","clone","side","transparent","depthTest","depthWrite","blending","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","onBeforeCompile","shader","_objectSpread","progress","addOpacity","value","objSize","maxSize","isFadeIn","isFrameFadeIn","vertexShader","fragmentShader","injectToRealFade","newMaterial","isRealFadeIn","replace","needsUpdate","customProgramCacheKey","concat","injectToBaseWrite","color","isPureFadeIn","rimColor","rimPower","injectToFinirMaterial","isFresnelFadeIn"],"sources":["../../../src/business/MaterialSwitch/inject.ts"],"sourcesContent":["import { AdditiveBlending, Color, MeshStandardMaterial, type Object3D } from '@anov/3d-core'\nimport { frag, frag_pre, ver, ver_pre } from './realFade'\nimport { frag as fragFinal, ver as verFinal } from './finalFade'\n\nexport const disposeMaterial = (material) => {\n if (material.map)\n material.map.dispose()\n if (material.lightMap)\n material.lightMap.dispose()\n if (material.bumpMap)\n material.bumpMap.dispose()\n if (material.normalMap)\n material.normalMap.dispose()\n if (material.specularMap)\n material.specularMap.dispose()\n if (material.envMap)\n material.envMap.dispose()\n if (material.emissiveMap)\n material.emissiveMap.dispose()\n material.dispose()\n}\n\n/**\n * inject to final fade\n * @param object\n * @param maxSize\n * @param uniforms\n */\nexport const injectToFrameFade = (object: Object3D, uniforms: { maxSize: { value: number }; progress: { value: number }; isFrameFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n child.material = child.material.clone()\n child.material.side = 2\n child.material.transparent = true\n child.material.depthTest = false\n child.material.depthWrite = true\n child.material.blending = AdditiveBlending\n\n child.material.polygonOffset = true\n child.material.polygonOffsetFactor = 0\n child.material.polygonOffsetUnits = 0\n\n child.material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n addOpacity: { value: 0.7 },\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFrameFadeIn,\n }\n shader.vertexShader = verFinal\n shader.fragmentShader = fragFinal\n }\n }\n })\n}\n\n/**\n * inject to real fade\n * @param object\n * @param uniforms\n */\nexport const injectToRealFade = (object: Object3D, uniforms: { maxSize: { value: number }; progress: { value: number }; isRealFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n const newMaterial = child.material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 1\n newMaterial.polygonOffsetUnits = 1\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isRealFadeIn,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n }\n })\n}\n\n/**\n * inject to base write\n * @param object\n * @param uniforms\n */\nexport const injectToBaseWrite = (object: Object3D, uniforms: { maxSize: { value: number }; progress: { value: number }; isPureFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n disposeMaterial(child.material)\n const newMaterial = new MeshStandardMaterial({ color: new Color('#fff') })\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 2\n newMaterial.polygonOffsetUnits = 2\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isPureFadeIn,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#fff') }\n shader.uniforms.rimPower = { value: 0.7 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n }\n })\n}\n\n/**\n * inject to finir material\n * @param object\n * @param uniforms\n */\nexport const injectToFinirMaterial = (object: Object3D, uniforms: { maxSize: { value: number }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n disposeMaterial(child.material)\n const newMaterial = new MeshStandardMaterial({ color: new Color('#000') })\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 3\n newMaterial.polygonOffsetUnits = 3\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#2364B7') }\n shader.uniforms.rimPower = { value: 0.7 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n }\n })\n}\n"],"mappings":"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"}
|
|
@@ -162,9 +162,13 @@ export var StreamerTraffic = /*#__PURE__*/function (_BaseTraffic) {
|
|
|
162
162
|
},
|
|
163
163
|
vertexShader: vertexShader,
|
|
164
164
|
fragmentShader: fragmentShader,
|
|
165
|
-
depthTest: false
|
|
165
|
+
depthTest: false,
|
|
166
|
+
depthWrite: false
|
|
166
167
|
});
|
|
167
168
|
var road = new Mesh(geometry, material);
|
|
169
|
+
|
|
170
|
+
// 渲染顺序
|
|
171
|
+
road.renderOrder = 1000;
|
|
168
172
|
this.add(road);
|
|
169
173
|
this.run(material);
|
|
170
174
|
this._streamerArr.push(road);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Clock","Color","DoubleSide","MathUtils","Mesh","ShaderMaterial","TubeGeometry","Vector2","use","BaseTraffic","fragmentShader","vertexShader","StreamerTraffic","_BaseTraffic","_inherits","_super","_createSuper","params","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","path","_params$width","width","_params$divide","divide","_params$divideWidth","divideWidth","_params$num","num","_params$length","length","_params$baseColor","baseColor","_params$speed","speed","_params$corner","corner","_params$control","control","_path","_width","_divide","_divideWidth","_num","_baseColor","_speed","_corner","_length","_lanelineControl","generateLaneLines","generateStreamer","_createClass","key","get","set","w","value","_streamerArr","forEach","mesh","removeFromParent","i","lanelines","_this$_lanelineContro","_this$_lanelineContro2","geometry","Math","floor","getLength","material","side","transparent","uniforms","uColor","uTime","lerp","random","uFade","uNumLines","uOffset","uAlpha","uSpeed","ulength","uReverse","direction","depthTest","road","add","run","push","clock","_control","useframe","getElapsedTime","_get","_getPrototypeOf","prototype"],"sources":["../../../../src/business/TrafficComponents/StreamerTraffic/StreamerTraffic.ts"],"sourcesContent":["import { Clock, Color, type CurvePath, DoubleSide, MathUtils, Mesh, ShaderMaterial, TubeGeometry, Vector2, type Vector3, use } from '@anov/3d-core'\nimport { BaseTraffic } from '../base'\nimport { fragmentShader } from './fragmentShader'\nimport { vertexShader } from './vertexShader'\nimport type { StreamerTrafficInterface } from '.'\n\ntype LanelineControl = {\n index: number\n direction?: number\n}\n\ntype StreamerTrafficParams = {\n path: CurvePath<Vector3>\n width?: number\n divide?: number\n divideWidth?: number\n num?: number\n length?: number\n baseColor?: string\n speed?: number\n control?: LanelineControl[]\n corner?: number\n}\n\n/**\n * 流光风格交通组件\n */\nexport class StreamerTraffic extends BaseTraffic implements StreamerTrafficInterface {\n /** 流光速度 */\n private _speed: number\n\n /** 流光数量 */\n private _num: number\n\n /** 流光颜色 */\n private _baseColor: string\n\n /** 流光宽度 */\n private _divideWidth: number\n\n /** 流光长度 */\n private _length: number\n\n private _streamerArr: Mesh[] = []\n\n private _lanelineControl: LanelineControl[] = []\n\n private _control = []\n\n public get speed() {\n return this._speed\n }\n\n public get num() {\n return this._num\n }\n\n public get baseColor() {\n return this._baseColor\n }\n\n public get divideWidth() {\n return this._divideWidth\n }\n\n public get width(): number {\n return this._width\n }\n\n public set width(w: number) {\n this._width = w\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n public get divide(): number {\n return this._divide\n }\n\n public set divide(num: number) {\n this._divide = num\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n constructor(params: StreamerTrafficParams) {\n super(params)\n\n const { path, width = 4, divide = 4, divideWidth = 1, num = 5, length = 0.25, baseColor = '#ff7700', speed = 100, corner = 10, control = [] } = params\n\n this._path = path\n this._width = width\n this._divide = divide\n this._divideWidth = divideWidth / 2\n this._num = num\n this._baseColor = baseColor\n this._speed = speed\n this._corner = corner\n this._length = length\n this._lanelineControl = control\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n /**\n * generate streamer\n */\n private generateStreamer() {\n this._streamerArr.forEach((mesh) => {\n mesh.removeFromParent()\n })\n this._streamerArr = []\n\n for (let i = 0; i < this.lanelines.length; i++) {\n const geometry = new TubeGeometry(this.lanelines[i], Math.floor(this.lanelines[i].getLength()) * 10, this._divideWidth, 5, false)\n const material = new ShaderMaterial({\n side: DoubleSide,\n transparent: true,\n uniforms: {\n uColor: { value: new Color(this._baseColor) },\n uTime: { value: MathUtils.lerp(-1, 1, Math.random()) },\n uFade: { value: new Vector2(0, this._length + Math.random() * this._length - this._length / 2) },\n uNumLines: { value: this._num },\n uOffset: { value: Math.random() },\n uAlpha: { value: Math.random() },\n uSpeed: { value: this._speed + Math.random() * this._speed - this._speed / 2 },\n ulength: { value: Math.floor(this.lanelines[i].getLength()) },\n uReverse: { value: this._lanelineControl[i]?.direction ?? -1.0 },\n },\n vertexShader,\n fragmentShader,\n depthTest: false,\n })\n\n const road = new Mesh(geometry, material)\n\n this.add(road)\n this.run(material)\n this._streamerArr.push(road)\n }\n }\n\n /**\n * run\n * @param material\n */\n private run(material) {\n const clock = new Clock()\n\n this._control.push(\n use.useframe(() => {\n material.uniforms.uTime.value = clock.getElapsedTime()\n }),\n )\n }\n\n override removeFromParent(): this {\n this._control.forEach((control) => {\n control()\n })\n\n return super.removeFromParent()\n }\n}"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Clock","Color","DoubleSide","MathUtils","Mesh","ShaderMaterial","TubeGeometry","Vector2","use","BaseTraffic","fragmentShader","vertexShader","StreamerTraffic","_BaseTraffic","_inherits","_super","_createSuper","params","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","path","_params$width","width","_params$divide","divide","_params$divideWidth","divideWidth","_params$num","num","_params$length","length","_params$baseColor","baseColor","_params$speed","speed","_params$corner","corner","_params$control","control","_path","_width","_divide","_divideWidth","_num","_baseColor","_speed","_corner","_length","_lanelineControl","generateLaneLines","generateStreamer","_createClass","key","get","set","w","value","_streamerArr","forEach","mesh","removeFromParent","i","lanelines","_this$_lanelineContro","_this$_lanelineContro2","geometry","Math","floor","getLength","material","side","transparent","uniforms","uColor","uTime","lerp","random","uFade","uNumLines","uOffset","uAlpha","uSpeed","ulength","uReverse","direction","depthTest","depthWrite","road","renderOrder","add","run","push","clock","_control","useframe","getElapsedTime","_get","_getPrototypeOf","prototype"],"sources":["../../../../src/business/TrafficComponents/StreamerTraffic/StreamerTraffic.ts"],"sourcesContent":["import { Clock, Color, type CurvePath, DoubleSide, MathUtils, Mesh, ShaderMaterial, TubeGeometry, Vector2, type Vector3, use } from '@anov/3d-core'\nimport { BaseTraffic } from '../base'\nimport { fragmentShader } from './fragmentShader'\nimport { vertexShader } from './vertexShader'\nimport type { StreamerTrafficInterface } from '.'\n\ntype LanelineControl = {\n index: number\n direction?: number\n}\n\ntype StreamerTrafficParams = {\n path: CurvePath<Vector3>\n width?: number\n divide?: number\n divideWidth?: number\n num?: number\n length?: number\n baseColor?: string\n speed?: number\n control?: LanelineControl[]\n corner?: number\n}\n\n/**\n * 流光风格交通组件\n */\nexport class StreamerTraffic extends BaseTraffic implements StreamerTrafficInterface {\n /** 流光速度 */\n private _speed: number\n\n /** 流光数量 */\n private _num: number\n\n /** 流光颜色 */\n private _baseColor: string\n\n /** 流光宽度 */\n private _divideWidth: number\n\n /** 流光长度 */\n private _length: number\n\n private _streamerArr: Mesh[] = []\n\n private _lanelineControl: LanelineControl[] = []\n\n private _control = []\n\n public get speed() {\n return this._speed\n }\n\n public get num() {\n return this._num\n }\n\n public get baseColor() {\n return this._baseColor\n }\n\n public get divideWidth() {\n return this._divideWidth\n }\n\n public get width(): number {\n return this._width\n }\n\n public set width(w: number) {\n this._width = w\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n public get divide(): number {\n return this._divide\n }\n\n public set divide(num: number) {\n this._divide = num\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n constructor(params: StreamerTrafficParams) {\n super(params)\n\n const { path, width = 4, divide = 4, divideWidth = 1, num = 5, length = 0.25, baseColor = '#ff7700', speed = 100, corner = 10, control = [] } = params\n\n this._path = path\n this._width = width\n this._divide = divide\n this._divideWidth = divideWidth / 2\n this._num = num\n this._baseColor = baseColor\n this._speed = speed\n this._corner = corner\n this._length = length\n this._lanelineControl = control\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n /**\n * generate streamer\n */\n private generateStreamer() {\n this._streamerArr.forEach((mesh) => {\n mesh.removeFromParent()\n })\n this._streamerArr = []\n\n for (let i = 0; i < this.lanelines.length; i++) {\n const geometry = new TubeGeometry(this.lanelines[i], Math.floor(this.lanelines[i].getLength()) * 10, this._divideWidth, 5, false)\n const material = new ShaderMaterial({\n side: DoubleSide,\n transparent: true,\n uniforms: {\n uColor: { value: new Color(this._baseColor) },\n uTime: { value: MathUtils.lerp(-1, 1, Math.random()) },\n uFade: { value: new Vector2(0, this._length + Math.random() * this._length - this._length / 2) },\n uNumLines: { value: this._num },\n uOffset: { value: Math.random() },\n uAlpha: { value: Math.random() },\n uSpeed: { value: this._speed + Math.random() * this._speed - this._speed / 2 },\n ulength: { value: Math.floor(this.lanelines[i].getLength()) },\n uReverse: { value: this._lanelineControl[i]?.direction ?? -1.0 },\n },\n vertexShader,\n fragmentShader,\n depthTest: false,\n depthWrite: false,\n })\n\n const road = new Mesh(geometry, material)\n\n // 渲染顺序\n road.renderOrder = 1000\n\n this.add(road)\n this.run(material)\n this._streamerArr.push(road)\n }\n }\n\n /**\n * run\n * @param material\n */\n private run(material) {\n const clock = new Clock()\n\n this._control.push(\n use.useframe(() => {\n material.uniforms.uTime.value = clock.getElapsedTime()\n }),\n )\n }\n\n override removeFromParent(): this {\n this._control.forEach((control) => {\n control()\n })\n\n return super.removeFromParent()\n }\n}"],"mappings":"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"}
|