-
Amira Abdel-Rahman authoredAmira Abdel-Rahman authored
indexHierarchical.html 6.19 KiB
<!DOCTYPE html>
<html lang="en">
<head>
<title>MetaVoxel</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<!-- <link type="text/css" rel="stylesheet" href="main.css"> -->
<style>
body {
background-color: #f0f0f0;
color: #444;
}
a {
color: #08f;
}
</style>
<link rel="stylesheet" type="text/css" href="style.css" media="screen"/>
</head>
<body>
<div id="threejs">
<div class="header1">
<i> Hierarchical Simulation</i>
<!-- Three.js -->
</div>
<div id="webgl"></div>
</div>
<div id="graph">
<div class="header2">
<div class="dragbar"></div>
<i>. Detailed Simulation</i>
</div>
<div class="dragbar"></div>
<div id="webgl1"></div>
</div>
<div class="footer1">
<strong>left-click left window</strong>: orbit, <strong>right-click</strong>: zoom
</div>
<div class="footer2" id="footer2">
<!-- update change to more instructions/feedback -->
<i> Loading RhinoScript</i>
</div>
<!-- <div id="container"></div>
<div id="container"></div> -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script>
<!-- <script src="./lib/require.js"></script> -->
<script src="../lib/three.min.js"></script>
<script src="../lib/stats.js"></script>
<script src="../lib/dat.gui.js"></script>
<script src="../lib/SVGRenderer.js"></script>
<script src="../lib/DragControls.js"></script>
<script src="../lib/OrbitControls.js"></script>
<script src="../lib/TransformControls.js"></script>
<script src="../lib/js-colormaps.js"></script>
<script src="../lib/LineSegments2.js"></script>
<script src="../lib/LineSegmentsGeometry.js"></script>
<script src="../lib/Line2.js"></script>
<script src="../lib/LineMaterial.js"></script>
<script src="../lib/LineGeometry.js"></script>
<script src="../lib/GeometryUtils.js"></script>
<script src="../visualization/utils.js"></script>
<script src="../visualization/geometry.js"></script>
<!-- <script src="./beamFea.js"></script>
<script src="./geometry.js"></script> -->
<script src="../visualization/main.js"></script>
<script src="../fea/parallelFea.js"></script>
<script type="text/javascript" src="./rhino3dm.js"></script>
<!-- <script src="../visualization/draw.js"></script> -->
<script>
////////////////////////dragbar///////////////
$('.dragbar').mousedown(function(e){
e.preventDefault();
$(document).mousemove(function(e){
// $('#position').html(e.pageX +', '+ e.pageY);
$('#threejs').css("width",e.pageX+2);
$('#webgl').css("width",e.pageX+2);
$('#graph').css("left",e.pageX+2);
// $('#json').css("left",e.pageX+2);
$('.footer1').css("width",e.pageX+2);
$('.footer2').css("left",e.pageX+2);
})
onWindowResize();//todo change location
});
$(document).mouseup(function(e){
$(document).unbind('mousemove');
onWindowResize();//todo change location
});
//////////////////////////////////////////////////////////////////
/////////////////seemless mirror control/////////////////////
$('#graph').on('click mousedown touchstart', function(){
three.controls = new THREE.OrbitControls( camera, three.renderer.domElement );
})
$('#threejs').on('click mousedown touchstart', function(){
three1.controls = new THREE.OrbitControls( camera, three1.renderer.domElement );
})
var three; //todo change location
var three1; //todo change location
var setup;
var setup1;
rhino3dm().then(async m => {
console.log('Loaded rhino3dm.');
document.getElementById("footer2").innerHTML = "Loaded rhino3dm.";
_rhino3dm = m; // global
var latticeSize=4;
var voxelSize=5;
setup=JSON.parse(JSON.stringify(setupEmpty));
setup.hierarchical=false;
setup.voxelSize=voxelSize;
var material={
area:1.0,
density:0.028,
stiffness:10000000
};
latticeSetup(setup,latticeSize,voxelSize,createVoxel,{x:0,y:-400,z:0},material);
setup.viz.colorMaps=[YlGnBu,coolwarm, winter ,jet];
setup.viz.minStress=10e6;
setup.viz.maxStress=-10e6;
setup.viz.exaggeration=10e3;
setup.solve=solveParallel;
setup.numTimeSteps=100;
three= new threejs(setup,"webgl1","graph");
three.init();
////////////////////////////////////
setup1=JSON.parse(JSON.stringify(setupEmpty));
setup1.hierarchical=true;
setup1.voxelSize=voxelSize;
latticeSetup(setup1,latticeSize,voxelSize,createHierarchalVoxel,{x:0,y:-400,z:0},material);
setup1.viz.colorMaps=[YlGnBu,coolwarm, winter ,jet];
setup1.viz.minStress=10e6;
setup1.viz.maxStress=-10e6;
setup1.viz.exaggeration=10e3;
setup1.solve=solveParallel;
three1= new threejs(setup1,"webgl","threejs");
three1.init();
gui.add(three.setup,"numTimeSteps", 0, 200).listen();
gui.add(three.setup,"solve");
document.getElementById("footer2").innerHTML = "Press solve for structure simulation.";
// more stuff
});
function solveParallel(){
document.getElementById("footer2").innerHTML = "Running...";
var numTimeSteps=250;
/////////////////////////////////////////////////////
var dt=0.0251646; //?? todo change to recommended step
setTimeout(function() {
simulateParallel(setup,three.setup.numTimeSteps,dt);
simulateParallel(setup1,three.setup.numTimeSteps,dt);
}, 1);
}
</script>
</body>
</html>