Skip to content

Commit 247d0ed

Browse files
authored
Update demo.js
Enhancing the script
1 parent 38fff04 commit 247d0ed

File tree

1 file changed

+36
-43
lines changed

1 file changed

+36
-43
lines changed

js/demo.js

Lines changed: 36 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -49,97 +49,90 @@ document.addEventListener('DOMContentLoaded', function () {
4949
}
5050
};
5151

52-
// Initialize simulation display
5352
updateStressDisplay();
54-
55-
// --- 3D Scene Script using Three.js ---
5653

57-
// Scene Setup
54+
// --- Optimized 3D Scene Implementation ---
5855
const scene = new THREE.Scene();
59-
60-
// Camera Fix: Adjust near plane and position
56+
57+
// Precision Camera Setup
6158
const camera = new THREE.PerspectiveCamera(
62-
75,
63-
window.innerWidth / window.innerHeight,
64-
0.01, // Changed from 0.1 to 0.01
59+
75,
60+
window.innerWidth / window.innerHeight,
61+
0.01,
6562
1000
6663
);
67-
camera.position.set(0, 0, 0.001); // Position closer to center
64+
camera.position.set(0, 0, 0.001);
6865

69-
// Renderer Fix: Add alpha channel for debugging
66+
// Transparent Renderer Configuration
7067
const renderer = new THREE.WebGLRenderer({
7168
antialias: true,
72-
alpha: true // Enable transparency
69+
alpha: true
7370
});
74-
renderer.setClearColor(0x000000, 0); // Transparent background
71+
renderer.setClearColor(0x000000, 0);
7572
renderer.setSize(window.innerWidth, window.innerHeight);
7673
renderer.setPixelRatio(window.devicePixelRatio);
7774
document.body.appendChild(renderer.domElement);
7875

79-
// Geometry Fix: Reduce complexity for better performance
80-
const geometry = new THREE.SphereGeometry(500, 32, 16); // Reduced segments
81-
geometry.scale(-1, 1, 1); // Flip normals inward
76+
// Optimized Sphere Geometry
77+
const geometry = new THREE.SphereGeometry(500, 32, 16);
78+
geometry.scale(-1, 1, 1);
8279

83-
// Texture Loading Fix: Add success logging and force update
80+
// Robust Texture Loading System
8481
const textureLoader = new THREE.TextureLoader();
8582
textureLoader.load(
8683
'img/er.png',
8784
(texture) => {
88-
console.log('Texture loaded successfully');
85+
console.log('360° Environment Loaded');
8986
const material = new THREE.MeshBasicMaterial({
9087
map: texture,
9188
side: THREE.BackSide,
9289
transparent: true
9390
});
94-
const sphere = new THREE.Mesh(geometry, material);
95-
scene.add(sphere);
96-
needsUpdate = true; // Force render after load
91+
scene.add(new THREE.Mesh(geometry, material));
92+
needsUpdate = true;
9793
},
9894
undefined,
9995
(err) => {
100-
console.error('Texture error:', err);
101-
// Visible fallback material
96+
console.error('Texture Error:', err);
10297
const material = new THREE.MeshBasicMaterial({
103-
color: 0xFF0000, // Bright red for visibility
98+
color: 0x404040,
10499
side: THREE.BackSide
105100
});
106101
scene.add(new THREE.Mesh(geometry, material));
107102
needsUpdate = true;
108103
}
109104
);
110105

111-
// Debug Helpers: Add axes visualization
112-
scene.add(new THREE.AxesHelper(50)); // Red=X, Green=Y, Blue=Z
113-
114-
// VR Configuration (Temporarily Disabled)
115-
// renderer.xr.enabled = true;
116-
// renderer.xr.setReferenceSpaceType('local');
117-
// document.body.appendChild(VRButton.createButton(renderer));
118-
119-
// Controls (Mouse/Touch)
106+
// Interactive Controls
120107
const controls = new THREE.OrbitControls(camera, renderer.domElement);
121108
controls.enableZoom = false;
122-
controls.enablePan = false;
123109
controls.enableDamping = true;
110+
controls.dampingFactor = 0.05;
124111
controls.rotateSpeed = -0.25;
125112

126-
// Window resize handler
113+
// Adaptive Rendering System
114+
let needsUpdate = true;
115+
renderer.setAnimationLoop(() => {
116+
if (needsUpdate || controls.isRotating) {
117+
controls.update();
118+
renderer.render(scene, camera);
119+
needsUpdate = false;
120+
}
121+
});
122+
123+
// Responsive Layout Handling
127124
window.addEventListener('resize', () => {
128125
camera.aspect = window.innerWidth / window.innerHeight;
129126
camera.updateProjectionMatrix();
130127
renderer.setSize(window.innerWidth, window.innerHeight);
128+
needsUpdate = true;
131129
});
132130

133-
// Animation Loop Fix: Ensure continuous updates
134-
let needsUpdate = true;
135-
renderer.setAnimationLoop(() => {
136-
controls.update();
137-
renderer.render(scene, camera);
138-
});
139-
140-
// Cleanup on page unload
131+
// Resource Cleanup
141132
window.addEventListener('beforeunload', () => {
142133
clearInterval(simulationInterval);
143134
renderer.dispose();
135+
controls.dispose();
136+
textureLoader = null;
144137
});
145138
});

0 commit comments

Comments
 (0)