index.html 4.2 KB
Newer Older
M
Mr.doob 已提交
1 2
<!DOCTYPE html>
<html lang="en">
3 4 5 6
	<head>
		<title>three.js gui</title>
		<style>
			body {
M
Mr.doob 已提交
7 8
				font-family: Arial, sans-serif;
				font-size: 14px;
9 10 11 12
				margin: 0;
				overflow: hidden;
			}

M
Mr.doob 已提交
13 14 15
			hr {
				border: 0px;
				border-top: 1px solid #ccc;
16 17 18 19 20 21 22
			}

		</style>
	</head>
	<body>

		<script type="text/javascript" src="../build/Three.js"></script>
23 24 25 26
		<script type="text/javascript" src="../examples/js/loaders/ColladaLoader.js"></script>
		<script type="text/javascript" src="../examples/js/loaders/OBJLoader.js"></script>
		<script type="text/javascript" src="../examples/js/loaders/UTF8Loader.js"></script>
		<script type="text/javascript" src="../examples/js/loaders/VTKLoader.js"></script>
27 28 29 30

		<script type="text/javascript" src="js/libs/signals.min.js"></script>

		<script type="text/javascript" src="js/UI.js"></script>
M
Mr.doob 已提交
31
		<script type="text/javascript" src="js/ui/Viewport.js"></script>
32 33
		<script type="text/javascript" src="js/ui/SideBar.js"></script>
		<script type="text/javascript" src="js/ui/SideBar.Properties.js"></script>
34
		<script type="text/javascript" src="js/ui/MenuBar.js"></script>
35 36 37

		<script>

38
			var SIGNALS = signals;
39

40 41 42 43
			var signals = {

				objectAdded: new SIGNALS.Signal(),
				objectSelected: new SIGNALS.Signal(),
M
Mr.doob 已提交
44
				objectChanged: new SIGNALS.Signal(),
45
				windowResize: new SIGNALS.Signal()
46 47 48

			};

49 50
			//

51
			var viewport = new Viewport( signals );
M
Mr.doob 已提交
52
			viewport.setTop( '32px' );
53 54
			viewport.setWidth( '-webkit-calc(100% - 300px)', '-moz-calc(100% - 300px)', 'calc(100% - 300px)' );
			viewport.setHeight( '-webkit-calc(100% - 32px)', '-moz-calc(100% - 32px)', 'calc(100% - 32px)' );
M
Mr.doob 已提交
55
			document.body.appendChild( viewport.dom );
56

57 58 59 60 61
			var sidebar = new SideBar( signals );
			sidebar.setLeft( '-webkit-calc(100% - 300px)', '-moz-calc(100% - 300px)', 'calc(100% - 300px)' );
			sidebar.setTop( '32px' );
			sidebar.setHeight( '-webkit-calc(100% - 32px)', '-moz-calc(100% - 32px)', 'calc(100% - 32px)' );
			document.body.appendChild( sidebar.dom );
62

63 64 65 66 67
			var menubar = new MenuBar( signals );
			menubar.setWidth( '100%' );
			menubar.setHeight( '32px' );
			document.body.appendChild( menubar.dom );

68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
			document.addEventListener( 'drop', function ( event ) {

				event.preventDefault();

				var file = event.dataTransfer.files[ 0 ];
				var extension = file.name.split( '.' )[1].toLowerCase();
				var reader = new FileReader();

				reader.onload = function ( event ) {

					var contents = event.target.result;

					switch ( extension ) {

						case 'dae':

							var parser = new DOMParser();
							var xml = parser.parseFromString( contents, 'text/xml' );

							// TODO: Update ColladaLoader

							var loader = new THREE.ColladaLoader();
							loader.parse( xml, function ( collada ) {

								signals.objectAdded.dispatch( collada.scene );

							} );

							break;

						case 'js':

							var loader = new THREE.GeometryLoader();

							var geometry = loader.parse( JSON.parse( contents ) );
							var material = new THREE.MeshBasicMaterial( { color: 0xffffff, wireframe: true } );
							var mesh = new THREE.Mesh( geometry, material );

							signals.objectAdded.dispatch( mesh );

							break;

						case 'obj':

							var loader = new THREE.OBJLoader();

							var object = loader.parse( contents );

							signals.objectAdded.dispatch( object );

							break;

						case 'utf8':

							// TODO

							break;

						case 'vtk':

							var loader = new THREE.VTKLoader();

							console.log( loader );

							var geometry = loader.parse( contents );
							var material = new THREE.MeshBasicMaterial( { color: 0xffffff, wireframe: true } );
							var mesh = new THREE.Mesh( geometry, material );

							console.log( mesh );

							signals.objectAdded.dispatch( mesh );

							break;

					}

				};

				reader.readAsText( file );

			}, false );

150

151 152 153 154 155 156 157 158 159
			//

			var geometry = new THREE.SphereGeometry( 75, 25, 15 );
			var material = new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff } );
			var mesh = new THREE.Mesh( geometry, material );

			signals.objectAdded.dispatch( mesh );

			//
160

M
Mr.doob 已提交
161
			var onWindowResize = function ( event ) {
162

163
				signals.windowResize.dispatch();
164

M
Mr.doob 已提交
165
			};
166

M
Mr.doob 已提交
167
			onWindowResize();
168

M
Mr.doob 已提交
169
			window.addEventListener( 'resize', onWindowResize, false );
170 171 172 173

		</script>
	</body>
</html>