Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Added missing input semantic support in mesh vertices to the ColladaLoader, fixes issue 1731 #1767

Merged
merged 1 commit into from

2 participants

@AddictArts

Added support for mesh vertices input source (non indexed in geometric primitive) texture coordinates,TEXCOORD, and color.

@AddictArts AddictArts Added support for mesh vertices input source (non indexed in geometri…
…c primitive) texture coordinates,TEXCOORD, and color.
08824aa
@mrdoob
Owner

Thanks!

@mrdoob mrdoob merged commit 08824aa into mrdoob:dev
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Apr 18, 2012
  1. @AddictArts

    Added support for mesh vertices input source (non indexed in geometri…

    AddictArts authored
    …c primitive) texture coordinates,TEXCOORD, and color.
This page is out of date. Refresh to see the latest.
Showing with 57 additions and 8 deletions.
  1. +57 −8 examples/js/loaders/ColladaLoader.js
View
65 examples/js/loaders/ColladaLoader.js
@@ -2360,13 +2360,13 @@ THREE.ColladaLoader = function () {
for ( var pCount = 0; pCount < pList.length; ++pCount ) {
- var p = pList[pCount], i = 0;
+ var p = pList[ pCount ], i = 0;
while ( i < p.length ) {
var vs = [];
var ns = [];
- var ts = {};
+ var ts = null;
var cs = [];
if ( primitive.vcount ) {
@@ -2407,6 +2407,7 @@ THREE.ColladaLoader = function () {
case 'TEXCOORD':
+ ts = ts || { };
if ( ts[ input.set ] === undefined ) ts[ input.set ] = [];
// invert the V
ts[ input.set ].push( new THREE.UV( source.data[ idx32 ], 1.0 - source.data[ idx32 + 1 ] ) );
@@ -2420,6 +2421,7 @@ THREE.ColladaLoader = function () {
break;
default:
+
break;
}
@@ -2428,11 +2430,9 @@ THREE.ColladaLoader = function () {
}
-
- var face = null, faces = [], uv, uvArr;
-
if ( ns.length == 0 ) {
- // check the vertices source
+
+ // check the vertices inputs
input = this.vertices.input.NORMAL;
if ( input ) {
@@ -2446,13 +2446,62 @@ THREE.ColladaLoader = function () {
}
- }
- else {
+ } else {
+
geom.calcNormals = true;
+
+ }
+
+ }
+
+ if ( !ts ) {
+
+ ts = { };
+ // check the vertices inputs
+ input = this.vertices.input.TEXCOORD;
+
+ if ( input ) {
+
+ texture_sets.push( input.set );
+ source = sources[ input.source ];
+ numParams = source.accessor.params.length;
+
+ for ( var ndx = 0, len = vs.length; ndx < len; ndx++ ) {
+
+ idx32 = vs[ ndx ] * numParams;
+ if ( ts[ input.set ] === undefined ) ts[ input.set ] = [ ];
+ // invert the V
+ ts[ input.set ].push( new THREE.UV( source.data[ idx32 ], 1.0 - source.data[ idx32 + 1 ] ) );
+
+ }
+
}
}
+ if ( cs.length == 0 ) {
+
+ // check the vertices inputs
+ input = this.vertices.input.COLOR;
+
+ if ( input ) {
+
+ source = sources[ input.source ];
+ numParams = source.accessor.params.length;
+
+ for ( var ndx = 0, len = vs.length; ndx < len; ndx++ ) {
+
+ idx32 = vs[ ndx ] * numParams;
+ cs.push( new THREE.Color().setRGB( source.data[ idx32 ], source.data[ idx32 + 1 ], source.data[ idx32 + 2 ] ) );
+
+ }
+
+ }
+
+ }
+
+ var face = null, faces = [], uv, uvArr;
+
if ( vcount === 3 ) {
faces.push( new THREE.Face3( vs[0], vs[1], vs[2], ns, cs.length ? cs : new THREE.Color() ) );
Something went wrong with that request. Please try again.