提交 2269607b 编写于 作者: M Mr.doob

Added Geometry2Loader and Geometry2Exporter.

上级 3ade043c
......@@ -35,6 +35,7 @@
<script src="../examples/js/BufferGeometryUtils.js"></script>
<script src="../examples/js/exporters/BufferGeometryExporter.js"></script>
<script src="../examples/js/exporters/Geometry2Exporter.js"></script>
<script src="../examples/js/exporters/GeometryExporter.js"></script>
<script src="../examples/js/exporters/MaterialExporter.js"></script>
<script src="../examples/js/exporters/ObjectExporter.js"></script>
......
......@@ -91,6 +91,10 @@ Menubar.File = function ( editor ) {
exportGeometry( THREE.BufferGeometryExporter );
} else if ( geometry instanceof THREE.Geometry2 ) {
exportGeometry( THREE.Geometry2Exporter );
} else if ( geometry instanceof THREE.Geometry ) {
exportGeometry( THREE.GeometryExporter );
......@@ -151,6 +155,7 @@ Menubar.File = function ( editor ) {
var output;
if ( exporter instanceof THREE.BufferGeometryExporter ||
exporter instanceof THREE.Geometry2Exporter ||
exporter instanceof THREE.GeometryExporter ) {
output = JSON.stringify( exporter.parse( object.geometry ), null, '\t' );
......
......@@ -313,6 +313,7 @@ Sidebar.Material = function ( editor ) {
if ( object instanceof THREE.Sprite ) objectHasUvs = true;
if ( geometry instanceof THREE.Geometry && geometry.faceVertexUvs[ 0 ].length > 0 ) objectHasUvs = true;
if ( geometry instanceof THREE.Geometry2 && geometry.uvs.length > 0 ) objectHasUvs = true;
if ( geometry instanceof THREE.BufferGeometry && geometry.attributes.uv !== undefined ) objectHasUvs = true;
if ( material ) {
......
/**
* @author mrdoob / http://mrdoob.com/
*/
THREE.Geometry2Exporter = function () {};
THREE.Geometry2Exporter.prototype = {
constructor: THREE.Geometry2Exporter,
parse: function ( geometry ) {
var output = {
metadata: {
version: 4.0,
type: 'Geometry2',
generator: 'Geometry2Exporter'
}
};
var attributes = [ 'vertices', 'normals', 'uvs' ];
for ( var key in attributes ) {
var attribute = attributes[ key ];
var typedArray = geometry[ attribute ];
var array = [];
for ( var i = 0, l = typedArray.length; i < l; i ++ ) {
array[ i ] = typedArray[ i ];
}
output[ attribute ] = array;
}
var boundingSphere = geometry.boundingSphere;
if ( boundingSphere !== null ) {
output.boundingSphere = {
center: boundingSphere.center.toArray(),
radius: boundingSphere.radius
}
}
return output;
}
};
......@@ -24,6 +24,7 @@ THREE.ObjectExporter.prototype = {
var geometries = {};
var geometryExporter = new THREE.GeometryExporter();
var geometry2Exporter = new THREE.Geometry2Exporter();
var bufferGeometryExporter = new THREE.BufferGeometryExporter();
var parseGeometry = function ( geometry ) {
......@@ -120,6 +121,13 @@ THREE.ObjectExporter.prototype = {
delete data.data.metadata;
} else if ( geometry instanceof THREE.Geometry2 ) {
data.type = 'Geometry2';
data.data = geometry2Exporter.parse( geometry );
delete data.data.metadata;
} else if ( geometry instanceof THREE.Geometry ) {
data.type = 'Geometry';
......
......@@ -2,15 +2,15 @@
* @author mrdoob / http://mrdoob.com/
*/
THREE.GeometryLoader = function ( manager ) {
THREE.Geometry2Loader = function ( manager ) {
this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;
};
THREE.GeometryLoader.prototype = {
THREE.Geometry2Loader.prototype = {
constructor: THREE.GeometryLoader,
constructor: THREE.Geometry2Loader,
load: function ( url, onLoad, onProgress, onError ) {
......@@ -34,7 +34,28 @@ THREE.GeometryLoader.prototype = {
parse: function ( json ) {
var geometry = new THREE.Geometry2( json.vertices.length / 3 );
var attributes = [ 'vertices', 'normals', 'uvs' ];
var boundingSphere = json.boundingSphere;
for ( var key in attributes ) {
var attribute = attributes[ key ];
geometry[ attribute ].set( json[ attribute ] );
}
if ( boundingSphere !== undefined ) {
geometry.boundingSphere = new THREE.Sphere(
new THREE.Vector3().fromArray( boundingSphere.center !== undefined ? boundingSphere.center : [ 0, 0, 0 ] ),
boundingSphere.radius
);
}
return geometry;
}
......
......@@ -49,6 +49,7 @@ THREE.ObjectLoader.prototype = {
if ( json !== undefined ) {
var geometryLoader = new THREE.JSONLoader();
var geometry2Loader = new THREE.Geometry2Loader();
var bufferGeometryLoader = new THREE.BufferGeometryLoader();
for ( var i = 0, l = json.length; i < l; i ++ ) {
......@@ -160,6 +161,12 @@ THREE.ObjectLoader.prototype = {
break;
case 'Geometry2':
geometry = geometry2Loader.parse( data.data );
break;
case 'Geometry':
geometry = geometryLoader.parse( data.data ).geometry;
......
......@@ -46,7 +46,7 @@
"src/loaders/JSONLoader.js",
"src/loaders/LoadingManager.js",
"src/loaders/BufferGeometryLoader.js",
"src/loaders/GeometryLoader.js",
"src/loaders/Geometry2Loader.js",
"src/loaders/MaterialLoader.js",
"src/loaders/ObjectLoader.js",
"src/loaders/SceneLoader.js",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册