@woosh/meep-engine 2.48.19 → 2.48.21

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.
Files changed (117) hide show
  1. package/package.json +1 -1
  2. package/src/core/binary/type/BinaryDataType.d.ts +15 -0
  3. package/src/{engine/graphics/render/forward_plus/data/computeDataType.js → core/binary/type/computeBinaryDataTypeByPrecision.js} +3 -3
  4. package/src/core/geom/2d/quad-tree/qt_query_data_nearest_to_point.js +62 -0
  5. package/src/core/graph/layout/computeDisconnectedSubGraphs.js +1 -0
  6. package/src/core/process/task/TaskGroup.js +1 -1
  7. package/src/core/process/task/util/task_tree_compute_leaf_tasks.js +21 -0
  8. package/src/engine/graphics/geometry/AttributeSpec.d.ts +2 -2
  9. package/src/engine/graphics/material/optimization/MaterialOptimizationContext.js +1 -3
  10. package/src/engine/graphics/render/forward_plus/LightManager.js +9 -7
  11. package/src/engine/graphics/{micron/render/instanced → texture}/AttributeDataTexture.js +28 -19
  12. package/src/engine/graphics/{render/forward_plus/data → texture}/TextureBackedMemoryRegion.js +8 -8
  13. package/src/engine/graphics/{render/forward_plus/data → texture}/computeThreeTextureFormat.js +2 -2
  14. package/src/engine/graphics/{render/forward_plus/data → texture}/computeThreeTextureInternalFormatFromDataType.js +1 -1
  15. package/src/engine/graphics/{render/forward_plus/data → texture}/computeThreeTextureTypeFromDataType.js +1 -1
  16. package/src/engine/graphics/texture/sampler/Sampler2D2Canvas.js +1 -1
  17. package/src/engine/graphics/texture/sampler/sampler2DToFloat32Texture.js +1 -3
  18. package/src/generation/GridTaskGroup.js +4 -4
  19. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +10 -2
  20. package/src/generation/filtering/numeric/util/sampler_from_filter.js +26 -0
  21. package/src/generation/filtering/numeric/util/visualise_filters_as_grid.js +81 -0
  22. package/src/generation/grid/generation/GridTaskSequence.js +3 -1
  23. package/src/engine/graphics/micron/MICRON_GEOMETRY_FIELD.js +0 -1
  24. package/src/engine/graphics/micron/MICRON_URI_FIELD.js +0 -1
  25. package/src/engine/graphics/micron/build/MICRON_PATCH_SIZE_MAX.js +0 -5
  26. package/src/engine/graphics/micron/build/PatchRepresentation.js +0 -424
  27. package/src/engine/graphics/micron/build/buildMicronGeometryFromBufferGeometry.js +0 -311
  28. package/src/engine/graphics/micron/build/build_geometry_info.js +0 -21
  29. package/src/engine/graphics/micron/build/clustering/assignInitialPatchNeighbours.js +0 -63
  30. package/src/engine/graphics/micron/build/clustering/assign_patch_neighbours_from_topology.js +0 -46
  31. package/src/engine/graphics/micron/build/clustering/build_clustering_2.js +0 -37
  32. package/src/engine/graphics/micron/build/clustering/build_leaf_patches.js +0 -326
  33. package/src/engine/graphics/micron/build/clustering/build_leaf_patches_metis.js +0 -76
  34. package/src/engine/graphics/micron/build/clustering/computeBorderLengthChange.js +0 -59
  35. package/src/engine/graphics/micron/build/clustering/computeFaceCurvatureScore.js +0 -57
  36. package/src/engine/graphics/micron/build/clustering/computeOpenFaceFreedom.js +0 -35
  37. package/src/engine/graphics/micron/build/clustering/compute_face_connection_weight.js +0 -35
  38. package/src/engine/graphics/micron/build/clustering/populateOpenFaceNeighboursForPatch.js +0 -56
  39. package/src/engine/graphics/micron/build/clustering/validate_leaf_patch_connectivity.js +0 -44
  40. package/src/engine/graphics/micron/build/compute_micron_buffer_array_constructor.js +0 -24
  41. package/src/engine/graphics/micron/build/compute_vertex_remap_cost.js +0 -29
  42. package/src/engine/graphics/micron/build/debug/build_clustering_info.js +0 -58
  43. package/src/engine/graphics/micron/build/debug/build_graph_info.js +0 -59
  44. package/src/engine/graphics/micron/build/fill_patch_geometry_data.js +0 -270
  45. package/src/engine/graphics/micron/build/hierarchy/buildAbstractPatchHierarchy.js +0 -196
  46. package/src/engine/graphics/micron/build/hierarchy/build_intermediate_patch_topology.js +0 -162
  47. package/src/engine/graphics/micron/build/hierarchy/build_merge_graph.js +0 -89
  48. package/src/engine/graphics/micron/build/hierarchy/computePatchMergeScore.js +0 -146
  49. package/src/engine/graphics/micron/build/hierarchy/compute_patches_shared_vertex_count.js +0 -32
  50. package/src/engine/graphics/micron/build/hierarchy/compute_patches_shared_vertices.js +0 -34
  51. package/src/engine/graphics/micron/build/hierarchy/merge_patches.js +0 -581
  52. package/src/engine/graphics/micron/build/hierarchy/metis_cluster_clusters.js +0 -53
  53. package/src/engine/graphics/micron/build/hierarchy/optimize_graph_partitioning_balance.js +0 -515
  54. package/src/engine/graphics/micron/build/hierarchy/patch_combine.js +0 -180
  55. package/src/engine/graphics/micron/build/hierarchy/patch_fill_holes_by_uncollapse.js +0 -60
  56. package/src/engine/graphics/micron/build/hierarchy/patch_stitch_parent_border.js +0 -320
  57. package/src/engine/graphics/micron/build/hierarchy/qvdr_build_simplified_clusters.js +0 -547
  58. package/src/engine/graphics/micron/build/hierarchy/qvdr_build_tree.js +0 -140
  59. package/src/engine/graphics/micron/buildPatchwork.js +0 -68
  60. package/src/engine/graphics/micron/convert_three_object_to_micron.js +0 -179
  61. package/src/engine/graphics/micron/debug/VirtualGeometryStats.js +0 -42
  62. package/src/engine/graphics/micron/format/MICRON_GEOMETRY_PROPERTY_NAME.js +0 -1
  63. package/src/engine/graphics/micron/format/MicronGeometry.d.ts +0 -21
  64. package/src/engine/graphics/micron/format/MicronGeometry.js +0 -334
  65. package/src/engine/graphics/micron/format/MicronGeometryPatch.d.ts +0 -3
  66. package/src/engine/graphics/micron/format/MicronGeometryPatch.js +0 -205
  67. package/src/engine/graphics/micron/format/MicronGeometryPatchOccurance.js +0 -50
  68. package/src/engine/graphics/micron/format/ThreeMicronMesh.d.ts +0 -10
  69. package/src/engine/graphics/micron/format/ThreeMicronMesh.js +0 -45
  70. package/src/engine/graphics/micron/format/VirtualGeometry.js +0 -158
  71. package/src/engine/graphics/micron/format/micron_build_proxy_geometry.js +0 -205
  72. package/src/engine/graphics/micron/format/serialization/MicronGeometryBinarySerializationAdapter.js +0 -123
  73. package/src/engine/graphics/micron/format/serialization/MicronGeometryBinarySerializationAdapter.spec.js +0 -63
  74. package/src/engine/graphics/micron/format/serialization/collection/geometry_collection_serialization.js +0 -83
  75. package/src/engine/graphics/micron/format/serialization/collection/geometry_collection_serialization.spec.js +0 -51
  76. package/src/engine/graphics/micron/format/serialization/deserialize_attribute_spec.js +0 -25
  77. package/src/engine/graphics/micron/format/serialization/deserialize_patch.js +0 -106
  78. package/src/engine/graphics/micron/format/serialization/serialize_attribute_spec.js +0 -18
  79. package/src/engine/graphics/micron/format/serialization/serialize_patch.js +0 -84
  80. package/src/engine/graphics/micron/format/validate_patch_bounds.js +0 -69
  81. package/src/engine/graphics/micron/plugin/GLTFAssetTransformer.js +0 -265
  82. package/src/engine/graphics/micron/plugin/GLTF_MICRON_ID_FIELD.js +0 -5
  83. package/src/engine/graphics/micron/plugin/MicronRenderPlugin.d.ts +0 -8
  84. package/src/engine/graphics/micron/plugin/MicronRenderPlugin.js +0 -150
  85. package/src/engine/graphics/micron/plugin/serialization/BufferGeometrySerializationAdapter.js +0 -176
  86. package/src/engine/graphics/micron/plugin/shaded_geometry/MicronShadedGeometryRenderAdapter.js +0 -216
  87. package/src/engine/graphics/micron/prototypeMicronProxyBuild.js +0 -227
  88. package/src/engine/graphics/micron/prototypeVirtualGeometry.js +0 -911
  89. package/src/engine/graphics/micron/render/PatchCacheKey.js +0 -79
  90. package/src/engine/graphics/micron/render/VIRTUAL_MESH_FLAG.d.ts +0 -1
  91. package/src/engine/graphics/micron/render/VIRTUAL_MESH_FLAG.js +0 -1
  92. package/src/engine/graphics/micron/render/VirtualGeometryBuilder.js +0 -207
  93. package/src/engine/graphics/micron/render/approximateTriangleArea.js +0 -25
  94. package/src/engine/graphics/micron/render/culling/PatchCullingSystem.js +0 -129
  95. package/src/engine/graphics/micron/render/instanced/PatchDataTextures.js +0 -325
  96. package/src/engine/graphics/micron/render/instanced/ThreeInstancedAdapter.js +0 -175
  97. package/src/engine/graphics/micron/render/instanced/shader/constants.js +0 -3
  98. package/src/engine/graphics/micron/render/instanced/shader/gen_micron_vertex_attribute_texture_name.js +0 -8
  99. package/src/engine/graphics/micron/render/instanced/shader/shader_rewrite_standard.js +0 -250
  100. package/src/engine/graphics/micron/render/makeThreeMeshFromVirtualGeometry.js +0 -37
  101. package/src/engine/graphics/micron/render/refinement/ActivePatchFlags.js +0 -8
  102. package/src/engine/graphics/micron/render/refinement/ActivePatchList.js +0 -241
  103. package/src/engine/graphics/micron/render/refinement/ActivePatchRecord.js +0 -154
  104. package/src/engine/graphics/micron/render/refinement/RefinementSpec.js +0 -84
  105. package/src/engine/graphics/micron/render/refinement/get_geometry_patch_cut.js +0 -133
  106. package/src/engine/graphics/micron/render/refinement/is_patch_facing_back.js +0 -43
  107. package/src/engine/graphics/micron/render/refinement/is_patch_visible.js +0 -37
  108. package/src/engine/graphics/micron/render/v1/MaterialContext.js +0 -150
  109. package/src/engine/graphics/micron/render/v1/MaterialVertexSpec.js +0 -115
  110. package/src/engine/graphics/micron/render/v1/MicronRenderContext.js +0 -145
  111. package/src/engine/graphics/micron/render/v1/ThreeVirtualGeometryAdapter.js +0 -255
  112. package/src/engine/graphics/micron/render/v1/VGThreeRenderer.js +0 -142
  113. package/src/engine/graphics/micron/render/v1/getTransformedPositionsCached.js +0 -54
  114. package/src/engine/graphics/micron/simplifyGeometry.js +0 -26
  115. package/src/engine/graphics/micron/util/patchToBufferGeometry.js +0 -19
  116. /package/src/{engine/graphics/render/forward_plus/data → core/math}/NumericType.js +0 -0
  117. /package/src/engine/graphics/{render/forward_plus/data → texture}/channelCountToThreIntegerTextureType.js +0 -0
@@ -1,216 +0,0 @@
1
- import { AbstractRenderAdapter } from "../../../ecs/mesh-v2/render/adapters/AbstractRenderAdapter.js";
2
- import Vector2 from "../../../../../core/geom/Vector2.js";
3
- import { ShadedGeometryFlags } from "../../../ecs/mesh-v2/ShadedGeometryFlags.js";
4
- import { MaterialVertexSpec, MaterialVertexSpecFlags } from "../../render/v1/MaterialVertexSpec.js";
5
- import { compute_geometry_polycount } from "../../../geometry/compute_geometry_polycount.js";
6
- import { inverseLerp } from "../../../../../core/math/inverseLerp.js";
7
- import { MICRON_GEOMETRY_FIELD } from "../../MICRON_GEOMETRY_FIELD.js";
8
- import { assert } from "../../../../../core/assert.js";
9
-
10
- /**
11
- *
12
- * @type {MaterialVertexSpec}
13
- */
14
- const scratch_mvc = new MaterialVertexSpec();
15
-
16
- /**
17
- * @readonly
18
- * @type {number}
19
- */
20
- const MICRON_POLYCOUNT_THRESHOLD_MIN = 4096;
21
-
22
- /**
23
- * @readonly
24
- * @type {number}
25
- */
26
- const MICRON_POLYCOUNT_THRESHOLD_MAX = 10000;
27
-
28
- export class MicronShadedGeometryRenderAdapter extends AbstractRenderAdapter {
29
-
30
- /**
31
- *
32
- * @param {AbstractAsyncMap<THREE.BufferGeometry, MicronGeometry>} [cache]
33
- */
34
- constructor(cache) {
35
- super();
36
-
37
- /**
38
- *
39
- * @type {MicronRenderContext|null}
40
- */
41
- this.ctx = null;
42
-
43
- /**
44
- *
45
- * @type {Map<number, MicronGeometry>}
46
- * @private
47
- */
48
- this.__geometry_map = new Map();
49
-
50
- /**
51
- *
52
- * @type {Map<number, Promise>}
53
- * @private
54
- */
55
- this.__geometry_building_promises = new Map();
56
-
57
- /**
58
- *
59
- * @type {AbstractAsyncMap<THREE.BufferGeometry, MicronGeometry>|undefined}
60
- * @private
61
- */
62
- this.__cache = cache;
63
- }
64
-
65
- score(geometry, material, instance_count) {
66
- const polycount = compute_geometry_polycount(geometry);
67
-
68
- return inverseLerp(MICRON_POLYCOUNT_THRESHOLD_MIN, MICRON_POLYCOUNT_THRESHOLD_MAX, polycount);
69
- }
70
-
71
- /**
72
- *
73
- * @param {ShadedGeometry} sg
74
- * @returns {MicronGeometry}
75
- * @private
76
- */
77
- __obtain_micron_geometry(sg) {
78
- const buffer_geometry = sg.geometry;
79
-
80
- const attached_micron_data = buffer_geometry[MICRON_GEOMETRY_FIELD];
81
-
82
- if (attached_micron_data !== undefined) {
83
- assert.equal(attached_micron_data.isMicronGeometry, true, `geometry[${MICRON_GEOMETRY_FIELD}].isMicronGeometry !== true`);
84
-
85
- // data was found directly on the geometry
86
- return attached_micron_data;
87
- }
88
-
89
- const geometry_id = buffer_geometry.id;
90
-
91
- const micron_geometry = this.__geometry_map.get(geometry_id);
92
-
93
- if (micron_geometry !== undefined) {
94
-
95
- return micron_geometry;
96
-
97
- } else {
98
-
99
- // no micron geometry
100
- if (
101
- this.__cache !== undefined // cache is attached
102
- && !this.__geometry_building_promises.has(geometry_id)
103
- ) {
104
- const p = this.__cache.get(buffer_geometry);
105
-
106
- this.__geometry_building_promises.set(geometry_id, p);
107
-
108
- p.then(mg => {
109
- if (mg !== undefined) {
110
- this.__geometry_map.set(geometry_id, mg);
111
- }
112
- });
113
-
114
- p.finally(() => {
115
- this.__geometry_building_promises.delete(geometry_id);
116
- });
117
-
118
- }
119
-
120
- return undefined;
121
- }
122
-
123
- }
124
-
125
- intend_draw(sg) {
126
- return this.__obtain_micron_geometry(sg) !== undefined;
127
- }
128
-
129
- add(sg) {
130
- const micron_geometry = this.__obtain_micron_geometry(sg);
131
-
132
- if (micron_geometry === undefined) {
133
- // no micron geometry
134
- return;
135
- }
136
-
137
- // populate virtual geometry for this instance
138
- this.ctx.builder.buildForMesh(sg.entity, micron_geometry, sg.transform);
139
-
140
- scratch_mvc.material = sg.material;
141
- scratch_mvc.spec = micron_geometry.vertex_spec;
142
-
143
- // clear all flags
144
- scratch_mvc.flags = 0;
145
-
146
- scratch_mvc.writeFlag(MaterialVertexSpecFlags.CastShadow, sg.getFlag(ShadedGeometryFlags.CastShadow));
147
- scratch_mvc.writeFlag(MaterialVertexSpecFlags.ReceiveShadow, sg.getFlag(ShadedGeometryFlags.ReceiveShadow));
148
-
149
- const material_context = this.ctx.obtain_material(scratch_mvc);
150
-
151
- material_context.instances.add(sg.entity);
152
-
153
- }
154
-
155
- /**
156
- *
157
- * @param {THREE.WebGLRenderer} renderer
158
- * @param {CameraView} view
159
- */
160
- build_start(renderer, view) {
161
- this.__object_count = 0;
162
-
163
- const resolution = new Vector2();
164
- let pixelRatio = 1;
165
-
166
- /**
167
- *
168
- * @type {THREE.RenderTarget}
169
- */
170
- const render_target = renderer.getRenderTarget();
171
-
172
- if (render_target !== null) {
173
- resolution.set(render_target.width, render_target.height);
174
- } else {
175
- renderer.getSize(resolution);
176
- pixelRatio = renderer.getPixelRatio();
177
- }
178
-
179
- // clear context
180
- const material_contexts = this.ctx.contexts_array;
181
- const contexts_count = material_contexts.length;
182
-
183
- for (let i = 0; i < contexts_count; i++) {
184
- const mc = material_contexts[i];
185
-
186
- mc.instances.clear();
187
- }
188
-
189
- // initialize geometry builder
190
- const vg_builder = this.ctx.builder;
191
-
192
- vg_builder.resolution.set(resolution.x * pixelRatio, resolution.y * pixelRatio);
193
- vg_builder.setMatricesFromCamera(view.camera);
194
- vg_builder.setOutput(this.ctx.geometry);
195
-
196
- vg_builder.initialize_build();
197
- }
198
-
199
- build_end() {
200
- this.ctx.render();
201
-
202
- const material_contexts = this.ctx.contexts_array;
203
- const contexts_count = material_contexts.length;
204
- for (let i = 0; i < contexts_count; i++) {
205
- const mc = material_contexts[i];
206
-
207
- if (mc.instances.size > 0) {
208
- this.__objects[this.__object_count++] = mc.mesh;
209
- }
210
- }
211
- }
212
-
213
- dispose() {
214
- // rendering context is not owned, do nothing
215
- }
216
- }
@@ -1,227 +0,0 @@
1
- import { PLYLoader } from "three/examples/jsm/loaders/PLYLoader.js";
2
- import {
3
- AmbientLight,
4
- CubeTextureLoader,
5
- DirectionalLight,
6
- FrontSide,
7
- Mesh,
8
- MeshBasicMaterial,
9
- MeshStandardMaterial,
10
- PerspectiveCamera,
11
- PointLight,
12
- RepeatWrapping,
13
- Scene,
14
- SphereGeometry,
15
- sRGBEncoding,
16
- TextureLoader,
17
- VSMShadowMap,
18
- WebGLRenderer
19
- } from "three";
20
- import Stats from "three/examples/jsm/libs/stats.module.js";
21
- import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
22
- import { buildMicronGeometryFromBufferGeometry } from "./build/buildMicronGeometryFromBufferGeometry.js";
23
-
24
- const background = new TextureLoader().load('data/textures/utility/checkers_white_grey_256x256.png');
25
- background.repeat.set(50, 30);
26
- background.wrapS = RepeatWrapping;
27
- background.wrapT = RepeatWrapping;
28
-
29
- let container, stats;
30
-
31
- let camera, scene, renderer;
32
- let directionalLight;
33
- let pointLight;
34
-
35
- let windowHalfX = window.innerWidth / 2;
36
- let windowHalfY = window.innerHeight / 2;
37
-
38
-
39
- function init() {
40
-
41
- container = document.createElement("div");
42
- document.body.appendChild(container);
43
-
44
- camera = new PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000000);
45
- camera.position.z = -4000;
46
-
47
- //
48
-
49
-
50
- scene = new Scene();
51
-
52
- window.scene = scene;
53
-
54
- // LIGHTS
55
-
56
- const ambient = new AmbientLight(0xffffff, 0.1);
57
- scene.add(ambient);
58
-
59
- pointLight = new PointLight(0x6666ff, 0.5);
60
- pointLight.position.y = 1000;
61
- scene.add(pointLight);
62
-
63
- // light representation
64
-
65
- const sphere = new SphereGeometry(100, 16, 8);
66
-
67
- const mesh = new Mesh(sphere, new MeshBasicMaterial({ color: 0xffffff }));
68
- mesh.scale.set(0.5, 0.5, 0.5);
69
- pointLight.add(mesh);
70
-
71
- // add directional light
72
- directionalLight = new DirectionalLight(0xFFAAAA, 0.8);
73
- directionalLight.position.set(-500, 1000, 300);
74
- directionalLight.castShadow = true;
75
- const shadow_camera = directionalLight.shadow.camera;
76
- // small bias to prevent shadow acne
77
- directionalLight.shadow.bias = -0.0001;
78
- // directionalLight.shadow.mapSize.set(4096, 4096);
79
- directionalLight.shadow.mapSize.set(1024, 1024);
80
- directionalLight.shadow.autoUpdate = false;
81
-
82
- window.light = directionalLight;
83
- // directionalLight.shadow.autoUpdate = true;
84
-
85
- shadow_camera.near = 0.1;
86
- shadow_camera.far = 2000;
87
-
88
- const shadow_camera_size = 15;
89
-
90
- shadow_camera.left = -shadow_camera_size / 2;
91
- shadow_camera.right = shadow_camera_size / 2;
92
-
93
- shadow_camera.bottom = -shadow_camera_size / 2;
94
- shadow_camera.top = shadow_camera_size / 2;
95
-
96
- shadow_camera.updateProjectionMatrix();
97
-
98
-
99
- scene.add(directionalLight);
100
- // material samples
101
-
102
- const cubeMaterial1 = new MeshStandardMaterial({
103
- wireframe: false,
104
- side: FrontSide,
105
- color: 0xffffff
106
- });
107
-
108
- //
109
-
110
- renderer = new WebGLRenderer({
111
- antialias: true,
112
- preserveDrawingBuffer: true,
113
- stencil: false
114
- });
115
-
116
- renderer.shadowMap.enabled = true;
117
- renderer.shadowMap.type = VSMShadowMap;
118
- // renderer.shadowMap.type = BasicShadowMap;
119
- renderer.sortObjects = false;
120
-
121
- renderer.setPixelRatio(window.devicePixelRatio);
122
- renderer.setSize(window.innerWidth, window.innerHeight);
123
- container.appendChild(renderer.domElement);
124
-
125
- stats = new Stats();
126
- container.appendChild(stats.dom);
127
-
128
-
129
- window.addEventListener("resize", onWindowResize);
130
-
131
- // envmap
132
- const genCubeUrls = function (prefix, postfix) {
133
-
134
- return [
135
- prefix + "posx" + postfix, prefix + "negx" + postfix,
136
- prefix + "posy" + postfix, prefix + "negy" + postfix,
137
- prefix + "posz" + postfix, prefix + "negz" + postfix
138
- ];
139
-
140
- };
141
-
142
- const urls = genCubeUrls("data/textures/cubemaps/hip_miramar/32/", ".png");
143
-
144
- new CubeTextureLoader().load(urls, function (cubeTexture) {
145
-
146
- cubeTexture.encoding = sRGBEncoding;
147
-
148
- // scene.background = new Color(0.1, 0.1, 0.1);
149
- // scene.background = new ThreeColor(1, 0.3, 0.3);
150
- // scene.background = new Color(0.3, 1, 0.3);
151
-
152
- scene.background = background;
153
- scene.environment = cubeTexture;
154
-
155
-
156
- // const lightProbe = new LightProbe();
157
- //
158
- // lightProbe.copy(LightProbeGenerator.fromCubeTexture(cubeTexture));
159
- // lightProbe.intensity = 1.2;
160
-
161
- // scene.add(lightProbe);
162
- });
163
-
164
- onWindowResize();
165
-
166
- new PLYLoader().load("data/models/stanford/Lucy100k.ply", async geometry => {
167
- geometry.computeVertexNormals();
168
-
169
- const source = new Mesh(geometry, new MeshStandardMaterial({ color: 0xFFFFFF }));
170
-
171
- const micron_g = await buildMicronGeometryFromBufferGeometry(geometry);
172
-
173
- micron_g.buildProxy();
174
-
175
- const proxy = new Mesh(micron_g.proxy, new MeshStandardMaterial({ color: 0xFF0000 }));
176
-
177
- source.position.x += 700;
178
- proxy.position.x -= 700;
179
-
180
- console.warn(geometry, micron_g);
181
-
182
- scene.add(source);
183
- scene.add(proxy);
184
- })
185
- }
186
-
187
- function onWindowResize() {
188
-
189
- const w = window.innerWidth;
190
- const h = window.innerHeight;
191
-
192
- windowHalfX = w / 2;
193
- windowHalfY = h / 2;
194
-
195
- camera.aspect = w / h;
196
- camera.updateProjectionMatrix();
197
-
198
- renderer.setSize(w, h);
199
-
200
- background.repeat.set(w / 20, h / 20);
201
- }
202
-
203
- function animate() {
204
-
205
- requestAnimationFrame(animate);
206
-
207
- render();
208
- stats.update();
209
-
210
- }
211
-
212
- function render() {
213
- if (orbitControls !== undefined) {
214
- orbitControls.update();
215
- }
216
-
217
- const timer = -0.0002 * Date.now();
218
-
219
- pointLight.position.x = 10000 * Math.cos(timer);
220
- pointLight.position.z = 10000 * Math.sin(timer);
221
-
222
- renderer.render(scene, camera);
223
- }
224
-
225
- init();
226
- const orbitControls = new OrbitControls(camera, container);
227
- animate();