X-Git-Url: https://gitweb.ps.run/cloth_sim/blobdiff_plain/8a3364b0cd057fcfb7f89da112b9032fee76e403..8bf51c36d322cb8d4f099d3475563ee4e520ab92:/Scripts/main.js diff --git a/Scripts/main.js b/Scripts/main.js index 4d87337..5e68a4f 100644 --- a/Scripts/main.js +++ b/Scripts/main.js @@ -1,5 +1,4 @@ -//import { } from './cloth.js'; -//import { OrbitControls } from './OrbitControls.js'; + function addLights(scene){ scene.add( new THREE.AmbientLight( 0x222222 ) ); @@ -75,13 +74,26 @@ function init() { const canvasSpace = 200; /** Constant Frame Time */ - const frameTime = 1000.0 / 60.0; + const frameTime = 1000.0 / 200.0; /** Setup scene */ let [scene, camera, renderer] = setup_scene(canvasSpace); - - // Add Cloth Initialization + const loader = new THREE.TextureLoader(); + //Red color: 0xC70039 + + const cloth = new Cloth(1, 0.5, 20, 20); + const clothGeometry = cloth.generateGeometry(); + const clothMaterial = new THREE.MeshStandardMaterial({ map: loader.load('Textures/hsrm.jpg'), color: 0xffffff, side: THREE.DoubleSide, flatShading: false}); + //const clothMaterial = new THREE.MeshStandardMaterial({ color: 0xC70039, side: THREE.DoubleSide, flatShading: false }); + const clothMesh = new THREE.Mesh(clothGeometry, clothMaterial); + scene.add(clothMesh); + + document.getElementById("windToggle").checked = options.wind; + document.getElementById("windToggle").onchange = (e) => { + options.wind = e.target.checked; + }; + let raycaster = new THREE.Raycaster(); let intersects; let rightMousePressed; @@ -90,7 +102,9 @@ function init() { * @param {number} dt - time passed since last frame in ms */ function animate(dt) { - // simulate cloth + cloth.simulate(dt / 1000); + + cloth.updateGeometry(clothGeometry); raycaster.setFromCamera( new THREE.Vector2((mousePos.x / w) * 2 - 1, ((h - mousePos.y) / h) * 2 - 1), camera );