提交 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 = {
}
geometry.computeCentroids();
// geometry.computeFaceNormals();
group.add( new THREE.Mesh( geometry, new THREE.MeshLambertMaterial() ) );
......
......@@ -20,6 +20,10 @@
<body>
<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>
......@@ -61,6 +65,88 @@
menubar.setHeight( '32px' );
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 ) {
//
var objects = [];
var sceneHelpers = new THREE.Scene();
var size = 500, step = 25;
......@@ -69,7 +71,7 @@ var Viewport = function ( signals ) {
projector.unprojectVector( vector, camera );
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 ) {
......@@ -89,6 +91,14 @@ var Viewport = function ( signals ) {
signals.objectAdded.add( function ( object ) {
THREE.SceneUtils.traverseHierarchy( object, function ( child ) {
objects.push( child );
} );
objects.push( object );
scene.add( object );
render();
......@@ -152,6 +162,8 @@ var Viewport = function ( signals ) {
selectionBox.geometry.vertices[ 7 ].y = geometry.boundingBox.min.y;
selectionBox.geometry.vertices[ 7 ].z = geometry.boundingBox.max.z;
selectionBox.geometry.computeBoundingSphere();
selectionBox.geometry.verticesNeedUpdate = true;
selectionBox.position.copy( object.position );
......
......@@ -46,6 +46,7 @@ COMMON_FILES = [
'loaders/BinaryLoader.js',
'loaders/ImageLoader.js',
'loaders/JSONLoader.js',
'loaders/GeometryLoader.js',
'loaders/SceneLoader.js',
'loaders/TextureLoader.js',
'materials/Material.js',
......@@ -175,6 +176,7 @@ CANVAS_FILES = [
'loaders/BinaryLoader.js',
'loaders/ImageLoader.js',
'loaders/JSONLoader.js',
'loaders/GeometryLoader.js',
'loaders/SceneLoader.js',
'loaders/TextureLoader.js',
'materials/Material.js',
......@@ -238,6 +240,7 @@ WEBGL_FILES = [
'loaders/BinaryLoader.js',
'loaders/ImageLoader.js',
'loaders/JSONLoader.js',
'loaders/GeometryLoader.js',
'loaders/SceneLoader.js',
'loaders/TextureLoader.js',
'materials/Material.js',
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册