@woosh/meep-engine 2.48.20 → 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.
- package/package.json +1 -1
- package/src/engine/graphics/micron/MICRON_GEOMETRY_FIELD.js +0 -1
- package/src/engine/graphics/micron/MICRON_URI_FIELD.js +0 -1
- package/src/engine/graphics/micron/build/MICRON_PATCH_SIZE_MAX.js +0 -5
- package/src/engine/graphics/micron/build/PatchRepresentation.js +0 -424
- package/src/engine/graphics/micron/build/buildMicronGeometryFromBufferGeometry.js +0 -311
- package/src/engine/graphics/micron/build/build_geometry_info.js +0 -21
- package/src/engine/graphics/micron/build/clustering/assignInitialPatchNeighbours.js +0 -63
- package/src/engine/graphics/micron/build/clustering/assign_patch_neighbours_from_topology.js +0 -46
- package/src/engine/graphics/micron/build/clustering/build_clustering_2.js +0 -37
- package/src/engine/graphics/micron/build/clustering/build_leaf_patches.js +0 -326
- package/src/engine/graphics/micron/build/clustering/build_leaf_patches_metis.js +0 -76
- package/src/engine/graphics/micron/build/clustering/computeBorderLengthChange.js +0 -59
- package/src/engine/graphics/micron/build/clustering/computeFaceCurvatureScore.js +0 -57
- package/src/engine/graphics/micron/build/clustering/computeOpenFaceFreedom.js +0 -35
- package/src/engine/graphics/micron/build/clustering/compute_face_connection_weight.js +0 -35
- package/src/engine/graphics/micron/build/clustering/populateOpenFaceNeighboursForPatch.js +0 -56
- package/src/engine/graphics/micron/build/clustering/validate_leaf_patch_connectivity.js +0 -44
- package/src/engine/graphics/micron/build/compute_micron_buffer_array_constructor.js +0 -24
- package/src/engine/graphics/micron/build/compute_vertex_remap_cost.js +0 -29
- package/src/engine/graphics/micron/build/debug/build_clustering_info.js +0 -58
- package/src/engine/graphics/micron/build/debug/build_graph_info.js +0 -59
- package/src/engine/graphics/micron/build/fill_patch_geometry_data.js +0 -270
- package/src/engine/graphics/micron/build/hierarchy/buildAbstractPatchHierarchy.js +0 -196
- package/src/engine/graphics/micron/build/hierarchy/build_intermediate_patch_topology.js +0 -162
- package/src/engine/graphics/micron/build/hierarchy/build_merge_graph.js +0 -89
- package/src/engine/graphics/micron/build/hierarchy/computePatchMergeScore.js +0 -146
- package/src/engine/graphics/micron/build/hierarchy/compute_patches_shared_vertex_count.js +0 -32
- package/src/engine/graphics/micron/build/hierarchy/compute_patches_shared_vertices.js +0 -34
- package/src/engine/graphics/micron/build/hierarchy/merge_patches.js +0 -581
- package/src/engine/graphics/micron/build/hierarchy/metis_cluster_clusters.js +0 -53
- package/src/engine/graphics/micron/build/hierarchy/optimize_graph_partitioning_balance.js +0 -515
- package/src/engine/graphics/micron/build/hierarchy/patch_combine.js +0 -180
- package/src/engine/graphics/micron/build/hierarchy/patch_fill_holes_by_uncollapse.js +0 -60
- package/src/engine/graphics/micron/build/hierarchy/patch_stitch_parent_border.js +0 -320
- package/src/engine/graphics/micron/build/hierarchy/qvdr_build_simplified_clusters.js +0 -547
- package/src/engine/graphics/micron/build/hierarchy/qvdr_build_tree.js +0 -140
- package/src/engine/graphics/micron/buildPatchwork.js +0 -68
- package/src/engine/graphics/micron/convert_three_object_to_micron.js +0 -179
- package/src/engine/graphics/micron/debug/VirtualGeometryStats.js +0 -42
- package/src/engine/graphics/micron/format/MICRON_GEOMETRY_PROPERTY_NAME.js +0 -1
- package/src/engine/graphics/micron/format/MicronGeometry.d.ts +0 -21
- package/src/engine/graphics/micron/format/MicronGeometry.js +0 -334
- package/src/engine/graphics/micron/format/MicronGeometryPatch.d.ts +0 -3
- package/src/engine/graphics/micron/format/MicronGeometryPatch.js +0 -205
- package/src/engine/graphics/micron/format/MicronGeometryPatchOccurance.js +0 -50
- package/src/engine/graphics/micron/format/ThreeMicronMesh.d.ts +0 -10
- package/src/engine/graphics/micron/format/ThreeMicronMesh.js +0 -45
- package/src/engine/graphics/micron/format/VirtualGeometry.js +0 -158
- package/src/engine/graphics/micron/format/micron_build_proxy_geometry.js +0 -205
- package/src/engine/graphics/micron/format/serialization/MicronGeometryBinarySerializationAdapter.js +0 -123
- package/src/engine/graphics/micron/format/serialization/MicronGeometryBinarySerializationAdapter.spec.js +0 -63
- package/src/engine/graphics/micron/format/serialization/collection/geometry_collection_serialization.js +0 -83
- package/src/engine/graphics/micron/format/serialization/collection/geometry_collection_serialization.spec.js +0 -51
- package/src/engine/graphics/micron/format/serialization/deserialize_attribute_spec.js +0 -25
- package/src/engine/graphics/micron/format/serialization/deserialize_patch.js +0 -106
- package/src/engine/graphics/micron/format/serialization/serialize_attribute_spec.js +0 -18
- package/src/engine/graphics/micron/format/serialization/serialize_patch.js +0 -84
- package/src/engine/graphics/micron/format/validate_patch_bounds.js +0 -69
- package/src/engine/graphics/micron/plugin/GLTFAssetTransformer.js +0 -265
- package/src/engine/graphics/micron/plugin/GLTF_MICRON_ID_FIELD.js +0 -5
- package/src/engine/graphics/micron/plugin/MicronRenderPlugin.d.ts +0 -8
- package/src/engine/graphics/micron/plugin/MicronRenderPlugin.js +0 -150
- package/src/engine/graphics/micron/plugin/serialization/BufferGeometrySerializationAdapter.js +0 -176
- package/src/engine/graphics/micron/plugin/shaded_geometry/MicronShadedGeometryRenderAdapter.js +0 -216
- package/src/engine/graphics/micron/prototypeMicronProxyBuild.js +0 -227
- package/src/engine/graphics/micron/prototypeVirtualGeometry.js +0 -911
- package/src/engine/graphics/micron/render/PatchCacheKey.js +0 -79
- package/src/engine/graphics/micron/render/VIRTUAL_MESH_FLAG.d.ts +0 -1
- package/src/engine/graphics/micron/render/VIRTUAL_MESH_FLAG.js +0 -1
- package/src/engine/graphics/micron/render/VirtualGeometryBuilder.js +0 -207
- package/src/engine/graphics/micron/render/approximateTriangleArea.js +0 -25
- package/src/engine/graphics/micron/render/culling/PatchCullingSystem.js +0 -129
- package/src/engine/graphics/micron/render/instanced/PatchDataTextures.js +0 -329
- package/src/engine/graphics/micron/render/instanced/ThreeInstancedAdapter.js +0 -175
- package/src/engine/graphics/micron/render/instanced/shader/constants.js +0 -3
- package/src/engine/graphics/micron/render/instanced/shader/gen_micron_vertex_attribute_texture_name.js +0 -8
- package/src/engine/graphics/micron/render/instanced/shader/shader_rewrite_standard.js +0 -250
- package/src/engine/graphics/micron/render/makeThreeMeshFromVirtualGeometry.js +0 -37
- package/src/engine/graphics/micron/render/refinement/ActivePatchFlags.js +0 -8
- package/src/engine/graphics/micron/render/refinement/ActivePatchList.js +0 -241
- package/src/engine/graphics/micron/render/refinement/ActivePatchRecord.js +0 -154
- package/src/engine/graphics/micron/render/refinement/RefinementSpec.js +0 -84
- package/src/engine/graphics/micron/render/refinement/get_geometry_patch_cut.js +0 -133
- package/src/engine/graphics/micron/render/refinement/is_patch_facing_back.js +0 -43
- package/src/engine/graphics/micron/render/refinement/is_patch_visible.js +0 -37
- package/src/engine/graphics/micron/render/v1/MaterialContext.js +0 -150
- package/src/engine/graphics/micron/render/v1/MaterialVertexSpec.js +0 -115
- package/src/engine/graphics/micron/render/v1/MicronRenderContext.js +0 -145
- package/src/engine/graphics/micron/render/v1/ThreeVirtualGeometryAdapter.js +0 -255
- package/src/engine/graphics/micron/render/v1/VGThreeRenderer.js +0 -142
- package/src/engine/graphics/micron/render/v1/getTransformedPositionsCached.js +0 -54
- package/src/engine/graphics/micron/simplifyGeometry.js +0 -26
- package/src/engine/graphics/micron/util/patchToBufferGeometry.js +0 -19
package/src/engine/graphics/micron/plugin/shaded_geometry/MicronShadedGeometryRenderAdapter.js
DELETED
|
@@ -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();
|