index.html 4.4 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 34
		<script type="text/javascript" src="js/ui/Sidebar.js"></script>
		<script type="text/javascript" src="js/ui/Sidebar.Outliner.js"></script>
		<script type="text/javascript" src="js/ui/Sidebar.Properties.js"></script>
35
		<script type="text/javascript" src="js/ui/MenuBar.js"></script>
36 37 38

		<script>

39
			var SIGNALS = signals;
40

41 42 43 44
			var signals = {

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

			};

50 51
			//

52
			var viewport = new Viewport( signals );
M
Mr.doob 已提交
53
			viewport.setTop( '32px' );
54 55
			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 已提交
56
			document.body.appendChild( viewport.dom );
57

58
			var sidebar = new Sidebar( signals );
59 60 61 62
			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 );
63

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

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
			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 );
94
								signals.objectSelected.dispatch( collada.scene );
95 96 97 98 99 100 101 102 103 104 105 106 107 108

							} );

							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 );
109
							signals.objectSelected.dispatch( mesh );
110 111 112 113 114 115 116 117 118 119

							break;

						case 'obj':

							var loader = new THREE.OBJLoader();

							var object = loader.parse( contents );

							signals.objectAdded.dispatch( object );
120
							signals.objectSelected.dispatch( object );
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138

							break;

						case 'utf8':

							// TODO

							break;

						case 'vtk':

							var loader = new THREE.VTKLoader();

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

							signals.objectAdded.dispatch( mesh );
139
							signals.objectSelected.dispatch( mesh );
140 141 142 143 144 145 146 147 148 149 150

							break;

					}

				};

				reader.readAsText( file );

			}, false );

151

152 153 154 155 156 157 158
			//

			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 );
159
			signals.objectSelected.dispatch( mesh );
160 161

			//
162

M
Mr.doob 已提交
163
			var onWindowResize = function ( event ) {
164

165
				signals.windowResize.dispatch();
166

M
Mr.doob 已提交
167
			};
168

M
Mr.doob 已提交
169
			onWindowResize();
170

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

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