3D Viewer Test
Test algorithm
by chilipeppr
HTML
<script src="http://www.chilipeppr.com/js/require.js"></script>
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<div id="com-chilipeppr-widget-3dviewer" class="panel panel-default" style="float:left;">
<div class="panel-heading well">
<div class="btn-toolbar pull-right" role="toolbar" >
<div class="btn-group" data-style="padding-right:6px;">
<button type="button" class="btn btn-xs btn-default com-chilipeppr-widget-3d-menu-viewextents" data-container="body" data-toggle="popover" data-placement="auto" data-content="View extents of GCode object" data-trigger="hover" data-delay="800"> <span class="glyphicon glyphicon-eye-open"></span>
</button>
</div>
<div class="btn-group" data-style="padding-right:6px;">
</div>
<div class="btn-group">
<button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown"> <span class="caret"></span></button>
<ul id="com-chilipeppr-widget-3dviewer-dropdown" class="dropdown-menu dropdown-menu-right" role="menu">
</ul>
</div>
</div>
<span class="panel-title" style="padding-right:10px;" data-toggle="popover" data-trigger="hover" data-placement="auto" data-content="">3D Viewer</span>
</div>
<div id="com-chilipeppr-widget-3dviewer-body" class="panel-body">
<!-- WebGL rendering area -->
<div id="com-chilipeppr-widget-3dviewer-renderArea">
<div class="data-details">Drag and Drop Gcode Here...</div>
</div>
<div id="warningArea">
<div class="alert alert-warning alert-dismissable hidden">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>G2/G3 arcs only rendered as straight lines. They are yellow to show where actual positioning in your CNC will differ from 3D rendering. If anyone wants to fork...
CSS
#com-chilipeppr-widget-3dviewer .panel-heading {
z-index:1;
position:relative;
}
#com-chilipeppr-widget-3dviewer-body {
/* height: 350px; */
padding:0;
margin:0;
position: relative;
border:0px solid red;
background-color: blue;
}
#com-chilipeppr-widget-3dviewer-renderArea {
position: fixed;
left: 0;
right: 0;
bottom: 0;
top: 0;
background-color: #000000;
/* z-index:0; */
}
button.com-chilipeppr-widget-3d-menu-samplerun, button.com-chilipeppr-widget-3d-menu-samplerunstop {
/* color: blue; */
}
#com-chilipeppr-widget-3dviewer .disabled .glyphicon {
color: #dddddd;
}
#com-chilipeppr-widget-3dviewer #warningArea {
position: absolute;
top:0;
left:0;
padding: 10px;
font-size: 9px;
color: white;
}
#com-chilipeppr-widget-3dviewer-infoArea {
position: absolute;
bottom:0;
left:0;
padding: 10px;
font-size: 9px;
color: #333333;
/* background-color: black; */
}
#com-chilipeppr-widget-3dviewer-infoArea .info {
position: absolute;
bottom:0;
left:0;
color: blue;
background-color:red;
}
#com-chilipeppr-widget-3dviewer-renderArea .data-details {
position: absolute;
bottom:0;
left:10;
/* background-color: transparent; */
color: #333333;
padding: 10px;
font-size: 9px;
}
JavaScript
requirejs.config({
paths: {
Three: 'http://threejs.org/build/three.min',
ThreeTrackballControls: '//threejs.org/examples/js/controls/TrackballControls',
ThreeOrbitControls: '//threejs.org/examples/js/controls/OrbitControls',
ThreeHelvetiker: 'http://chilipeppr.com/js/three/threehelvetiker',
},
shim: {
ThreeTrackballControls: ['Three'],
}
});
cprequire_test(['inline:com-chilipeppr-widget-3dviewertest'], function (threed) {
console.log("Running 3dviewer test");
threed.init();
console.log("3d viewer test initted");
} /*end_test*/ );
cpdefine('inline:com-chilipeppr-widget-3dviewertest', ['chilipeppr_ready', 'Three', 'ThreeTrackballControls'], function () {
return {
id: 'com-chilipeppr-widget-3dviewertest',
url: "http://fiddle.jshell.net/chilipeppr/y3HRF/show/light/",
fiddleurl: "http://jsfiddle.net/chilipeppr/y3HRF/",
name: "3D Viewer Test",
desc: "Test",
publish: {
},
subscribe: {
},
foreignSubscribe: {
},
//foreignPublish: {
//},
scene: null,
object: null,
camera: null,
controls: null,
wantAnimate: true, // we automatically timeout rendering to save on cpu
init: function () {
this.scene = this.createScene($('#com-chilipeppr-widget-3dviewer-renderArea'));
// setup toolbar buttons
this.btnSetup();
//this.forkSetup();
this.drawPlane();
},
exaggerateMult: 4,
drawPlane: function() {
// plane
/*
var geometry = new THREE.PlaneGeometry( 5, 20 );
var material = new THREE.MeshBasicMaterial( {color: 0xffff00, side: THREE.DoubleSide} );
var plane = new THREE.Mesh( geometry, material );
plane.overdraw = true;
this.sceneAdd(plane);
*/
...