diff options
| author | Ramtin Naraghi | 2021-01-24 12:41:07 +0100 |
|---|---|---|
| committer | Ramtin Naraghi | 2021-01-24 12:41:07 +0100 |
| commit | 6b8872e162f44cb469a0dc4cdbb30981912a4ee3 (patch) | |
| tree | 8ff44591990b5b21da35d30d6b4ab42f59aa8594 /Scripts/main.js | |
| parent | f0c64cdbb2ad2e1ae9a110e1d291db57c5b8d85d (diff) | |
| download | cloth_sim-6b8872e162f44cb469a0dc4cdbb30981912a4ee3.tar.gz cloth_sim-6b8872e162f44cb469a0dc4cdbb30981912a4ee3.zip | |
Code refactoring
Diffstat (limited to 'Scripts/main.js')
| -rw-r--r-- | Scripts/main.js | 85 |
1 files changed, 47 insertions, 38 deletions
diff --git a/Scripts/main.js b/Scripts/main.js index 5f6595e..01e3283 100644 --- a/Scripts/main.js +++ b/Scripts/main.js @@ -1,12 +1,22 @@ import { Face, Spring, Cloth } from './cloth.js';
+function addLights(scene){
+
+ scene.add( new THREE.AmbientLight( 0x222222 ) );
-/**
- * rendering
- * Einheiten konsistent
- * Wind
- * evtl. an Stoff ziehen
- */
+ const light1 = new THREE.PointLight( 0xffffff, 1, 50 );
+ light1.position.set( 15, 1, 40 );
+ scene.add( light1 );
+
+ const light2 = new THREE.PointLight( 0xffffff, 1, 50 );
+ light2.position.set( -15, 0, 40 );
+ scene.add( light2 );
+
+ const light3 = new THREE.PointLight( 0xffffff, 1, 50 );
+ light3.position.set( 0, -1, 40 );
+ scene.add( light3 );
+
+}
/**
* setup THREE JS Scene, Camera and Renderer
@@ -27,7 +37,7 @@ function setup_scene(canvasSpace) { /** position camera */
camera.position.y = 5;
camera.position.z = 10;
-
+ addLights(scene);
return [scene, camera, renderer];
}
@@ -55,27 +65,13 @@ function init() { cloth.createBasic(10, 10, 10, 10);
//cloth.createDebugMesh(scene);
- //const material = new THREE.MeshBasicMaterial({ color: 0x0000ff, side: THREE.DoubleSide });
+
const material = new THREE.MeshStandardMaterial({ color: 0xC70039, side: THREE.DoubleSide, flatShading: false });
const mesh = new THREE.Mesh(cloth.geometry, material);
- //const mesh = new THREE.WireframeGeometry(cloth.geometry);
- //const line = new THREE.LineSegments(mesh);
- //line.material.depthTest = false;
- //line.material.opacity = 0.25;
- //line.material.transparent = true;
+
scene.add(mesh);
- scene.add( new THREE.AmbientLight( 0x222222 ) );
- const light1 = new THREE.PointLight( 0xffffff, 1, 50 );
- light1.position.set( 15, 1, 40 );
- scene.add( light1 );
- const light2 = new THREE.PointLight( 0xffffff, 1, 50 );
- light2.position.set( -15, 0, 40 );
- scene.add( light2 );
- const light3 = new THREE.PointLight( 0xffffff, 1, 50 );
- light3.position.set( 0, -1, 40 );
- scene.add( light3 );
let raycaster = new THREE.Raycaster();
let intersects;
@@ -129,6 +125,33 @@ function init() { mousePos.x = evt.clientX;
mousePos.y = evt.clientY;
+ cloth.mouseMove(calculateMousePosToWorld(evt));
+ };
+
+ /**
+ * Prevent context menu while blowing wind
+ */
+ canvas.addEventListener('contextmenu', function(evt) {
+ evt.preventDefault();
+ }, false);
+
+
+ canvas.onmousedown = (evt) => {
+
+ // Check mouse click
+ rightMousePressed = evt.button == 2;
+
+ if(intersects.length > 0 && evt.button == 0){
+ cloth.mousePress(intersects);
+ }
+ }
+
+ canvas.onmouseup = (evt) => {
+ cloth.mouseRelease();
+ rightMousePressed = false;
+ }
+
+ function calculateMousePosToWorld(evt){
var vec = new THREE.Vector3(); // create once and reuse
var pos = new THREE.Vector3(); // create once and reuse
@@ -144,20 +167,6 @@ function init() { var distance = - camera.position.z / vec.z;
pos.copy( camera.position ).add( vec.multiplyScalar( distance ) );
-
- cloth.mouseMove(pos);
- };
-
- canvas.onmousedown = (evt) => {
- rightMousePressed = evt.button == 2;
-
- if(intersects.length > 0 && evt.button == 0){
- cloth.mousePress(intersects);
- }
- }
-
- canvas.onmouseup = (evt) => {
- cloth.mouseRelease();
- rightMousePressed = false;
+ return pos;
}
}
\ No newline at end of file |
