@anov/3d 0.0.308 → 0.0.310

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/anov3d.js CHANGED
@@ -1,11 +1,5 @@
1
1
  var _excluded = ["position"];
2
2
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
4
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
5
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
7
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
8
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
9
3
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
4
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
5
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
@@ -17,6 +11,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
17
11
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
18
12
  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); }
19
13
  import { MathUtils, SceneControl, Vector3, utils } from '@anov/3d-core';
14
+ import { initPostEffects } from '@anov/3d-ability';
20
15
  import EventBus from "./module/eventBus";
21
16
  import { object2Vector3 } from "./utils/index";
22
17
  import { defaultCameraParams } from "./index";
@@ -72,68 +67,8 @@ var Anov3D = /*#__PURE__*/function () {
72
67
  scene.render(opts.container);
73
68
  // scene.controls.target.copy(object2Vector3(defaultCameraParams.lookAt))
74
69
  scene.controls.target.copy(new Vector3().fromArray(cameraParams.target || [0, 0, 0]));
75
- setInterval(function () {
76
- var info = scene.renderer.info;
77
- console.table({
78
- 几何体数量: info.memory.geometries,
79
- 纹理数量: info.memory.textures,
80
- 渲染调用: info.render.calls,
81
- 三角面数: info.render.triangles
82
- });
83
-
84
- // 运行这段,找出纹理重复和大小分布
85
- var textureInfo = [];
86
- var textureMap = new Map(); // url → texture 引用次数
87
-
88
- scene.scene.traverse(function (obj) {
89
- if (!obj.isMesh) return;
90
- var mats = Array.isArray(obj.material) ? obj.material : [obj.material];
91
- mats.forEach(function (mat) {
92
- var slots = ['map', 'normalMap', 'roughnessMap', 'metalnessMap', 'aoMap', 'emissiveMap', 'alphaMap', 'lightMap'];
93
- slots.forEach(function (slot) {
94
- var tex = mat[slot];
95
- if (!tex) return;
96
- var uuid = tex.uuid;
97
- if (!textureMap.has(uuid)) {
98
- var _tex$image, _tex$image2, _tex$image3, _tex$image4;
99
- textureMap.set(uuid, {
100
- slot: slot,
101
- name: tex.name || '未命名',
102
- width: ((_tex$image = tex.image) === null || _tex$image === void 0 ? void 0 : _tex$image.width) || 0,
103
- height: ((_tex$image2 = tex.image) === null || _tex$image2 === void 0 ? void 0 : _tex$image2.height) || 0,
104
- count: 0,
105
- // 估算内存占用 MB(RGBA × w × h)
106
- memMB: ((((_tex$image3 = tex.image) === null || _tex$image3 === void 0 ? void 0 : _tex$image3.width) || 0) * (((_tex$image4 = tex.image) === null || _tex$image4 === void 0 ? void 0 : _tex$image4.height) || 0) * 4 / 1024 / 1024).toFixed(1)
107
- });
108
- }
109
- textureMap.get(uuid).count++;
110
- });
111
- });
112
- });
113
-
114
- // 按内存占用排序
115
- var sorted = _toConsumableArray(textureMap.values()).sort(function (a, b) {
116
- return b.memMB - a.memMB;
117
- });
118
- console.log('纹理总数:', textureMap.size);
119
- console.log('Top 20 最大纹理:');
120
- console.table(sorted.slice(0, 20));
121
-
122
- // 统计重复引用
123
- var duplicates = sorted.filter(function (t) {
124
- return t.count > 1;
125
- });
126
- console.log('被多次引用的纹理:', duplicates.length);
127
-
128
- // 估算总显存
129
- var totalMem = sorted.reduce(function (sum, t) {
130
- return sum + parseFloat(t.memMB);
131
- }, 0);
132
- console.log("\u4F30\u7B97\u7EB9\u7406\u663E\u5B58: ".concat((totalMem / 1024).toFixed(2), " GB"));
133
- }, 15000);
134
-
135
- // initPostEffects(scene.scene, scene.renderer, scene.camera)
136
-
70
+ this.logInfo(scene);
71
+ initPostEffects(scene.scene, scene.renderer, scene.camera);
137
72
  utils.emitter.emit('scene-completed', scene);
138
73
 
139
74
  // 不考虑 tree-shaking
@@ -143,6 +78,40 @@ var Anov3D = /*#__PURE__*/function () {
143
78
  utils.emitter.emit('instantiation-completed', this);
144
79
  }
145
80
  _createClass(Anov3D, [{
81
+ key: "logInfo",
82
+ value: function logInfo(scene) {
83
+ var TEX_SLOTS = ['map', 'normalMap', 'roughnessMap', 'metalnessMap', 'aoMap', 'emissiveMap', 'alphaMap', 'lightMap'];
84
+ setInterval(function () {
85
+ var renderer = scene.renderer;
86
+ var uuids = new Set();
87
+ var totalMB = 0;
88
+ scene.scene.traverse(function (obj) {
89
+ if (!obj.isMesh) return;
90
+ var mesh = obj;
91
+ var mats = Array.isArray(mesh.material) ? mesh.material : [mesh.material];
92
+ mats.forEach(function (mat) {
93
+ TEX_SLOTS.forEach(function (slot) {
94
+ var tex = mat[slot];
95
+ if (!tex) return;
96
+ if (!uuids.has(tex.uuid)) {
97
+ uuids.add(tex.uuid);
98
+ var img = tex.image;
99
+ if (img) totalMB += img.width * img.height * 4 / 1024 / 1024;
100
+ }
101
+ });
102
+ });
103
+ });
104
+ console.table({
105
+ '场景纹理数': uuids.size,
106
+ '渲染器纹理数': renderer.info.memory.textures,
107
+ '几何体数量': renderer.info.memory.geometries,
108
+ '渲染调用次数': renderer.info.render.calls,
109
+ '三角面数': renderer.info.render.triangles,
110
+ '估算显存(MB)': totalMB.toFixed(0)
111
+ });
112
+ }, 15000);
113
+ }
114
+ }, {
146
115
  key: "getOrbitControls",
147
116
  value: function getOrbitControls(params) {
148
117
  var pitch = params.pitch,
@@ -1 +1 @@
1
- {"version":3,"names":["MathUtils","SceneControl","Vector3","utils","EventBus","object2Vector3","defaultCameraParams","Anov3D","opts","_camera$limit","_classCallCheck","_defineProperty","_opts$camera","camera","_opts$container","container","clientWidth","clientHeight","defaultPosition","position","defaultRest","_objectWithoutProperties","_excluded","limit","pitch","min","max","Math","cameraParams","_objectSpread","fromArray","orbitControls","scene","defCameraOps","aspect","rendererOps","shadowMap","reset","css2DRenderer","css3DRenderer","ambientLight","render","controls","target","copy","setInterval","info","renderer","console","table","几何体数量","memory","geometries","纹理数量","textures","渲染调用","calls","三角面数","triangles","textureInfo","textureMap","Map","traverse","obj","isMesh","mats","Array","isArray","material","forEach","mat","slots","slot","tex","uuid","has","_tex$image","_tex$image2","_tex$image3","_tex$image4","set","name","width","image","height","count","memMB","toFixed","get","sorted","_toConsumableArray","values","sort","a","b","log","size","slice","duplicates","filter","t","length","totalMem","reduce","sum","parseFloat","concat","emitter","emit","sceneControl","eventBus","storeManagement","_createClass","key","value","getOrbitControls","params","yaw","distance","minPolarAngle","degToRad","maxPolarAngle","minAzimuthAngle","maxAzimuthAngle","minDistance","maxDistance"],"sources":["../src/anov3d.ts"],"sourcesContent":["import { MathUtils, SceneControl, Vector3, utils } from '@anov/3d-core'\nimport { initPostEffects } from '@anov/3d-ability'\nimport EventBus from './module/eventBus'\nimport { object2Vector3 } from './utils/index'\nimport type { InitOptions } from './applicationApiType'\nimport { defaultCameraParams } from './index'\n\ntype Anov3DOptions = {\n container: HTMLElement\n camera?: InitOptions['camera']\n}\n\nclass Anov3D {\n zoomRatio = 1\n opts: Anov3DOptions\n sceneControl: SceneControl\n eventBus: EventBus\n\n constructor(opts: Anov3DOptions) {\n this.opts = opts\n\n // 获取默认和传入的相机参数\n const { camera = {}, container: { clientWidth, clientHeight } } = opts\n const { position: defaultPosition, ...defaultRest } = defaultCameraParams\n\n // 俯仰角转换,SCC取值范围是-90-90,转换到0-180\n if (camera.limit?.pitch) {\n const { pitch } = camera.limit\n const min = 90 - pitch[0]\n const max = 90 - pitch[1]\n camera.limit.pitch = [Math.min(min, max), Math.max(min, max)]\n }\n // 初始化相机参数\n const cameraParams = {\n limit: {},\n ...defaultRest,\n ...camera,\n position: camera.position ? new Vector3().fromArray(camera.position) : object2Vector3(defaultPosition),\n }\n // const orbitControls = this.getOrbitControls(cameraParams.limit) // 控制器参数\n const orbitControls = { limit: cameraParams.limit } // 控制器参数\n const scene = new SceneControl({\n defCameraOps: {\n ...cameraParams,\n aspect: clientWidth / clientHeight,\n },\n rendererOps: {\n shadowMap: true,\n },\n orbitControls,\n reset: true,\n css2DRenderer: true,\n css3DRenderer: true,\n ambientLight: true,\n })\n scene.render(opts.container)\n // scene.controls.target.copy(object2Vector3(defaultCameraParams.lookAt))\n scene.controls.target!.copy(new Vector3().fromArray(cameraParams.target! || [0, 0, 0]))\n\n setInterval(() => {\n const info = scene.renderer.info\n console.table({\n 几何体数量: info.memory.geometries,\n 纹理数量: info.memory.textures,\n 渲染调用: info.render.calls,\n 三角面数: info.render.triangles,\n })\n\n // 运行这段,找出纹理重复和大小分布\n const textureInfo = []\n const textureMap = new Map() // url → texture 引用次数\n\n scene.scene.traverse((obj) => {\n if (!obj.isMesh)\n return\n const mats = Array.isArray(obj.material) ? obj.material : [obj.material]\n\n mats.forEach((mat) => {\n const slots = [\n 'map', 'normalMap', 'roughnessMap', 'metalnessMap',\n 'aoMap', 'emissiveMap', 'alphaMap', 'lightMap',\n ]\n slots.forEach((slot) => {\n const tex = mat[slot]\n if (!tex)\n return\n\n const uuid = tex.uuid\n if (!textureMap.has(uuid)) {\n textureMap.set(uuid, {\n slot,\n name: tex.name || '未命名',\n width: tex.image?.width || 0,\n height: tex.image?.height || 0,\n count: 0,\n // 估算内存占用 MB(RGBA × w × h)\n memMB: ((tex.image?.width || 0) * (tex.image?.height || 0) * 4 / 1024 / 1024).toFixed(1),\n })\n }\n textureMap.get(uuid).count++\n })\n })\n })\n\n // 按内存占用排序\n const sorted = [...textureMap.values()]\n .sort((a, b) => b.memMB - a.memMB)\n\n console.log('纹理总数:', textureMap.size)\n console.log('Top 20 最大纹理:')\n console.table(sorted.slice(0, 20))\n\n // 统计重复引用\n const duplicates = sorted.filter(t => t.count > 1)\n console.log('被多次引用的纹理:', duplicates.length)\n\n // 估算总显存\n const totalMem = sorted.reduce((sum, t) => sum + parseFloat(t.memMB), 0)\n console.log(`估算纹理显存: ${(totalMem / 1024).toFixed(2)} GB`)\n }, 15000)\n\n // initPostEffects(scene.scene, scene.renderer, scene.camera)\n\n utils.emitter.emit('scene-completed', scene)\n\n // 不考虑 tree-shaking\n this.sceneControl = scene\n this.eventBus = new EventBus(this as any)\n\n utils.storeManagement.set('event-bus', this.eventBus)\n utils.emitter.emit('instantiation-completed', this)\n }\n\n getOrbitControls(params: { pitch?: number[]\n yaw?: number[]\n distance?: number[] }) {\n const { pitch, yaw, distance } = params\n const orbitControls: any = {}\n if (pitch?.length > 1) {\n orbitControls.minPolarAngle = MathUtils.degToRad(pitch[0])\n orbitControls.maxPolarAngle = MathUtils.degToRad(pitch[1])\n }\n if (yaw?.length > 1) {\n orbitControls.minAzimuthAngle = MathUtils.degToRad(yaw[0])\n orbitControls.maxAzimuthAngle = MathUtils.degToRad(yaw[1])\n }\n if (distance?.length > 1) {\n orbitControls.minDistance = distance[0]\n orbitControls.maxDistance = distance[1]\n }\n return orbitControls\n }\n}\n\nexport default Anov3D"],"mappings":"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"}
1
+ {"version":3,"names":["MathUtils","SceneControl","Vector3","utils","initPostEffects","EventBus","object2Vector3","defaultCameraParams","Anov3D","opts","_camera$limit","_classCallCheck","_defineProperty","_opts$camera","camera","_opts$container","container","clientWidth","clientHeight","defaultPosition","position","defaultRest","_objectWithoutProperties","_excluded","limit","pitch","min","max","Math","cameraParams","_objectSpread","fromArray","orbitControls","scene","defCameraOps","aspect","rendererOps","shadowMap","reset","css2DRenderer","css3DRenderer","ambientLight","render","controls","target","copy","logInfo","renderer","emitter","emit","sceneControl","eventBus","storeManagement","set","_createClass","key","value","TEX_SLOTS","setInterval","uuids","Set","totalMB","traverse","obj","isMesh","mesh","mats","Array","isArray","material","forEach","mat","slot","tex","has","uuid","add","img","image","width","height","console","table","size","info","memory","textures","geometries","calls","triangles","toFixed","getOrbitControls","params","yaw","distance","length","minPolarAngle","degToRad","maxPolarAngle","minAzimuthAngle","maxAzimuthAngle","minDistance","maxDistance"],"sources":["../src/anov3d.ts"],"sourcesContent":["import type { MeshStandardMaterial, TextureSlot } from '@anov/3d-core'\nimport { MathUtils, Mesh, SceneControl, Vector3, utils } from '@anov/3d-core'\nimport { initPostEffects } from '@anov/3d-ability'\nimport EventBus from './module/eventBus'\nimport { object2Vector3 } from './utils/index'\nimport type { InitOptions } from './applicationApiType'\nimport { defaultCameraParams } from './index'\n\ntype Anov3DOptions = {\n container: HTMLElement\n camera?: InitOptions['camera']\n}\n\nclass Anov3D {\n zoomRatio = 1\n opts: Anov3DOptions\n sceneControl: SceneControl\n eventBus: EventBus\n\n constructor(opts: Anov3DOptions) {\n this.opts = opts\n\n // 获取默认和传入的相机参数\n const { camera = {}, container: { clientWidth, clientHeight } } = opts\n const { position: defaultPosition, ...defaultRest } = defaultCameraParams\n\n // 俯仰角转换,SCC取值范围是-90-90,转换到0-180\n if (camera.limit?.pitch) {\n const { pitch } = camera.limit\n const min = 90 - pitch[0]\n const max = 90 - pitch[1]\n camera.limit.pitch = [Math.min(min, max), Math.max(min, max)]\n }\n // 初始化相机参数\n const cameraParams = {\n limit: {},\n ...defaultRest,\n ...camera,\n position: camera.position ? new Vector3().fromArray(camera.position) : object2Vector3(defaultPosition),\n }\n // const orbitControls = this.getOrbitControls(cameraParams.limit) // 控制器参数\n const orbitControls = { limit: cameraParams.limit } // 控制器参数\n const scene = new SceneControl({\n defCameraOps: {\n ...cameraParams,\n aspect: clientWidth / clientHeight,\n },\n rendererOps: {\n shadowMap: true,\n },\n orbitControls,\n reset: true,\n css2DRenderer: true,\n css3DRenderer: true,\n ambientLight: true,\n })\n scene.render(opts.container)\n // scene.controls.target.copy(object2Vector3(defaultCameraParams.lookAt))\n scene.controls.target!.copy(new Vector3().fromArray(cameraParams.target! || [0, 0, 0]))\n this.logInfo(scene)\n initPostEffects(scene.scene, scene.renderer, scene.camera)\n\n utils.emitter.emit('scene-completed', scene)\n\n // 不考虑 tree-shaking\n this.sceneControl = scene\n this.eventBus = new EventBus(this as any)\n\n utils.storeManagement.set('event-bus', this.eventBus)\n utils.emitter.emit('instantiation-completed', this)\n }\n\n logInfo(scene) {\n const TEX_SLOTS: TextureSlot[] = [\n 'map', 'normalMap', 'roughnessMap', 'metalnessMap',\n 'aoMap', 'emissiveMap', 'alphaMap', 'lightMap',\n ]\n setInterval(() => {\n const renderer = scene.renderer\n const uuids = new Set<string>()\n let totalMB = 0\n scene.scene.traverse((obj) => {\n if (!(obj as any).isMesh)\n return\n const mesh = obj\n const mats = Array.isArray(mesh.material) ? mesh.material : [mesh.material]\n mats.forEach((mat) => {\n TEX_SLOTS.forEach((slot) => {\n const tex = (mat as MeshStandardMaterial)[slot] as Texture | null\n if (!tex)\n return\n if (!uuids.has(tex.uuid)) {\n uuids.add(tex.uuid)\n const img = tex.image as HTMLImageElement | null\n if (img)\n totalMB += (img.width * img.height * 4) / 1024 / 1024\n }\n })\n })\n })\n\n console.table({\n '场景纹理数': uuids.size,\n '渲染器纹理数': renderer.info.memory.textures,\n '几何体数量': renderer.info.memory.geometries,\n '渲染调用次数': renderer.info.render.calls,\n '三角面数': renderer.info.render.triangles,\n '估算显存(MB)': totalMB.toFixed(0),\n })\n }, 15000)\n }\n\n getOrbitControls(params: { pitch?: number[]\n yaw?: number[]\n distance?: number[] }) {\n const { pitch, yaw, distance } = params\n const orbitControls: any = {}\n if (pitch?.length > 1) {\n orbitControls.minPolarAngle = MathUtils.degToRad(pitch[0])\n orbitControls.maxPolarAngle = MathUtils.degToRad(pitch[1])\n }\n if (yaw?.length > 1) {\n orbitControls.minAzimuthAngle = MathUtils.degToRad(yaw[0])\n orbitControls.maxAzimuthAngle = MathUtils.degToRad(yaw[1])\n }\n if (distance?.length > 1) {\n orbitControls.minDistance = distance[0]\n orbitControls.maxDistance = distance[1]\n }\n return orbitControls\n }\n}\n\nexport default Anov3D"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d",
3
- "version": "0.0.308",
3
+ "version": "0.0.310",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -29,8 +29,8 @@
29
29
  "rxjs": "7.8.1",
30
30
  "three-mesh-bvh": "^0.9.0",
31
31
  "uuid": "^9.0.1",
32
- "@anov/3d-core": "^0.0.95",
33
- "@anov/3d-ability": "^0.0.158"
32
+ "@anov/3d-ability": "^0.0.160",
33
+ "@anov/3d-core": "^0.0.97"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/uuid": "^9.0.7",