提交 28236ba1 编写于 作者: M Mr.doob

GUI: Import JSON Geometry, OBJ, COLLADA and VTK.

上级 2d225e1c
因为 它太大了无法显示 source diff 。你可以改为 查看blob
此差异已折叠。
因为 它太大了无法显示 source diff 。你可以改为 查看blob
...@@ -298,6 +298,7 @@ THREE.OBJLoader.prototype = { ...@@ -298,6 +298,7 @@ THREE.OBJLoader.prototype = {
} }
geometry.computeCentroids(); geometry.computeCentroids();
// geometry.computeFaceNormals();
group.add( new THREE.Mesh( geometry, new THREE.MeshLambertMaterial() ) ); group.add( new THREE.Mesh( geometry, new THREE.MeshLambertMaterial() ) );
......
...@@ -20,6 +20,10 @@ ...@@ -20,6 +20,10 @@
<body> <body>
<script type="text/javascript" src="../build/Three.js"></script> <script type="text/javascript" src="../build/Three.js"></script>
<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>
<script type="text/javascript" src="js/libs/signals.min.js"></script> <script type="text/javascript" src="js/libs/signals.min.js"></script>
...@@ -61,6 +65,88 @@ ...@@ -61,6 +65,88 @@
menubar.setHeight( '32px' ); menubar.setHeight( '32px' );
document.body.appendChild( menubar.dom ); document.body.appendChild( menubar.dom );
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 );
// //
......
...@@ -5,6 +5,8 @@ var Viewport = function ( signals ) { ...@@ -5,6 +5,8 @@ var Viewport = function ( signals ) {
// //
var objects = [];
var sceneHelpers = new THREE.Scene(); var sceneHelpers = new THREE.Scene();
var size = 500, step = 25; var size = 500, step = 25;
...@@ -69,7 +71,7 @@ var Viewport = function ( signals ) { ...@@ -69,7 +71,7 @@ var Viewport = function ( signals ) {
projector.unprojectVector( vector, camera ); projector.unprojectVector( vector, camera );
var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() ); var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() );
var intersects = ray.intersectObjects( scene.children ); var intersects = ray.intersectObjects( objects );
if ( intersects.length ) { if ( intersects.length ) {
...@@ -89,6 +91,14 @@ var Viewport = function ( signals ) { ...@@ -89,6 +91,14 @@ var Viewport = function ( signals ) {
signals.objectAdded.add( function ( object ) { signals.objectAdded.add( function ( object ) {
THREE.SceneUtils.traverseHierarchy( object, function ( child ) {
objects.push( child );
} );
objects.push( object );
scene.add( object ); scene.add( object );
render(); render();
...@@ -152,6 +162,8 @@ var Viewport = function ( signals ) { ...@@ -152,6 +162,8 @@ var Viewport = function ( signals ) {
selectionBox.geometry.vertices[ 7 ].y = geometry.boundingBox.min.y; selectionBox.geometry.vertices[ 7 ].y = geometry.boundingBox.min.y;
selectionBox.geometry.vertices[ 7 ].z = geometry.boundingBox.max.z; selectionBox.geometry.vertices[ 7 ].z = geometry.boundingBox.max.z;
selectionBox.geometry.computeBoundingSphere();
selectionBox.geometry.verticesNeedUpdate = true; selectionBox.geometry.verticesNeedUpdate = true;
selectionBox.position.copy( object.position ); selectionBox.position.copy( object.position );
......
...@@ -46,6 +46,7 @@ COMMON_FILES = [ ...@@ -46,6 +46,7 @@ COMMON_FILES = [
'loaders/BinaryLoader.js', 'loaders/BinaryLoader.js',
'loaders/ImageLoader.js', 'loaders/ImageLoader.js',
'loaders/JSONLoader.js', 'loaders/JSONLoader.js',
'loaders/GeometryLoader.js',
'loaders/SceneLoader.js', 'loaders/SceneLoader.js',
'loaders/TextureLoader.js', 'loaders/TextureLoader.js',
'materials/Material.js', 'materials/Material.js',
...@@ -175,6 +176,7 @@ CANVAS_FILES = [ ...@@ -175,6 +176,7 @@ CANVAS_FILES = [
'loaders/BinaryLoader.js', 'loaders/BinaryLoader.js',
'loaders/ImageLoader.js', 'loaders/ImageLoader.js',
'loaders/JSONLoader.js', 'loaders/JSONLoader.js',
'loaders/GeometryLoader.js',
'loaders/SceneLoader.js', 'loaders/SceneLoader.js',
'loaders/TextureLoader.js', 'loaders/TextureLoader.js',
'materials/Material.js', 'materials/Material.js',
...@@ -238,6 +240,7 @@ WEBGL_FILES = [ ...@@ -238,6 +240,7 @@ WEBGL_FILES = [
'loaders/BinaryLoader.js', 'loaders/BinaryLoader.js',
'loaders/ImageLoader.js', 'loaders/ImageLoader.js',
'loaders/JSONLoader.js', 'loaders/JSONLoader.js',
'loaders/GeometryLoader.js',
'loaders/SceneLoader.js', 'loaders/SceneLoader.js',
'loaders/TextureLoader.js', 'loaders/TextureLoader.js',
'materials/Material.js', 'materials/Material.js',
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册