@anov/3d 0.0.4-alpha24 → 0.0.4-alpha26
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/applicationApi.js +1 -1
- package/dist/applicationApi.js.map +1 -1
- package/dist/factory/3d.d.ts +51 -0
- package/dist/factory/3d.js +203 -0
- package/dist/factory/3d.js.map +1 -0
- package/dist/factory/globalData.d.ts +1 -0
- package/dist/factory/globalData.js +2 -0
- package/dist/factory/globalData.js.map +1 -0
- package/dist/factory/regionData.d.ts +28 -0
- package/dist/factory/regionData.js +447 -0
- package/dist/factory/regionData.js.map +1 -0
- package/dist/factory/unit/areaBoundingBox.d.ts +7 -0
- package/dist/factory/unit/areaBoundingBox.js +28 -0
- package/dist/factory/unit/areaBoundingBox.js.map +1 -0
- package/dist/factory/unit/circle.d.ts +15 -0
- package/dist/factory/unit/circle.js +88 -0
- package/dist/factory/unit/circle.js.map +1 -0
- package/dist/factory/unit/cylinder.d.ts +18 -0
- package/dist/factory/unit/cylinder.js +160 -0
- package/dist/factory/unit/cylinder.js.map +1 -0
- package/dist/factory/unit/glsl/wall/fragmentShader.glsl +30 -0
- package/dist/factory/unit/glsl/wall/vertexShader.glsl +6 -0
- package/dist/factory/unit/index.d.ts +2 -0
- package/dist/factory/unit/index.js +61 -0
- package/dist/factory/unit/index.js.map +1 -0
- package/dist/factory/unit/line.d.ts +13 -0
- package/dist/factory/unit/line.js +96 -0
- package/dist/factory/unit/line.js.map +1 -0
- package/dist/factory/unit/poi copy.d.ts +15 -0
- package/dist/factory/unit/poi copy.js +144 -0
- package/dist/factory/unit/poi copy.js.map +1 -0
- package/dist/factory/unit/poi.d.ts +15 -0
- package/dist/factory/unit/poi.js +140 -0
- package/dist/factory/unit/poi.js.map +1 -0
- package/dist/factory/unit/point.d.ts +10 -0
- package/dist/factory/unit/point.js +71 -0
- package/dist/factory/unit/point.js.map +1 -0
- package/dist/factory/unit/wall.d.ts +14 -0
- package/dist/factory/unit/wall.js +113 -0
- package/dist/factory/unit/wall.js.map +1 -0
- package/dist/factory/utils/areaBoundingBox.d.ts +14 -0
- package/dist/factory/utils/areaBoundingBox.js +39 -0
- package/dist/factory/utils/areaBoundingBox.js.map +1 -0
- package/dist/factory/utils/base64.d.ts +1 -0
- package/dist/factory/utils/base64.js +2 -0
- package/dist/factory/utils/base64.js.map +1 -0
- package/dist/factory/utils/finirMaterial.d.ts +3 -0
- package/dist/factory/utils/finirMaterial.js +39 -0
- package/dist/factory/utils/finirMaterial.js.map +1 -0
- package/dist/factory/utils/fontMesh.d.ts +10 -0
- package/dist/factory/utils/fontMesh.js +48 -0
- package/dist/factory/utils/fontMesh.js.map +1 -0
- package/dist/factory/utils/index.d.ts +2 -0
- package/dist/factory/utils/index.js +24 -0
- package/dist/factory/utils/index.js.map +1 -0
- package/dist/factory/utils/switchMaterial.d.ts +17 -0
- package/dist/factory/utils/switchMaterial.js +108 -0
- package/dist/factory/utils/switchMaterial.js.map +1 -0
- package/dist/module/environment/index.d.ts +4 -1
- package/dist/module/environment/index.js +7 -2
- package/dist/module/environment/index.js.map +1 -1
- package/dist/module/environment/time/index.d.ts +3 -1
- package/dist/module/environment/time/index.js.map +1 -1
- package/dist/module/model/index.js +6 -0
- package/dist/module/model/index.js.map +1 -1
- package/dist/module/scene/index.d.ts +7 -3
- package/dist/module/scene/index.js +66 -36
- package/dist/module/scene/index.js.map +1 -1
- package/dist/sdkEntry.d.ts +5 -2
- package/dist/sdkEntry.js +85 -65
- package/dist/sdkEntry.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createRoundLineWallMesh","ShaderMaterial","Vector3","regionMap","wallPosition","label","reform","title","id","belongTo","points","area","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative","walllMaterial","uniforms","iTime","value","size","width","speed","alpha","color1","color2","vertexShader","fragmentShader","transparent","side","depthTest","WallManage","gobal","options","Map","scene","option","forEach","item","roundLineMesh","map","v","radius","close","visible","wallMesh","set","add"],"sources":["../../../src/factory/unit/wall.ts"],"sourcesContent":["import { createRoundLineWallMesh } from '@anov/3d-ability'\nimport type { Object3D, Scene } from '@anov/3d-core'\nimport { ShaderMaterial, Vector3 } from '@anov/3d-core'\nimport type Factory3D from '../3d'\nimport regionMap from '../regionData'\n\nconst wallPosition = [\n {\n label: regionMap.reform.title,\n id: '1',\n belongTo: regionMap.reform.id,\n points: regionMap.reform.area,\n },\n {\n label: regionMap.reduction.title,\n id: '2',\n belongTo: regionMap.reduction.id,\n points: regionMap.reduction.area,\n },\n {\n label: regionMap.crudeOil.title,\n id: '3',\n belongTo: regionMap.crudeOil.id,\n points: regionMap.crudeOil.area,\n },\n {\n label: regionMap.catalyticCracking.title,\n id: '4',\n belongTo: regionMap.catalyticCracking.id,\n points: regionMap.catalyticCracking.area,\n },\n {\n label: regionMap.hydrocrackingUnit.title,\n id: '5',\n belongTo: regionMap.hydrocrackingUnit.id,\n points: regionMap.hydrocrackingUnit.area,\n },\n {\n label: regionMap.cokingUnit.title,\n id: '6',\n belongTo: regionMap.cokingUnit.id,\n points: regionMap.cokingUnit.area,\n },\n {\n label: regionMap.administrative.title,\n id: '7',\n belongTo: regionMap.administrative.id,\n points: regionMap.administrative.area,\n },\n]\n\nconst walllMaterial = new ShaderMaterial({\n uniforms: {\n iTime: {\n value: 0,\n },\n size: {\n value: 16.0,\n },\n width: {\n value: 0.4,\n },\n speed: {\n value: 1.0,\n },\n alpha: {\n value: 0.2,\n },\n color1: {\n value: [0.0, 0.9, 0.0],\n },\n color2: {\n value: [0.0, 0.2, 0.8],\n },\n },\n vertexShader: `varying vec2 vUv;\n\n void main(){\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader: `uniform float iTime;\n uniform float size;////循环\n uniform float width;///宽度\n uniform float speed;///速度\n uniform float alpha;///透明度\n uniform vec3 color1;///颜色1\n uniform vec3 color2;///颜色2\n varying vec2 vUv;\n \n vec3 colorfix(vec3 color) {\n return vec3(color.r, color.g, color.b);\n }\n \n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 uv = vUv;\n vec2 wallUV = uv;\n wallUV.y *= size;\n \n float fwallUV = floor(fract(wallUV.y - iTime * speed) + width);\n float dis = 1. - max((uv.y * 8. - 7.), 1. - (uv.y * 8.));\n float dis2 = 1. - (uv.y * 4. - 3.);\n vec3 col = color1 * dis2 + color2 * (1. - dis2);\n fragColor = vec4(col, fwallUV * alpha * dis);\n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }\n \n `,\n transparent: true,\n side: 2,\n depthTest: false,\n})\n\ntype WallManageOption = {\n visible?: boolean\n}\nclass WallManage {\n private scene: Scene\n readonly wallMesh: Map<string, Object3D> = new Map()\n private option: WallManageOption\n\n private time = 0\n\n constructor(gobal: Factory3D, options?: WallManageOption) {\n this.scene = gobal.scene.scene\n this.option = options || {}\n }\n\n generateWall() {\n // setInterval(() => {\n // this.time += 0.001\n // walllMaterial.uniforms.iTime.value = this.time\n // })\n\n wallPosition.forEach((item) => {\n const roundLineMesh = createRoundLineWallMesh(item.points.map(v => new Vector3(v[0], v[1], v[2])), {\n radius: 0,\n close: true,\n }, walllMaterial)\n roundLineMesh.visible = this.option?.visible ?? true\n this.wallMesh.set(item.id, roundLineMesh)\n this.scene.add(roundLineMesh)\n })\n }\n}\n\nexport default WallManage"],"mappings":";;;;;;;AAAA,SAASA,uBAAuB,QAAQ,kBAAkB;AAE1D,SAASC,cAAc,EAAEC,OAAO,QAAQ,eAAe;AAEvD,OAAOC,SAAS;AAEhB,IAAMC,YAAY,GAAG,CACnB;EACEC,KAAK,EAAEF,SAAS,CAACG,MAAM,CAACC,KAAK;EAC7BC,EAAE,EAAE,GAAG;EACPC,QAAQ,EAAEN,SAAS,CAACG,MAAM,CAACE,EAAE;EAC7BE,MAAM,EAAEP,SAAS,CAACG,MAAM,CAACK;AAC3B,CAAC,EACD;EACEN,KAAK,EAAEF,SAAS,CAACS,SAAS,CAACL,KAAK;EAChCC,EAAE,EAAE,GAAG;EACPC,QAAQ,EAAEN,SAAS,CAACS,SAAS,CAACJ,EAAE;EAChCE,MAAM,EAAEP,SAAS,CAACS,SAAS,CAACD;AAC9B,CAAC,EACD;EACEN,KAAK,EAAEF,SAAS,CAACU,QAAQ,CAACN,KAAK;EAC/BC,EAAE,EAAE,GAAG;EACPC,QAAQ,EAAEN,SAAS,CAACU,QAAQ,CAACL,EAAE;EAC/BE,MAAM,EAAEP,SAAS,CAACU,QAAQ,CAACF;AAC7B,CAAC,EACD;EACEN,KAAK,EAAEF,SAAS,CAACW,iBAAiB,CAACP,KAAK;EACxCC,EAAE,EAAE,GAAG;EACPC,QAAQ,EAAEN,SAAS,CAACW,iBAAiB,CAACN,EAAE;EACxCE,MAAM,EAAEP,SAAS,CAACW,iBAAiB,CAACH;AACtC,CAAC,EACD;EACEN,KAAK,EAAEF,SAAS,CAACY,iBAAiB,CAACR,KAAK;EACxCC,EAAE,EAAE,GAAG;EACPC,QAAQ,EAAEN,SAAS,CAACY,iBAAiB,CAACP,EAAE;EACxCE,MAAM,EAAEP,SAAS,CAACY,iBAAiB,CAACJ;AACtC,CAAC,EACD;EACEN,KAAK,EAAEF,SAAS,CAACa,UAAU,CAACT,KAAK;EACjCC,EAAE,EAAE,GAAG;EACPC,QAAQ,EAAEN,SAAS,CAACa,UAAU,CAACR,EAAE;EACjCE,MAAM,EAAEP,SAAS,CAACa,UAAU,CAACL;AAC/B,CAAC,EACD;EACEN,KAAK,EAAEF,SAAS,CAACc,cAAc,CAACV,KAAK;EACrCC,EAAE,EAAE,GAAG;EACPC,QAAQ,EAAEN,SAAS,CAACc,cAAc,CAACT,EAAE;EACrCE,MAAM,EAAEP,SAAS,CAACc,cAAc,CAACN;AACnC,CAAC,CACF;AAED,IAAMO,aAAa,GAAG,IAAIjB,cAAc,CAAC;EACvCkB,QAAQ,EAAE;IACRC,KAAK,EAAE;MACLC,KAAK,EAAE;IACT,CAAC;IACDC,IAAI,EAAE;MACJD,KAAK,EAAE;IACT,CAAC;IACDE,KAAK,EAAE;MACLF,KAAK,EAAE;IACT,CAAC;IACDG,KAAK,EAAE;MACLH,KAAK,EAAE;IACT,CAAC;IACDI,KAAK,EAAE;MACLJ,KAAK,EAAE;IACT,CAAC;IACDK,MAAM,EAAE;MACNL,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;IACvB,CAAC;IACDM,MAAM,EAAE;MACNN,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;IACvB;EACF,CAAC;EACDO,YAAY,4IAKV;EACFC,cAAc,45BA8Bb;EACDC,WAAW,EAAE,IAAI;EACjBC,IAAI,EAAE,CAAC;EACPC,SAAS,EAAE;AACb,CAAC,CAAC;AAAA,IAKIC,UAAU;EAOd,oBAAYC,KAAgB,EAAEC,OAA0B,EAAE;IAAA;IAAA;IAAA,kCALf,IAAIC,GAAG,EAAE;IAAA;IAAA,8BAGrC,CAAC;IAGd,IAAI,CAACC,KAAK,GAAGH,KAAK,CAACG,KAAK,CAACA,KAAK;IAC9B,IAAI,CAACC,MAAM,GAAGH,OAAO,IAAI,CAAC,CAAC;EAC7B;EAAC;IAAA;IAAA,OAED,wBAAe;MAAA;MACb;MACA;MACA;MACA;;MAEA/B,YAAY,CAACmC,OAAO,CAAC,UAACC,IAAI,EAAK;QAAA;QAC7B,IAAMC,aAAa,GAAGzC,uBAAuB,CAACwC,IAAI,CAAC9B,MAAM,CAACgC,GAAG,CAAC,UAAAC,CAAC;UAAA,OAAI,IAAIzC,OAAO,CAACyC,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;QAAA,EAAC,EAAE;UACjGC,MAAM,EAAE,CAAC;UACTC,KAAK,EAAE;QACT,CAAC,EAAE3B,aAAa,CAAC;QACjBuB,aAAa,CAACK,OAAO,2CAAG,KAAI,CAACR,MAAM,iDAAX,aAAaQ,OAAO,uEAAI,IAAI;QACpD,KAAI,CAACC,QAAQ,CAACC,GAAG,CAACR,IAAI,CAAChC,EAAE,EAAEiC,aAAa,CAAC;QACzC,KAAI,CAACJ,KAAK,CAACY,GAAG,CAACR,aAAa,CAAC;MAC/B,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA;AAGH,eAAeR,UAAU"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Box3, Vector3 } from '@anov/3d-core';
|
|
2
|
+
/**
|
|
3
|
+
* create areaBounding box
|
|
4
|
+
* @param points
|
|
5
|
+
* @param height
|
|
6
|
+
*/
|
|
7
|
+
export declare const createAreaBoundingBox: (points: number[][], height: number) => Box3;
|
|
8
|
+
/**
|
|
9
|
+
* collisionDetection
|
|
10
|
+
* @param box
|
|
11
|
+
* @param position
|
|
12
|
+
* @returns
|
|
13
|
+
*/
|
|
14
|
+
export declare const collisionDetection: (box: Box3, position: Vector3) => boolean;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Box3, Vector3 } from '@anov/3d-core';
|
|
2
|
+
import { createRoundLineWallMesh } from '@anov/3d-ability';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* create areaBounding box
|
|
6
|
+
* @param points
|
|
7
|
+
* @param height
|
|
8
|
+
*/
|
|
9
|
+
export var createAreaBoundingBox = function createAreaBoundingBox(points, height) {
|
|
10
|
+
var mesh = createRoundLineWallMesh(points.map(function (item) {
|
|
11
|
+
return new Vector3().fromArray([item[0], item[1], item[2]]);
|
|
12
|
+
}), {
|
|
13
|
+
radius: 0,
|
|
14
|
+
close: true,
|
|
15
|
+
height: height
|
|
16
|
+
});
|
|
17
|
+
var box = new Box3();
|
|
18
|
+
box.setFromObject(mesh);
|
|
19
|
+
var center = new Vector3();
|
|
20
|
+
box.getCenter(center);
|
|
21
|
+
var size = new Vector3();
|
|
22
|
+
box.getSize(size);
|
|
23
|
+
var newSize = size.multiplyScalar(3);
|
|
24
|
+
var newMin = center.clone().sub(newSize.clone().divideScalar(2));
|
|
25
|
+
var newMax = center.clone().add(newSize.clone().divideScalar(2));
|
|
26
|
+
box.set(newMin, newMax);
|
|
27
|
+
return box;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* collisionDetection
|
|
32
|
+
* @param box
|
|
33
|
+
* @param position
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
36
|
+
export var collisionDetection = function collisionDetection(box, position) {
|
|
37
|
+
return box.containsPoint(position);
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=areaBoundingBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Box3","Vector3","createRoundLineWallMesh","createAreaBoundingBox","points","height","mesh","map","item","fromArray","radius","close","box","setFromObject","center","getCenter","size","getSize","newSize","multiplyScalar","newMin","clone","sub","divideScalar","newMax","add","set","collisionDetection","position","containsPoint"],"sources":["../../../src/factory/utils/areaBoundingBox.ts"],"sourcesContent":["import { Box3, Vector3 } from '@anov/3d-core'\nimport { createRoundLineWallMesh } from '@anov/3d-ability'\n\n/**\n * create areaBounding box\n * @param points\n * @param height\n */\nexport const createAreaBoundingBox = (points: number[][], height: number) => {\n const mesh = createRoundLineWallMesh(\n points.map((item) => {\n return new Vector3().fromArray([item[0], item[1], item[2]])\n }),\n {\n radius: 0,\n close: true,\n height,\n },\n )\n\n const box = new Box3()\n\n box.setFromObject(mesh)\n\n const center = new Vector3()\n box.getCenter(center)\n\n const size = new Vector3()\n box.getSize(size)\n\n const newSize = size.multiplyScalar(3)\n\n const newMin = center.clone().sub(newSize.clone().divideScalar(2))\n const newMax = center.clone().add(newSize.clone().divideScalar(2))\n\n box.set(newMin, newMax)\n\n return box\n}\n\n/**\n * collisionDetection\n * @param box\n * @param position\n * @returns\n */\nexport const collisionDetection = (box: Box3, position: Vector3) => {\n return box.containsPoint(position)\n}\n"],"mappings":"AAAA,SAASA,IAAI,EAAEC,OAAO,QAAQ,eAAe;AAC7C,SAASC,uBAAuB,QAAQ,kBAAkB;;AAE1D;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqB,CAAIC,MAAkB,EAAEC,MAAc,EAAK;EAC3E,IAAMC,IAAI,GAAGJ,uBAAuB,CAClCE,MAAM,CAACG,GAAG,CAAC,UAACC,IAAI,EAAK;IACnB,OAAO,IAAIP,OAAO,EAAE,CAACQ,SAAS,CAAC,CAACD,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7D,CAAC,CAAC,EACF;IACEE,MAAM,EAAE,CAAC;IACTC,KAAK,EAAE,IAAI;IACXN,MAAM,EAANA;EACF,CAAC,CACF;EAED,IAAMO,GAAG,GAAG,IAAIZ,IAAI,EAAE;EAEtBY,GAAG,CAACC,aAAa,CAACP,IAAI,CAAC;EAEvB,IAAMQ,MAAM,GAAG,IAAIb,OAAO,EAAE;EAC5BW,GAAG,CAACG,SAAS,CAACD,MAAM,CAAC;EAErB,IAAME,IAAI,GAAG,IAAIf,OAAO,EAAE;EAC1BW,GAAG,CAACK,OAAO,CAACD,IAAI,CAAC;EAEjB,IAAME,OAAO,GAAGF,IAAI,CAACG,cAAc,CAAC,CAAC,CAAC;EAEtC,IAAMC,MAAM,GAAGN,MAAM,CAACO,KAAK,EAAE,CAACC,GAAG,CAACJ,OAAO,CAACG,KAAK,EAAE,CAACE,YAAY,CAAC,CAAC,CAAC,CAAC;EAClE,IAAMC,MAAM,GAAGV,MAAM,CAACO,KAAK,EAAE,CAACI,GAAG,CAACP,OAAO,CAACG,KAAK,EAAE,CAACE,YAAY,CAAC,CAAC,CAAC,CAAC;EAElEX,GAAG,CAACc,GAAG,CAACN,MAAM,EAAEI,MAAM,CAAC;EAEvB,OAAOZ,GAAG;AACZ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMe,kBAAkB,GAAG,SAArBA,kBAAkB,CAAIf,GAAS,EAAEgB,QAAiB,EAAK;EAClE,OAAOhB,GAAG,CAACiB,aAAa,CAACD,QAAQ,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const POI_IMG = "data:image/png;base64,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";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export var POI_IMG = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQYAAAEGCAYAAACHNTs8AAAZA0lEQVR4nO3dW4wkV3kH8O87VdXX6e7pmV57F2y8i9f3XRsMsWNjm1wMgRgSSKLIPMADUS4PkYhElDxEChDl0RYogoQnHnjJg8HYQSEoJsGWweYiDLZ3bbzr9a4ve5+Z7pmevtc5X3Sq65yp6Z41tsPD9sz/J7Wmp6emu7rq1L++OnW6mk89dC+9nvsfOHpjpRh+fK4Q3JTPBYuKOXqdyQFgGwgv9Bbuf+DogUY1/7eNav6Knx1ZOfvMsdWzr5zrnOgPjZmaGAC2ja985ubbtwyGrzz00p9dtlj45A8OrZz+1g9fe8pokcZ8PnfzNYvzb18slIr5IAwD5vHUyv8fMzOxu58+LvYX92gyTfKAn358b/OP5HEm/+fMlJS8hJtQjR9m3vL/hIkVMQmznUseP7b189p7itz/8fhlJuaTM68zfl7/WGYGs9MrckskO50avwb7JafG863Stzd+XpXOM48XohpPzzw9T9l5VbxpkSTTMUvmvp1zky6qdG2458ysHpZkQZJS2dcT/0Lu8ezruXlSyV3ZWC3jp5pYFsLpvPvZTdcesRJ2rSJ5GrWx6pPlJ+N5UW7mRTbmk0y6NNg3Fc68t/EsiF9dgdpoeRurUDhw8yaZ50ieZDxvyv1NJfOYvgHKLM90OjIb7TN9zyptmwFJunmk69G+b0mbRDKRkNt6ktlk8fPq2s5GUyb28+GehDPLMX0zburAb5p2Mxr/YieZ//C/f40mK4b7HzgaVorhPxRy6q77Hjh66OT5bt8Gwm9ev7g4VwjDoyfb7Ud/cf7cSns40tqkrW0jGJTaWNObG00mPBT7jSj7941tnNPp7YpXftqNv29sbCr9PxcUrHxzIOVeI20xrMaPuN/VptcbtziVvm5y3/+fa9bjjSFZse5vbFd0kP5kCthPx7asCpVvdfb5kpWn0tdyKypIn5Q5fT9p4/c/x7Putzo3uWuxSXtK5ydgSV7HZcV43tNFx5t/ujXl34oa58d4edoNTaXvx4znfbwxpAuVkr8x+9WSLr+NjW88/7KxMSv3joUDlYTeeB3IeCO19yV5avHrxj5t6AIoeUzGG16QhkHa8MfTsN/w2M9HsgiSNu/ep90YNzVHZR9zb0zSBTqeJztDKhOESSjYm3DSvlxIsjLk1kqwsQGyyyqlxgEQsNubiAtC147SkEq3Y07XLUm6Axo/XxJWyTOJa7rj9edzf2PDT5a9JFuRDct025R075iGnd8CjF0oXIo4555gUzBUS+EXBkN5z5cfOvLsWmcUH7xyvvquK+frz728uvrUkVZLRKhajsJrLq/MLVRyuWJeBYFvWez2SbRJ0tgzpcTGxH6jdI9uCpHMHohpY01n345vdRO7bJU+x2QFwz7T/Wv7/x0vcsls9EyTTz3xO/tQ8cVKZhdJLnDcXkRl9yhTf6dNYbC5YFKsNuZz02Ikv9Gmf8tWAOkDyW4tbRQqbdwuOMW/F7eH3Hgv5EM224gDRZsXgnJtzO3axQVwct8uTkn/njyWBkGQRkqyyShJNkC3o3BB5hrFOC992Kd7TCFR441P+aUiFLi1vbGcWPk3YFwgZ0MxfaPi12WyN01S0s6a+BzfePVxtvjVQnbnYHw1YueO1XiTpI2qJS0qDNHGmkjWj6tUk9TgjaDgcV6nr+HKAV+J+Y3BvpYYu5bTii4J5CANET/nybIxbMbz58KIhAwHNBrpmCj0z+yD4V8fPvYXYaBu+ZcHjxzu9HV8+8FdC5c3CqVvP3HyVGt9NLKBcN0V1UopHwavne/2Dh1vra314tgeZhAAzKwP3bLn0u/+5PTZT//+vn2bguH+B47uv2yx8In7Hjh6eL0Xx++/6ZLGfCXKPfzDk6dsZ+Pe3XPF/ZeVKy+f6XZ+cnKlI8gCgG0tCYZGNf/3//OL86dsn8JN++vVXfO5wsNPnDwVx2Su31urNGr53BOHlpa7fa3RHAC2P2VPSxLR/u/8+PSZ+bkoOrCvWv/ez86eHY3EHNhXq1bLYfTkc+ebCAWAnUNViuEf23EKtq/gtgONxUPH15q2T2HfnnKpVo6in/6y2bQhgTYBsHPYYHjX08dWm/a0ZK0URc8ca62VCkGwb0+5/NTRlZY/LQkAOycYcpFaePVcp3f15dU5O07BdizafoXjpzsdHD4A7Ex23ENkzzzYEY2vnO117WnJSjEKT5zpdtEmAHYmPwbMDnO2Ixov21Uq2nEKOCUJsHP5YLCffbD9CfbU5PlWf4g2AbBzqcl3no84sCMa0SYAdq6pYLCffcAwZ4CdbSoYAAAQDAAwBcEAAFMQDAAwBcEAAFMQDAAwBcEAAFMQDAAwBcEAAFMQDAAwBcEAAFMQDAAwBcEAAFMQDAAwBcEAAFMQDAAwBcEAAFMQDAAwBcEAAFMQDAAwBcEAAFOmgsGIUL2Si6amBIBtJ4p4KgNoq2B4+lir9e6r5uftV+JPTQ0A24YNhVuvbdSPn+l0LhgMRkQuXSjkz670B8+93F67+er6vP0eSzQDgO3HhcL51cHghVfW1kv5IMi+SR8Mj/586ezd77n00l3zhdyZ5d7g+Vfa7fdeU6/PFUOEA8A2slUo3HPb2/Y8e3y15d6lMiLxtVdU506cWe/95PmV5bvfc8nuxnw+d3qp13/h1fX2LdctIBwAtokLhcKJs53OT59fabr+xeDg/ktO33Ww8YcnznTXjr7W7gxHJr7rpl2XnFzqdc81+0OtSQ68c756rtUfjGJ8dR3ArHojofA3f3LVDeu9+NvBA/9014uP/mKpeceBxkdeOt1ZffHkencYi77zYCMJh7PN/kBE5OA769Vzzf5ghO+1BJg5bzQUjJHv/uVH33lf8Nl7D9Ct1y288NjTS+27bmzcc+S1TuvYyXbXCJn3HWg0Xjvf7Z1tDgZELNfvrVXPtxAOALPkzYaCfWtJMFi3Xrfw/GNPL3XvuHHXh4+8ut568WS7I0Riw+GVc11bOQyVIrr+ilr1bLPXjxEOABe9txIKlAbD54joMfvLLdctPPf4M0vxHTc2Pvj8K+3msZPrXVZMt9/QaLx8ptM91xwMwoDpuitqlbPN3gDhAHDxequhQESfs8HwaPqLC4dnH39mWe482PjA4ZfXVl46ud6NQsW3peFg+xzykVJXXVatnG72BsYQwgHgIvP/CQUi+jyfeuhet2F/noi+4P765W+99OflQnDvl7559PD5Vn9489X12pVvm6v855OnTncHWl/zjurcvt3lMhoEwMXJjmh8K6Fg72SDgSbD4SsPvfRXpXzwp1/85pFDS63B8L3XLszvvbQ0950fnU7CAe0B4OL2VkKBtggGmgyHf3v4+F/nIv74F79x5NDK2nD0G9ct1A/uq82jPQDMBjui8c2EAl0gGGgyHL76Hy99Ngj4w1/6xtHDzfZwNDU1AFzU3kwovF4wbBUOf3dpvfCxqakAYCaca/UffCOh4IJh6kHYefYc+MAH7Js+feiRR7D6AR+OAmfqM/mwc7FgjBIc+5pdBO9Ll8MP6cpP7/hFstNNXcEJAACHEuAwlgQ4qBgAYAqCARxUDOAhGABgCoIBslA1QAKdj+AgFMBDxQAOggE8BANkIRwggUMJcBAK4KFigCyEAyQQDOAgFMBDMEAWwgESCAZw0BbAQ2OALFQMkMBZCXAQCuAhGMBBMICHQwkAmIJgAIApOJQAB4cS4KFiAIApqBjAwU4CPDQGcHAoAR6CAbIQDpDAoQQ4CAXwEAzgIBjAw6EEAExBMICjUDWAg0MJcBjBAA4qBgCYgmCALFQMkEAwgINQAA99DOAgGMBDMICDYAAPwQAOggE8BAM4CAbwEAzgIBjAQzCAg2AAD8EADoIBPAQDOAgG8DDACQCmoGIABxUDeAgGcBAM4CEYwEEwgIdgAAfBAB6CARwEA3gIBnBwBSfwEAzg4NQ1eGgMADAFwQAOrhINHoIBshAMkEAfAzgIBfAQDOAgGMBDMICDYAAPwQAOggE8BAM4CAbwEAzgIBjAQzCAgyHR4GEcAzgIBfBQMYCDYAAPwQAOggE8BAM4CAbwEAzgoPMRPHQ+goNQAA8VAzioGMBDMICD6hE8BAM4qBbAQzCAg2AAD+UjAExBxQAOdhLgIRjAwaEEeAgGcBAM4CEYwEEwgIfjSnDwvRLgIRggC+0BEjiUAAehAB4aAwBMQcUADj5EBR4qBnAQDOAhGMBBMICHQwlwsJMAD8EADqoF8LCXAAcDnMBDxQAO+hjAQ8UAAFNQMYCDigE8VAzgoC2Ah4oBHFQM4CEYwEEogIdgAAfBAB6CARz0MYCHYAAHFQN4CAZwEAzgoXwEgCmoGMBBxQAeggEcVI/gIRjAQcUAHoIBHAQDeAgGcHAoAR6CARxUDOAhGMBBMICH8hEcBAN4CAbIQjhAAocS4GAnAR6CARxUC+AhGMBBxQAeGgM4qBjAQ8UADq75CB6CARyEAng4lACAKagYwMFOAjwEAzg4lAAPwQAOOh/BQ/kIDkIBPFQM4CAYwEMwgINgAA/BAA4OK8FDYwCAKagYwMGhBHgIBnAQDOAhGMDBOAbwEAzgoL8JPDQGcBQqBnBQMYCDQwnwUDFAFoIBEggGcBAK4CEYIAvhAAn0MYCDzkfwUDGAg1AADxUDOAgG8BAM4OB0JXgIBnBwWAkeggEcVAvgIRjAQTCAh2AAB8EAHo4rwUEwgIdggCyEAyRwKAEOTleCh2AAB9UjeGgMADAFFQM42EmAh8YAWehjgAQqBnCwkwAPwQAOqgXwsJcAgCkIBshC1QAJBAM4GOAEHvoYwMFOAjwEAzioFsBDMICDYAAPwQAOggE8BAM4CAbwEAzgIBjAQzCAg2AAD6eoAGAKKgZwUDGAh4oBshAOkEAwgIMh0eAhGMBBWwAPjQGy0B4ggYYADg4lwEMwgINgAA/BAA5CATyMYwAHwQAeggEcBAN4OJQAgCkIBgCYgkMJcHBWAjwEwyz68ad+vTPd+C3aFAq/7ue3bv361ENw8UIwgINqATwEAzgIBvDQ+bj9ub4DNXEL/G3p0cAvhfH97G3y/9AXsQOgYtieshvvG/3pdhKuTcgWPyV9vuzP7LSwTSAYZszphz9xwRneszuaDITXu9FEgLhgiNKf8gZuPhxOnxldMBz27I6mHoOLG4Jhm8iEwlY3NXE4wTSUnDESGJGQhFQoooiJ465eYGatFGkOeEQhj9KN30z8dI8l0teX1wsImB0Ihm3gAqGw0S+gJRz1TUkbKmqhoojkiDngzPQhJQFBg5j2EEmy4YuIISbNRH2lpJcLVC8oqm4aCC4UsiHBOKzYHhAM28N0KBgJhj2ZG8SmIkJlZgqYWNmfSrEKmEkpMYpZshtzIWItImyElRYTiHAkQpHWVOrGxsjAjALF64UcrwUF1c+ERBIKNqRQNcw+BMOMS6sFh0lLsN4xVa1pnohyiilUTCoKlA5DGgYhaQqUEPszE+lhBicbdlBUo42NXWkyIhRTEMcmGGoKtZGcNlJr92iOe7qbi6RZnAu7E2cqEAwzDsGwfXBnTReHI9lFbAOBgyAgKURqPczzkBSrtGMxStd7SEYKNJJqbKiYHEoQke6bvYHiDkW8RkwjUjyiHMVhLhiERCMaGe4PKT8cmbwRLvUGlO8P4/VqUS2loQLbAIJh9iWHD83leEGL1GwghIpMOc9r6YbqwiBHWkq9nt4/jGmvMbRbhCpsKwYmrpu4YJfEWsd8RMZ7fK2ULAeKTxUjfjEsBa8mrxWpYSGidsFwq9fVxcFQSka43OzoKOrLUq0edHA4MfsQDDPO9A0vt/UlRFRSzJyLuD1XUV3bueiqA9M3jXZPbo2N7GeivD2ESPocxp0OPWYZEXPSTxAE1DXCORHJi+FLR4Yaw1hu4F68GoX0dGUu+DkFLKTYFOfCdnFk2q11qRot0TA2l6wsy9LCYri209fLrEMwzLilNd1gphITSbmozhfKKk4DIaDYFFttfWes6UYmjmwYhAEt5yJ1thBxiyLuEaejHDn4pF0S1fnwSVstkBGWoZS7I1kcjcweLVwbjuj25aY+kM/x43PV4HDSDxGp0XydllabNDeMTTnWsri0NLIh097p62aWIRhmW02ES8xiqqVgKVdWOg0FFXd1vdU1HyOiXUy2kqBjlZI6RlESHIXk0IKomLaBgMiotNOwlASD4hEXuF0u0BJR8HTc0wvrPXN1bGihP5APjlZkd70e/rft7rSVRq0erLaapIcjU9GGFonInrFAn8OMQjDMrohZ5u1hfzHHNhRG6frkuGeqzY75IyaqK8XNhTn1JOXVMA2CYhoMLhwiMlJMz1DYaKjY4U/pRh2405BhMViaLwavdtv6iu7AvDvWcsPySiyLi+F/uX6O+XqwtrwkKtY2XMSGw5mdvpJmFYJhdlWTPgElnbla1M9sxKrV0R+yf1eKlxbmg+9TkPQ32Eog70JBBmZvq2N+2/YfGEMLe+pxcrrxzNnRfUFArxVy/FSlEjxKilvp6UtbGcSlSnAsF/KZVkffbYxcv9rUJ2r14Fl3urI+p5rn13SexL9Wf6evqFmEYJhNdiMs2zkv5tVqdnDTWivea4QuU0SjhZp6JOliHAeCPzux2tQf7w7MRzZ9upbHwxCEKIw17V3vyd5uf/Q7C5Xgq1EpeMaGQlpFDMOiapZi+UGnb94/jM1tpNVzFLD9O6uCMqqt22YcXGUEw2zCx65nUy4NglG5GsTpO0i27GEs19qfuYifpjA5fMh+hDpsr8Z3dwfmD9y6t4MdatUq6ZUXkpu9bx+zjPD8clt/hkamMflR7FIlOK6YmyJUW2vry7MDnMKAe+ndwk5fUbMKwTCbki2Xpzv3WIQW7TDGYsQnt/rcRHcgv5v9h/lalfL5HJHo5Gbv28ccES6ursudW12TIVByyk4W66Sz0auV/ECngGAmIRh2GM58IvINY3nz/wMzDcEwm2xHoO0PmLzQgTDTsh252BvJ2yc++Zjcinn+fvYfWqtrNBgM7Ucpk5u9bx9zmKVXKwVPZJ/DfRZCG34bJYcOtJx9ztWucfOld/qKmlXofJxNw3TjjDprOixXA/8JyVzIv+yP5MBwJDdRLMcoZJ1uoMlZhUot/J4xut4dmHvsjkFrTatrWw9UVCwt2/lIOT6feQ57M9223mtE6sy0Uq0kw6X9EOhYJ6c/CR2PswsVw2yyG2HHznlvYGrZKy1V58MTiuk1W02srOoPkhaVOaOQnFWo1YMHd9eDfy7k+HGlaGViCcRhQCfmCvzgpY3oH6NS8FwaRG5sg9Y9M98dmDvs6+VC9SMKkvBJXt8O0TZ2LMRYZ6evqFmFimF22d38nDZcXl+Ne3O10F9pab4cfLe5rj9hjDRWWvr3MgOc/MesOa+O1/PqpB/gFNMcsWgKVZuYBmkIDNK9/sAFQ7+tr+gM5L32Ui5K8eFaPQkOf3jRXDd1EjtuQnqoGGYXgmF2jUS4xUwLvaE0ch3jhkRLWFRrdZFvrnblo0Zk93Lb3JPrmxPpkOhBelbBpJVESIr7lKNV28uYGcw0SsPATj+Ie7rhhkSTkA4DfqpeD/83EwrSauqqNlImJkOyud8BZguCYbatMifH8+W1rt41R9RMP0RlwlLQXMzLN1pr8V2xlhuHI96/smauCQOzsuWHqDbGIZjMh6gqvZHsHY7Mbi1cJGE7PHKtkOfHytXgedffYENhtamro9jMJRd7UbRszNSpVJghCIYZ16gG55fb2u7qS52e2aW1rJcrqkfMmgLuz9ejR03fHE4/dn2VHXMQa3NJbzAOA6Woo+wGzumZDqFIhHNGxA5r1kL2xva6j+0oop+nH7vupdWGppFRrXVpxDo5E2HCgJcXFsP102eQC7MMwTDjVEHJroI611yOF+2FWgYjqupVXSnn1Xp6oZZYFdRSrUCPUCxPdntm/0jLO9yFWoymouHMZeSFjIwvBjuwF2oJFZ8uhPxSVApeTj9cNUxCwYj0urqSXqjFVg3DXKiSC7Xs9HWyHSAYZl/S6VdfDFc6a7pvL+2mDeXW+1IPRlqKEfeDPNtLtA0p5HapEhwiol9OXtqNksvH2w9oU7zp0m6bz2i4S7tVhiOTs0cbRkgzU6deCvyl3XD1ptmHYNg+pFwNemUtJ+3FYGNNda0p6hpTsVd8TC8GG6cXgx2k13McUp7Xw81fPJMdEJW9GGwpvRisrSe0keTwolvMk7sYLEZHbiMIhhln986ZK0WLHVMwVw1Wych6r6vnYk01I1QcahOMNBd4aD9vqScvH28rBTvwkdPvk3CXj2cRToJARLQkhxmUXD6+vPny8ZPfWgUzDsGwPUxujIYUk70mYzLIaOILZ4yRnLHXfLRfJ0Oy1ZfU2lHVxuaD+8KZIKCtvnBmMhRwGLFNIBi2gbRqmHwjG18pF7CJysEoGl+HccuvqJPxFRnS6uFNfUVdtkpAKGwTCIZtYiIchDZ/M5VkBjWNH8vxyPY2qulqIfscv+rmp0OlsL2wCNbnzPnxp37VHL+Vr8GfdKGvwZ98jN5QpXDr16cegosXKobtKbsRXygALhQIkyY3ehw2bHdE9H+Vg3vGSrFooAAAAABJRU5ErkJggg==';
|
|
2
|
+
//# sourceMappingURL=base64.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["POI_IMG"],"sources":["../../../src/factory/utils/base64.ts"],"sourcesContent":["export const POI_IMG = 'data:image/png;base64,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'"],"mappings":"AAAA,OAAO,IAAMA,OAAO,GAAG,g8QAAg8Q"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Color, MeshStandardMaterial, ShaderMaterial, Vector3 } from '@anov/3d-core';
|
|
2
|
+
export var finirMaterialV2 = new ShaderMaterial({
|
|
3
|
+
uniforms: {
|
|
4
|
+
// 在这里定义uniform变量,用于控制透明度、边缘和反光效果
|
|
5
|
+
edgeColor: {
|
|
6
|
+
value: new Vector3(1.0, 0.0, 0.0)
|
|
7
|
+
},
|
|
8
|
+
// 边缘颜色
|
|
9
|
+
edgeThickness: {
|
|
10
|
+
value: 0.03
|
|
11
|
+
},
|
|
12
|
+
// 边缘厚度0.05
|
|
13
|
+
reflectionStrength: {
|
|
14
|
+
value: 100
|
|
15
|
+
} // 反光强度0.9
|
|
16
|
+
},
|
|
17
|
+
|
|
18
|
+
vertexShader: "\n varying vec3 vNormal;\n\n void main() {\n vNormal = normal;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",
|
|
19
|
+
fragmentShader: "\n varying vec3 vNormal;\n uniform vec3 edgeColor;\n uniform float edgeThickness;\n uniform float reflectionStrength;\n\n void main() {\n // \u8BA1\u7B97\u900F\u660E\u5EA6\n float alpha = 0.9; // \u900F\u660E\u5EA6\u7684\u57FA\u7840\u503C\n\n // \u8BA1\u7B97\u8FB9\u7F18\u6548\u679C\n float edge = fwidth(length(vNormal));\n alpha *= smoothstep(0.0, edgeThickness, edge);\n\n // \u8BA1\u7B97\u53CD\u5149\u6548\u679C\n vec3 reflection = reflect(normalize(-vNormal), vec3(0.455, 0.749, 0.890));\n float reflectionIntensity = max(dot(reflection, normalize(-vNormal)), 0.0);\n vec3 reflectionColor = reflectionStrength * reflectionIntensity * edgeColor;\n\n // \u6700\u7EC8\u989C\u8272\u8BBE\u7F6E\u4E3A\"#74bfe3\"\n vec3 finalColor = vec3(0.8, 0.25, 0.145); // \"#74bfe3\"\u7684RGB\u503C\n finalColor += reflectionColor; // \u6DFB\u52A0\u53CD\u5149\u6548\u679C\n\n // \u8BBE\u7F6E\u900F\u660E\u5EA6\n gl_FragColor = vec4(finalColor, alpha);\n }\n ",
|
|
20
|
+
transparent: true,
|
|
21
|
+
depthWrite: false
|
|
22
|
+
});
|
|
23
|
+
export var finirMaterialV1 = new MeshStandardMaterial({
|
|
24
|
+
/// /这个没有沟边粗细
|
|
25
|
+
opacity: 0.0,
|
|
26
|
+
transparent: true,
|
|
27
|
+
depthWrite: false
|
|
28
|
+
});
|
|
29
|
+
finirMaterialV1.onBeforeCompile = function (shader) {
|
|
30
|
+
shader.uniforms.rimColor = {
|
|
31
|
+
value: new Color('#99C9E3')
|
|
32
|
+
};
|
|
33
|
+
shader.uniforms.rimPower = {
|
|
34
|
+
value: 0.9
|
|
35
|
+
};
|
|
36
|
+
shader.fragmentShader = shader.fragmentShader.replace('void main() {', ['uniform vec3 rimColor;', ' uniform float rimPower;', 'void main() {'].join('\n'));
|
|
37
|
+
shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>', "#include <dithering_fragment>\n float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\n gl_FragColor.rgb += rimPower*dotNV*rimColor;\n vec3 fresnelall =rimPower*dotNV*rimColor;\n gl_FragColor.a +=(fresnelall.r+fresnelall.g+fresnelall.b)/3.;");
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=finirMaterial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Color","MeshStandardMaterial","ShaderMaterial","Vector3","finirMaterialV2","uniforms","edgeColor","value","edgeThickness","reflectionStrength","vertexShader","fragmentShader","transparent","depthWrite","finirMaterialV1","opacity","onBeforeCompile","shader","rimColor","rimPower","replace","join"],"sources":["../../../src/factory/utils/finirMaterial.ts"],"sourcesContent":["import { Color, MeshStandardMaterial, ShaderMaterial, Vector3 } from '@anov/3d-core'\n\nexport const finirMaterialV2 = new ShaderMaterial({\n uniforms: {\n // 在这里定义uniform变量,用于控制透明度、边缘和反光效果\n edgeColor: { value: new Vector3(1.0, 0.0, 0.0) }, // 边缘颜色\n edgeThickness: { value: 0.03 }, // 边缘厚度0.05\n reflectionStrength: { value: 100 }, // 反光强度0.9\n },\n vertexShader: `\n varying vec3 vNormal;\n\n void main() {\n vNormal = normal;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: `\n varying vec3 vNormal;\n uniform vec3 edgeColor;\n uniform float edgeThickness;\n uniform float reflectionStrength;\n\n void main() {\n // 计算透明度\n float alpha = 0.9; // 透明度的基础值\n\n // 计算边缘效果\n float edge = fwidth(length(vNormal));\n alpha *= smoothstep(0.0, edgeThickness, edge);\n\n // 计算反光效果\n vec3 reflection = reflect(normalize(-vNormal), vec3(0.455, 0.749, 0.890));\n float reflectionIntensity = max(dot(reflection, normalize(-vNormal)), 0.0);\n vec3 reflectionColor = reflectionStrength * reflectionIntensity * edgeColor;\n\n // 最终颜色设置为\"#74bfe3\"\n vec3 finalColor = vec3(0.8, 0.25, 0.145); // \"#74bfe3\"的RGB值\n finalColor += reflectionColor; // 添加反光效果\n\n // 设置透明度\n gl_FragColor = vec4(finalColor, alpha);\n }\n `,\n transparent: true,\n depthWrite: false,\n})\n\nexport const finirMaterialV1 = new MeshStandardMaterial({ /// /这个没有沟边粗细\n opacity: 0.0,\n transparent: true,\n depthWrite: false,\n})\n\nfinirMaterialV1.onBeforeCompile = (shader) => {\n shader.uniforms.rimColor = { value: new Color('#99C9E3') }\n shader.uniforms.rimPower = { value: 0.9 }\n shader.fragmentShader = shader.fragmentShader.replace(\n 'void main() {',\n [\n 'uniform vec3 rimColor;',\n ' uniform float rimPower;',\n 'void main() {',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n `#include <dithering_fragment>\n float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\n gl_FragColor.rgb += rimPower*dotNV*rimColor;\n vec3 fresnelall =rimPower*dotNV*rimColor;\n gl_FragColor.a +=(fresnelall.r+fresnelall.g+fresnelall.b)/3.;`,\n\n )\n}"],"mappings":"AAAA,SAASA,KAAK,EAAEC,oBAAoB,EAAEC,cAAc,EAAEC,OAAO,QAAQ,eAAe;AAEpF,OAAO,IAAMC,eAAe,GAAG,IAAIF,cAAc,CAAC;EAChDG,QAAQ,EAAE;IACR;IACAC,SAAS,EAAE;MAAEC,KAAK,EAAE,IAAIJ,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;IAAE,CAAC;IAAE;IAClDK,aAAa,EAAE;MAAED,KAAK,EAAE;IAAK,CAAC;IAAE;IAChCE,kBAAkB,EAAE;MAAEF,KAAK,EAAE;IAAI,CAAC,CAAE;EACtC,CAAC;;EACDG,YAAY,qRAOK;EACjBC,cAAc,g6CA0BG;EACjBC,WAAW,EAAE,IAAI;EACjBC,UAAU,EAAE;AACd,CAAC,CAAC;AAEF,OAAO,IAAMC,eAAe,GAAG,IAAIb,oBAAoB,CAAC;EAAE;EACxDc,OAAO,EAAE,GAAG;EACZH,WAAW,EAAE,IAAI;EACjBC,UAAU,EAAE;AACd,CAAC,CAAC;AAEFC,eAAe,CAACE,eAAe,GAAG,UAACC,MAAM,EAAK;EAC5CA,MAAM,CAACZ,QAAQ,CAACa,QAAQ,GAAG;IAAEX,KAAK,EAAE,IAAIP,KAAK,CAAC,SAAS;EAAE,CAAC;EAC1DiB,MAAM,CAACZ,QAAQ,CAACc,QAAQ,GAAG;IAAEZ,KAAK,EAAE;EAAI,CAAC;EACzCU,MAAM,CAACN,cAAc,GAAGM,MAAM,CAACN,cAAc,CAACS,OAAO,CACnD,eAAe,EACf,CACE,wBAAwB,EACxB,0BAA0B,EAC1B,eAAe,CAChB,CAACC,IAAI,CAAC,IAAI,CAAC,CACb;EACDJ,MAAM,CAACN,cAAc,GAAGM,MAAM,CAACN,cAAc,CAACS,OAAO,CACnD,+BAA+B,0RAOhC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Vector3 } from '@anov/3d-core';
|
|
2
|
+
import { Color, Mesh } from '@anov/3d-core';
|
|
3
|
+
declare type FontMeshOption = {
|
|
4
|
+
position: Vector3;
|
|
5
|
+
color?: Color;
|
|
6
|
+
size?: number;
|
|
7
|
+
rotate?: number;
|
|
8
|
+
};
|
|
9
|
+
declare const createFontMesh: (text: string, options: FontMeshOption) => Promise<Mesh>;
|
|
10
|
+
export default createFontMesh;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
3
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
4
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
5
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
7
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
8
|
+
import { Color, Mesh, MeshBasicMaterial, lib } from '@anov/3d-core';
|
|
9
|
+
var FontLoader = lib.FontLoader,
|
|
10
|
+
TextGeometry = lib.TextGeometry;
|
|
11
|
+
var Font = /*#__PURE__*/function () {
|
|
12
|
+
function Font() {
|
|
13
|
+
_classCallCheck(this, Font);
|
|
14
|
+
_defineProperty(this, "font", void 0);
|
|
15
|
+
this.font = null;
|
|
16
|
+
}
|
|
17
|
+
_createClass(Font, [{
|
|
18
|
+
key: "createText",
|
|
19
|
+
value: function createText(text, options) {
|
|
20
|
+
var _this = this;
|
|
21
|
+
return new Promise(function (res) {
|
|
22
|
+
var loader = new FontLoader();
|
|
23
|
+
loader.load('./font.json', function (font) {
|
|
24
|
+
var _options$size;
|
|
25
|
+
_this.font = font;
|
|
26
|
+
var geometry = new TextGeometry(text, {
|
|
27
|
+
font: _this.font,
|
|
28
|
+
size: (_options$size = options.size) !== null && _options$size !== void 0 ? _options$size : 10,
|
|
29
|
+
height: 1
|
|
30
|
+
});
|
|
31
|
+
var mesh = new Mesh(geometry, new MeshBasicMaterial({
|
|
32
|
+
depthTest: true,
|
|
33
|
+
color: new Color('#fff')
|
|
34
|
+
}));
|
|
35
|
+
mesh.position.copy(options.position);
|
|
36
|
+
res(mesh);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}]);
|
|
41
|
+
return Font;
|
|
42
|
+
}();
|
|
43
|
+
var font = new Font();
|
|
44
|
+
var createFontMesh = function createFontMesh(text, options) {
|
|
45
|
+
return font.createText(text, options);
|
|
46
|
+
};
|
|
47
|
+
export default createFontMesh;
|
|
48
|
+
//# sourceMappingURL=fontMesh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Color","Mesh","MeshBasicMaterial","lib","FontLoader","TextGeometry","Font","font","text","options","Promise","res","loader","load","geometry","size","height","mesh","depthTest","color","position","copy","createFontMesh","createText"],"sources":["../../../src/factory/utils/fontMesh.ts"],"sourcesContent":["import type { Vector3 } from '@anov/3d-core'\nimport { Color, Mesh, MeshBasicMaterial, lib } from '@anov/3d-core'\n\nconst { FontLoader, TextGeometry } = lib\n\ntype FontMeshOption = {\n position: Vector3\n color?: Color\n size?: number\n rotate?: number\n}\n\nclass Font {\n font: lib.Font | null\n\n constructor() {\n this.font = null\n }\n\n createText(text: string, options: FontMeshOption) {\n return new Promise((res) => {\n const loader = new FontLoader()\n loader.load('./font.json', (font) => {\n this.font = font\n\n const geometry = new TextGeometry(text, {\n font: this.font,\n size: options.size ?? 10,\n height: 1,\n })\n\n const mesh = new Mesh(geometry, new MeshBasicMaterial({\n depthTest: true,\n color: new Color('#fff'),\n }))\n\n mesh.position.copy(options.position)\n res(mesh)\n })\n })\n }\n}\n\nconst font = new Font()\n\nconst createFontMesh = (text: string, options: FontMeshOption) => {\n return font.createText(text, options) as Promise<Mesh>\n}\n\nexport default createFontMesh\n"],"mappings":";;;;;;;AACA,SAASA,KAAK,EAAEC,IAAI,EAAEC,iBAAiB,EAAEC,GAAG,QAAQ,eAAe;AAEnE,IAAQC,UAAU,GAAmBD,GAAG,CAAhCC,UAAU;EAAEC,YAAY,GAAKF,GAAG,CAApBE,YAAY;AAAQ,IASlCC,IAAI;EAGR,gBAAc;IAAA;IAAA;IACZ,IAAI,CAACC,IAAI,GAAG,IAAI;EAClB;EAAC;IAAA;IAAA,OAED,oBAAWC,IAAY,EAAEC,OAAuB,EAAE;MAAA;MAChD,OAAO,IAAIC,OAAO,CAAC,UAACC,GAAG,EAAK;QAC1B,IAAMC,MAAM,GAAG,IAAIR,UAAU,EAAE;QAC/BQ,MAAM,CAACC,IAAI,CAAC,aAAa,EAAE,UAACN,IAAI,EAAK;UAAA;UACnC,KAAI,CAACA,IAAI,GAAGA,IAAI;UAEhB,IAAMO,QAAQ,GAAG,IAAIT,YAAY,CAACG,IAAI,EAAE;YACtCD,IAAI,EAAE,KAAI,CAACA,IAAI;YACfQ,IAAI,mBAAEN,OAAO,CAACM,IAAI,yDAAI,EAAE;YACxBC,MAAM,EAAE;UACV,CAAC,CAAC;UAEF,IAAMC,IAAI,GAAG,IAAIhB,IAAI,CAACa,QAAQ,EAAE,IAAIZ,iBAAiB,CAAC;YACpDgB,SAAS,EAAE,IAAI;YACfC,KAAK,EAAE,IAAInB,KAAK,CAAC,MAAM;UACzB,CAAC,CAAC,CAAC;UAEHiB,IAAI,CAACG,QAAQ,CAACC,IAAI,CAACZ,OAAO,CAACW,QAAQ,CAAC;UACpCT,GAAG,CAACM,IAAI,CAAC;QACX,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA;AAGH,IAAMV,IAAI,GAAG,IAAID,IAAI,EAAE;AAEvB,IAAMgB,cAAc,GAAG,SAAjBA,cAAc,CAAId,IAAY,EAAEC,OAAuB,EAAK;EAChE,OAAOF,IAAI,CAACgB,UAAU,CAACf,IAAI,EAAEC,OAAO,CAAC;AACvC,CAAC;AAED,eAAea,cAAc"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Vector3 } from '@anov/3d-core';
|
|
2
|
+
export var debounce = function debounce(fn) {
|
|
3
|
+
var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 20;
|
|
4
|
+
var timer;
|
|
5
|
+
return function () {
|
|
6
|
+
var _this = this;
|
|
7
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
8
|
+
args[_key] = arguments[_key];
|
|
9
|
+
}
|
|
10
|
+
clearTimeout(timer);
|
|
11
|
+
timer = setTimeout(function () {
|
|
12
|
+
fn.apply(_this, args);
|
|
13
|
+
}, delay);
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export var lookAtOnYAxis = function lookAtOnYAxis(mesh, targetPosition) {
|
|
17
|
+
var direction = new Vector3().subVectors(targetPosition, mesh.position);
|
|
18
|
+
direction.y = 0;
|
|
19
|
+
direction.normalize();
|
|
20
|
+
var rotationY = Math.atan2(-direction.z, direction.x);
|
|
21
|
+
rotationY -= Math.PI / 2;
|
|
22
|
+
mesh.rotation.y = rotationY + Math.PI;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Vector3","debounce","fn","delay","timer","args","clearTimeout","setTimeout","apply","lookAtOnYAxis","mesh","targetPosition","direction","subVectors","position","y","normalize","rotationY","Math","atan2","z","x","PI","rotation"],"sources":["../../../src/factory/utils/index.ts"],"sourcesContent":["import { Vector3 } from '@anov/3d-core'\n\nexport const debounce = (fn: Function, delay = 20) => {\n let timer: number\n\n return function (this: any, ...args: any[]) {\n clearTimeout(timer)\n\n timer = setTimeout(() => {\n fn.apply(this, args)\n }, delay) as unknown as number\n }\n}\n\nexport const lookAtOnYAxis = (mesh, targetPosition) => {\n const direction = new Vector3().subVectors(targetPosition, mesh.position)\n direction.y = 0\n direction.normalize()\n\n let rotationY = Math.atan2(-direction.z, direction.x)\n\n rotationY -= Math.PI / 2\n\n mesh.rotation.y = rotationY + Math.PI\n}"],"mappings":"AAAA,SAASA,OAAO,QAAQ,eAAe;AAEvC,OAAO,IAAMC,QAAQ,GAAG,SAAXA,QAAQ,CAAIC,EAAY,EAAiB;EAAA,IAAfC,KAAK,uEAAG,EAAE;EAC/C,IAAIC,KAAa;EAEjB,OAAO,YAAqC;IAAA;IAAA,kCAAbC,IAAI;MAAJA,IAAI;IAAA;IACjCC,YAAY,CAACF,KAAK,CAAC;IAEnBA,KAAK,GAAGG,UAAU,CAAC,YAAM;MACvBL,EAAE,CAACM,KAAK,CAAC,KAAI,EAAEH,IAAI,CAAC;IACtB,CAAC,EAAEF,KAAK,CAAsB;EAChC,CAAC;AACH,CAAC;AAED,OAAO,IAAMM,aAAa,GAAG,SAAhBA,aAAa,CAAIC,IAAI,EAAEC,cAAc,EAAK;EACrD,IAAMC,SAAS,GAAG,IAAIZ,OAAO,EAAE,CAACa,UAAU,CAACF,cAAc,EAAED,IAAI,CAACI,QAAQ,CAAC;EACzEF,SAAS,CAACG,CAAC,GAAG,CAAC;EACfH,SAAS,CAACI,SAAS,EAAE;EAErB,IAAIC,SAAS,GAAGC,IAAI,CAACC,KAAK,CAAC,CAACP,SAAS,CAACQ,CAAC,EAAER,SAAS,CAACS,CAAC,CAAC;EAErDJ,SAAS,IAAIC,IAAI,CAACI,EAAE,GAAG,CAAC;EAExBZ,IAAI,CAACa,QAAQ,CAACR,CAAC,GAAGE,SAAS,GAAGC,IAAI,CAACI,EAAE;AACvC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Material, Object3D } from '@anov/3d-core';
|
|
2
|
+
declare type SwitchMaterialOptions = {
|
|
3
|
+
speed?: number;
|
|
4
|
+
start?: number;
|
|
5
|
+
end?: number;
|
|
6
|
+
callback?: () => void;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* todo 代码合并
|
|
10
|
+
* @param mesh
|
|
11
|
+
* @param material
|
|
12
|
+
* @param options
|
|
13
|
+
*/
|
|
14
|
+
declare const switchMaterialV2: (mesh: Object3D<import("@anov/3d-core").Event> & {
|
|
15
|
+
material: Material;
|
|
16
|
+
}, material: Material, options?: SwitchMaterialOptions) => void;
|
|
17
|
+
export default switchMaterialV2;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Vector3, use } from '@anov/3d-core';
|
|
2
|
+
var switchMaterial = function switchMaterial(mesh, material, options) {
|
|
3
|
+
var lastMaterial = mesh.material.clone();
|
|
4
|
+
var currentMaterial = mesh.material.clone();
|
|
5
|
+
var _ref = options || {},
|
|
6
|
+
_ref$speed = _ref.speed,
|
|
7
|
+
speed = _ref$speed === void 0 ? 10 : _ref$speed,
|
|
8
|
+
_ref$start = _ref.start,
|
|
9
|
+
start = _ref$start === void 0 ? 0 : _ref$start,
|
|
10
|
+
_ref$end = _ref.end,
|
|
11
|
+
end = _ref$end === void 0 ? 100 : _ref$end;
|
|
12
|
+
currentMaterial.transparent = true;
|
|
13
|
+
var oldShader;
|
|
14
|
+
currentMaterial.onBeforeCompile = function (shader) {
|
|
15
|
+
oldShader = shader;
|
|
16
|
+
shader.uniforms.time = {
|
|
17
|
+
value: 0.0
|
|
18
|
+
};
|
|
19
|
+
shader.uniforms.min_length = {
|
|
20
|
+
value: start
|
|
21
|
+
};
|
|
22
|
+
shader.uniforms.speed = {
|
|
23
|
+
value: 1.0
|
|
24
|
+
};
|
|
25
|
+
shader.vertexShader = shader.vertexShader.replace('void main() {', ['varying vec4 v_position;', 'varying vec3 vWorldPosition; ', 'void main() {', ' vec4 worldPosition1 = modelMatrix * vec4(position, 1.0);', ' vWorldPosition = worldPosition1.xyz;', ' v_position = vec4(position, 1.0); '].join('\n'));
|
|
26
|
+
shader.fragmentShader = shader.fragmentShader.replace('void main() {', "\n varying vec4 v_position;\n uniform float time;\n uniform float min_length;\n uniform float speed;\n varying vec3 vWorldPosition;\n void main() {\n ");
|
|
27
|
+
shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>', "\n #include <dithering_fragment>\n float median = min_length + time * speed;\n if(vWorldPosition.x < median) {\n gl_FragColor.a = 0.0;\n }\n ");
|
|
28
|
+
};
|
|
29
|
+
mesh.material = currentMaterial;
|
|
30
|
+
var cancellation = use.useframe(function () {
|
|
31
|
+
if (oldShader) {
|
|
32
|
+
oldShader.uniforms.time.value += speed;
|
|
33
|
+
var worldPosition = new Vector3();
|
|
34
|
+
mesh.getWorldPosition(worldPosition);
|
|
35
|
+
if (worldPosition.x < start + oldShader.uniforms.time.value) currentMaterial.depthWrite = false;
|
|
36
|
+
if (oldShader.uniforms.time.value > end) {
|
|
37
|
+
(options === null || options === void 0 ? void 0 : options.callback) && options.callback();
|
|
38
|
+
setTimeout(function () {
|
|
39
|
+
mesh.material = lastMaterial;
|
|
40
|
+
oldShader.uniforms.time.value = 0;
|
|
41
|
+
}, 100);
|
|
42
|
+
cancellation();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* todo 代码合并
|
|
50
|
+
* @param mesh
|
|
51
|
+
* @param material
|
|
52
|
+
* @param options
|
|
53
|
+
*/
|
|
54
|
+
var switchMaterialV2 = function switchMaterialV2(mesh, material, options) {
|
|
55
|
+
var lastMaterial = mesh.material.clone();
|
|
56
|
+
var currentMaterial = mesh.material.clone();
|
|
57
|
+
var _ref2 = options || {},
|
|
58
|
+
_ref2$speed = _ref2.speed,
|
|
59
|
+
speed = _ref2$speed === void 0 ? 10 : _ref2$speed,
|
|
60
|
+
_ref2$start = _ref2.start,
|
|
61
|
+
start = _ref2$start === void 0 ? 0 : _ref2$start,
|
|
62
|
+
_ref2$end = _ref2.end,
|
|
63
|
+
end = _ref2$end === void 0 ? 100 : _ref2$end;
|
|
64
|
+
currentMaterial.transparent = true;
|
|
65
|
+
var oldShader;
|
|
66
|
+
currentMaterial.onBeforeCompile = function (shader) {
|
|
67
|
+
oldShader = shader;
|
|
68
|
+
shader.uniforms.time = {
|
|
69
|
+
value: 0.0
|
|
70
|
+
};
|
|
71
|
+
shader.uniforms.min_length = {
|
|
72
|
+
value: 0
|
|
73
|
+
};
|
|
74
|
+
shader.uniforms.speed = {
|
|
75
|
+
value: 1.0
|
|
76
|
+
};
|
|
77
|
+
shader.uniforms.center = {
|
|
78
|
+
value: {
|
|
79
|
+
x: 0,
|
|
80
|
+
y: 0,
|
|
81
|
+
z: 0
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
shader.vertexShader = shader.vertexShader.replace('void main() {', ['varying vec4 v_position;', 'varying vec3 vWorldPosition; ', 'void main() {', ' vec4 worldPosition1 = modelMatrix * vec4(position, 1.0);', ' vWorldPosition = worldPosition1.xyz;', ' v_position = vec4(position, 1.0); '].join('\n'));
|
|
85
|
+
shader.fragmentShader = shader.fragmentShader.replace('void main() {', "\n varying vec4 v_position;\n uniform float time;\n uniform float center;\n uniform float min_length;\n uniform float speed;\n varying vec3 vWorldPosition;\n void main() {\n ");
|
|
86
|
+
shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>', "\n #include <dithering_fragment>\n float median = min_length + time * speed;\n\n if(distance(vec3(vWorldPosition.x,0,vWorldPosition.z), vec3(0,0,0)) < median) {\n gl_FragColor.a = 0.0;\n }\n ");
|
|
87
|
+
};
|
|
88
|
+
mesh.material = currentMaterial;
|
|
89
|
+
var cancellation = use.useframe(function () {
|
|
90
|
+
if (oldShader) {
|
|
91
|
+
oldShader.uniforms.time.value += speed;
|
|
92
|
+
var worldPosition = new Vector3();
|
|
93
|
+
mesh.getWorldPosition(worldPosition);
|
|
94
|
+
worldPosition.distanceTo(new Vector3(0, 0, 0));
|
|
95
|
+
if (worldPosition.distanceTo(new Vector3(0, 0, 0)) < oldShader.uniforms.time.value) currentMaterial.depthWrite = false;
|
|
96
|
+
if (oldShader.uniforms.time.value > end) {
|
|
97
|
+
(options === null || options === void 0 ? void 0 : options.callback) && options.callback();
|
|
98
|
+
setTimeout(function () {
|
|
99
|
+
mesh.material = lastMaterial;
|
|
100
|
+
oldShader.uniforms.time.value = 0;
|
|
101
|
+
}, 100);
|
|
102
|
+
cancellation();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
export default switchMaterialV2;
|
|
108
|
+
//# sourceMappingURL=switchMaterial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Vector3","use","switchMaterial","mesh","material","options","lastMaterial","clone","currentMaterial","speed","start","end","transparent","oldShader","onBeforeCompile","shader","uniforms","time","value","min_length","vertexShader","replace","join","fragmentShader","cancellation","useframe","worldPosition","getWorldPosition","x","depthWrite","callback","setTimeout","switchMaterialV2","center","y","z","distanceTo"],"sources":["../../../src/factory/utils/switchMaterial.ts"],"sourcesContent":["import type { Material, Object3D, Shader } from '@anov/3d-core'\nimport { Vector3, use } from '@anov/3d-core'\n\ntype SwitchMaterialOptions = {\n speed?: number\n start?: number\n end?: number\n callback?: () => void\n}\n\nconst switchMaterial = (mesh: Object3D & { material: Material }, material: Material, options?: SwitchMaterialOptions) => {\n const lastMaterial = mesh.material.clone()\n const currentMaterial = mesh.material.clone()\n\n const { speed = 10, start = 0, end = 100 } = options || {}\n\n currentMaterial.transparent = true\n\n let oldShader: Shader\n\n currentMaterial.onBeforeCompile = (shader) => {\n oldShader = shader\n shader.uniforms.time = { value: 0.0 }\n shader.uniforms.min_length = { value: start }\n shader.uniforms.speed = { value: 1.0 }\n shader.vertexShader = shader.vertexShader.replace(\n 'void main() {',\n [\n 'varying vec4 v_position;',\n 'varying vec3 vWorldPosition; ',\n 'void main() {',\n ' vec4 worldPosition1 = modelMatrix * vec4(position, 1.0);',\n ' vWorldPosition = worldPosition1.xyz;',\n ' v_position = vec4(position, 1.0); ',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace('void main() {',\n `\n varying vec4 v_position;\n uniform float time;\n uniform float min_length;\n uniform float speed;\n varying vec3 vWorldPosition;\n void main() {\n `)\n\n shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>',\n `\n #include <dithering_fragment>\n float median = min_length + time * speed;\n if(vWorldPosition.x < median) {\n gl_FragColor.a = 0.0;\n }\n `)\n }\n\n mesh.material = currentMaterial\n\n const cancellation = use.useframe(() => {\n if (oldShader) {\n oldShader.uniforms.time.value += speed\n\n const worldPosition = new Vector3()\n\n mesh.getWorldPosition(worldPosition)\n\n if (worldPosition.x < start + oldShader.uniforms.time.value)\n currentMaterial.depthWrite = false\n\n if (oldShader.uniforms.time.value > end) {\n options?.callback && options.callback()\n\n setTimeout(() => {\n mesh.material = lastMaterial\n oldShader.uniforms.time.value = 0\n }, 100)\n\n cancellation()\n }\n }\n })\n}\n\n/**\n * todo 代码合并\n * @param mesh\n * @param material\n * @param options\n */\nconst switchMaterialV2 = (mesh: Object3D & { material: Material }, material: Material, options?: SwitchMaterialOptions) => {\n const lastMaterial = mesh.material.clone()\n const currentMaterial = mesh.material.clone()\n\n const { speed = 10, start = 0, end = 100 } = options || {}\n\n currentMaterial.transparent = true\n\n let oldShader: Shader\n\n currentMaterial.onBeforeCompile = (shader) => {\n oldShader = shader\n shader.uniforms.time = { value: 0.0 }\n shader.uniforms.min_length = { value: 0 }\n shader.uniforms.speed = { value: 1.0 }\n shader.uniforms.center = { value: { x: 0, y: 0, z: 0 } }\n shader.vertexShader = shader.vertexShader.replace(\n 'void main() {',\n [\n 'varying vec4 v_position;',\n 'varying vec3 vWorldPosition; ',\n 'void main() {',\n ' vec4 worldPosition1 = modelMatrix * vec4(position, 1.0);',\n ' vWorldPosition = worldPosition1.xyz;',\n ' v_position = vec4(position, 1.0); ',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace('void main() {',\n `\n varying vec4 v_position;\n uniform float time;\n uniform float center;\n uniform float min_length;\n uniform float speed;\n varying vec3 vWorldPosition;\n void main() {\n `)\n\n shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>',\n `\n #include <dithering_fragment>\n float median = min_length + time * speed;\n\n if(distance(vec3(vWorldPosition.x,0,vWorldPosition.z), vec3(0,0,0)) < median) {\n gl_FragColor.a = 0.0;\n }\n `)\n }\n\n mesh.material = currentMaterial\n\n const cancellation = use.useframe(() => {\n if (oldShader) {\n oldShader.uniforms.time.value += speed\n\n const worldPosition = new Vector3()\n\n mesh.getWorldPosition(worldPosition)\n\n worldPosition.distanceTo(new Vector3(0, 0, 0))\n\n if (worldPosition.distanceTo(new Vector3(0, 0, 0)) < oldShader.uniforms.time.value)\n currentMaterial.depthWrite = false\n\n if (oldShader.uniforms.time.value > end) {\n options?.callback && options.callback()\n\n setTimeout(() => {\n mesh.material = lastMaterial\n oldShader.uniforms.time.value = 0\n }, 100)\n\n cancellation()\n }\n }\n })\n}\n\nexport default switchMaterialV2"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Vector3 } from '@anov/3d-core';
|
|
1
2
|
declare type EnvironmentOptions = {
|
|
2
3
|
weather?: string;
|
|
3
4
|
time?: number;
|
|
@@ -10,7 +11,9 @@ declare class Environment {
|
|
|
10
11
|
private cloudReturn;
|
|
11
12
|
private sky;
|
|
12
13
|
private renderer;
|
|
13
|
-
|
|
14
|
+
private changeSceneEnvironment;
|
|
15
|
+
sunPosition: Vector3;
|
|
16
|
+
constructor(changeSceneEnvironment: (openFlag?: boolean) => void, opts?: EnvironmentOptions);
|
|
14
17
|
private initConfigSet;
|
|
15
18
|
private setWeatherStrategy;
|
|
16
19
|
/**
|
|
@@ -15,7 +15,7 @@ import { use } from '@anov/3d-core';
|
|
|
15
15
|
import { createRain, createSkyCloud, createSnow } from '@anov/3d-ability';
|
|
16
16
|
import createTimeSkySystem from "./time";
|
|
17
17
|
var Environment = /*#__PURE__*/function () {
|
|
18
|
-
function Environment(opts) {
|
|
18
|
+
function Environment(changeSceneEnvironment, opts) {
|
|
19
19
|
var _this = this;
|
|
20
20
|
_classCallCheck(this, Environment);
|
|
21
21
|
_defineProperty(this, "opts", void 0);
|
|
@@ -25,6 +25,8 @@ var Environment = /*#__PURE__*/function () {
|
|
|
25
25
|
_defineProperty(this, "cloudReturn", null);
|
|
26
26
|
_defineProperty(this, "sky", void 0);
|
|
27
27
|
_defineProperty(this, "renderer", void 0);
|
|
28
|
+
_defineProperty(this, "changeSceneEnvironment", void 0);
|
|
29
|
+
_defineProperty(this, "sunPosition", void 0);
|
|
28
30
|
_defineProperty(this, "setWeatherStrategy", {
|
|
29
31
|
Snow: function Snow() {
|
|
30
32
|
!_this.snow && (_this.snow = createSnow(15, 10000, {
|
|
@@ -61,12 +63,14 @@ var Environment = /*#__PURE__*/function () {
|
|
|
61
63
|
}
|
|
62
64
|
}
|
|
63
65
|
});
|
|
64
|
-
|
|
66
|
+
this.changeSceneEnvironment = changeSceneEnvironment;
|
|
67
|
+
var _createTimeSkySystem = createTimeSkySystem(new Date(), 40, 116, 100),
|
|
65
68
|
_createTimeSkySystem2 = _slicedToArray(_createTimeSkySystem, 3),
|
|
66
69
|
setDate = _createTimeSkySystem2[0],
|
|
67
70
|
sun = _createTimeSkySystem2[1],
|
|
68
71
|
sky = _createTimeSkySystem2[2];
|
|
69
72
|
this.renderer = use.useScene().renderer;
|
|
73
|
+
this.sunPosition = sun.position;
|
|
70
74
|
this.setDate = setDate;
|
|
71
75
|
this.sky = sky;
|
|
72
76
|
this.opts = opts;
|
|
@@ -101,6 +105,7 @@ var Environment = /*#__PURE__*/function () {
|
|
|
101
105
|
date.setHours(0, 0, 0, 0);
|
|
102
106
|
date.setTime(date.getTime() + Math.floor(86400000 * params.time / 2400));
|
|
103
107
|
this.setDate(date);
|
|
108
|
+
if (this.sunPosition.y <= 0) this.changeSceneEnvironment(false);else this.changeSceneEnvironment(true);
|
|
104
109
|
return {
|
|
105
110
|
newTime: params.time
|
|
106
111
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["use","createRain","createSkyCloud","createSnow","createTimeSkySystem","Environment","opts","Snow","snow","x","y","z","renderer","toneMappingExposure","Rain","rain","Cloudy","cloudReturn","Clear_Skies","_","clear","Date","setDate","sun","sky","useScene","initConfigSet","weather","time","setWeather","weatherType","duration","setTime","params","undefined","Error","date","setHours","getTime","Math","floor","newTime","setWeatherStrategy"],"sources":["../../../src/module/environment/index.ts"],"sourcesContent":["import type { Vector3, WebGLRenderer, lib } from '@anov/3d-core'\nimport { use } from '@anov/3d-core'\nimport
|
|
1
|
+
{"version":3,"names":["use","createRain","createSkyCloud","createSnow","createTimeSkySystem","Environment","changeSceneEnvironment","opts","Snow","snow","x","y","z","renderer","toneMappingExposure","Rain","rain","Cloudy","cloudReturn","Clear_Skies","_","clear","Date","setDate","sun","sky","useScene","sunPosition","position","initConfigSet","weather","time","setWeather","weatherType","duration","setTime","params","undefined","Error","date","setHours","getTime","Math","floor","newTime","setWeatherStrategy"],"sources":["../../../src/module/environment/index.ts"],"sourcesContent":["import type { Vector3, WebGLRenderer, lib } from '@anov/3d-core'\nimport { use } from '@anov/3d-core'\nimport { createRain, createSkyCloud, createSnow } from '@anov/3d-ability'\nimport createTimeSkySystem from './time'\n\ntype EnvironmentOptions = {\n weather?: string\n time?: number\n}\n\nclass Environment {\n private opts?: EnvironmentOptions\n private setDate: (currentDate?: Date | undefined) => Vector3\n private snow: any = null\n private rain: any = null\n private cloudReturn: ReturnType<typeof createSkyCloud> | null = null\n private sky: lib.Sky\n private renderer: WebGLRenderer\n private changeSceneEnvironment: (openFlag?: boolean) => void\n sunPosition: Vector3\n\n constructor(changeSceneEnvironment: (openFlag?: boolean) => void, opts?: EnvironmentOptions) {\n this.changeSceneEnvironment = changeSceneEnvironment\n const [setDate, sun, sky] = createTimeSkySystem(new Date(), 40, 116, 100)\n this.renderer = use.useScene().renderer!\n this.sunPosition = sun.position\n this.setDate = setDate as any\n this.sky = sky\n\n this.opts = opts\n this.initConfigSet()\n }\n\n private initConfigSet() {\n const { weather, time } = this.opts as Required<EnvironmentOptions>\n\n this.setWeather({ weatherType: weather ?? 'Snow', duration: 0 })\n this.setTime({ time: time ?? 1700, duration: 0 })\n }\n\n private setWeatherStrategy = {\n Snow: () => {\n !this.snow && (this.snow = createSnow(15, 10000, { x: 0, y: 3, z: 0 }, 0.5, 50000))\n this.snow[0]()\n this.renderer.toneMappingExposure = 0.3\n },\n Rain: () => {\n !this.rain && (this.rain = createRain(4, 10000, { x: 0, y: 10, z: 0 }, 0.8, 100000))\n this.rain[0]()\n this.renderer.toneMappingExposure = 0.3\n },\n Cloudy: () => {\n !this.cloudReturn && (this.cloudReturn = createSkyCloud())\n },\n Clear_Skies: () => {\n this.snow?.[1]()\n this.rain?.[1]()\n this.renderer.toneMappingExposure = 0.6\n\n if (this.cloudReturn) {\n const [_, clear] = this.cloudReturn\n clear()\n this.cloudReturn = null\n }\n },\n }\n\n /**\n * setTime\n * @param newTime\n * @param changeTime\n */\n setTime(params: { time: number; duration?: number }) {\n if (params.time === undefined || (params.time > 2400 && params.time < 0))\n throw new Error('time must be between 0 and 2400')\n\n const date = new Date()\n date.setHours(0, 0, 0, 0)\n date.setTime(date.getTime() + Math.floor(86400000 * params.time / 2400))\n this.setDate(date)\n\n if (this.sunPosition.y <= 0)\n this.changeSceneEnvironment(false)\n\n else\n this.changeSceneEnvironment(true)\n\n return {\n newTime: params.time,\n }\n }\n\n /**\n * setWeather\n * @param type\n * @param changeTime\n */\n setWeather(params: { weatherType: string; duration?: number }) {\n // @ts-ignore\n this.setWeatherStrategy[params.weatherType]()\n\n return {\n weatherType: params.weatherType,\n }\n }\n}\n\nexport default Environment"],"mappings":"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"}
|
|
@@ -6,5 +6,7 @@
|
|
|
6
6
|
* @param sunRadius
|
|
7
7
|
* @returns
|
|
8
8
|
*/
|
|
9
|
-
declare const createTimeSkySystem: (date: Date, latitude?: number, longitude?: number, sunRadius?: number) =>
|
|
9
|
+
declare const createTimeSkySystem: (date: Date, latitude?: number, longitude?: number, sunRadius?: number) => [(currentDate?: Date | undefined) => import("@anov/3d-core").Vector3, import("@anov/3d-core/dist/core/group").default & {
|
|
10
|
+
sunPosition: import("@anov/3d-core").Vector3;
|
|
11
|
+
}, any];
|
|
10
12
|
export default createTimeSkySystem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSkySystem","createTimeSkySystem","date","latitude","longitude","sunRadius","setDate","sun","sky"],"sources":["../../../../src/module/environment/time/index.ts"],"sourcesContent":["import { createSkySystem } from '@anov/3d-ability'\n\n/**\n * create time sky system\n * @param date\n * @param latitude\n * @param longitude\n * @param sunRadius\n * @returns\n */\nconst createTimeSkySystem = (date: Date, latitude = 40, longitude = 116, sunRadius = 100) => {\n const [setDate, sun, sky] = createSkySystem(date, latitude, longitude, sunRadius)\n\n return [setDate, sun, sky]\n}\n\nexport default createTimeSkySystem"],"mappings":";;;;;;AAAA,SAASA,eAAe,QAAQ,kBAAkB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmB,CAAIC,IAAU,EAAsD;EAAA,IAApDC,QAAQ,uEAAG,EAAE;EAAA,IAAEC,SAAS,uEAAG,GAAG;EAAA,IAAEC,SAAS,uEAAG,GAAG;EACtF,uBAA4BL,eAAe,CAACE,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,SAAS,CAAC;IAAA;IAA1EC,OAAO;IAAEC,GAAG;IAAEC,GAAG;EAExB,OAAO,CAACF,OAAO,EAAEC,GAAG,EAAEC,GAAG,CAAC;AAC5B,CAAC;AAED,eAAeP,mBAAmB"}
|
|
1
|
+
{"version":3,"names":["createSkySystem","createTimeSkySystem","date","latitude","longitude","sunRadius","setDate","sun","sky"],"sources":["../../../../src/module/environment/time/index.ts"],"sourcesContent":["import { createSkySystem } from '@anov/3d-ability'\n\n/**\n * create time sky system\n * @param date\n * @param latitude\n * @param longitude\n * @param sunRadius\n * @returns\n */\nconst createTimeSkySystem = (date: Date, latitude = 40, longitude = 116, sunRadius = 100) => {\n const [setDate, sun, sky] = createSkySystem(date, latitude, longitude, sunRadius)\n\n return [setDate, sun, sky] as [typeof setDate, typeof sun, typeof sky]\n}\n\nexport default createTimeSkySystem"],"mappings":";;;;;;AAAA,SAASA,eAAe,QAAQ,kBAAkB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmB,CAAIC,IAAU,EAAsD;EAAA,IAApDC,QAAQ,uEAAG,EAAE;EAAA,IAAEC,SAAS,uEAAG,GAAG;EAAA,IAAEC,SAAS,uEAAG,GAAG;EACtF,uBAA4BL,eAAe,CAACE,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,SAAS,CAAC;IAAA;IAA1EC,OAAO;IAAEC,GAAG;IAAEC,GAAG;EAExB,OAAO,CAACF,OAAO,EAAEC,GAAG,EAAEC,GAAG,CAAC;AAC5B,CAAC;AAED,eAAeP,mBAAmB"}
|
|
@@ -66,6 +66,12 @@ var Model = /*#__PURE__*/function () {
|
|
|
66
66
|
if (fileFormat === 'glb' || fileFormat === 'gltf') {
|
|
67
67
|
modelLoader.loadGLTF(lastSource, false, true, './draco/', function (model) {
|
|
68
68
|
model.scene.position.set(position.x, position.y, position.z);
|
|
69
|
+
model.scene.traverse(function (child) {
|
|
70
|
+
if (child.type === 'Mesh') {
|
|
71
|
+
child.castShadow = true;
|
|
72
|
+
child.receiveShadow = true;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
69
75
|
_this.scene.add(model.scene);
|
|
70
76
|
return model;
|
|
71
77
|
}, onProgress, onError);
|